本文解读 CMU "Subword Modeling" (Spring 2026) 第14讲:Descriptive Phonetics。
这节课从「文字不等于语言」出发,介绍了语音学的核心框架:如何用发音部位、发音方式、浊音性等维度系统地描述人类语言中的所有语音,以及 phone 和 phoneme 的关键区别。最终落脚到 G2P(字素到音素转换):为什么把文字层面的输入转到语音层面的表示,对多语言 NLP 很重要。
1. 文字不等于语言
在开始之前,先澄清一个很多人都会搞混的事情:文字系统(orthography)和语言本身是两码事。
你一定听过有人说「中文是最古老的语言」或者「泰米尔语是南印度最古老的语言」。其实不对------所有语言都一样古老(都是人类祖先一路传下来的),只是有些语言的书写传统比较早而已。把「有文字记录」等同于「语言的年龄」,就好比说「有身份证的人比没身份证的人年纪大」一样荒谬。
搞清楚这个区别之后,就能理解这堂课的出发点了:同一个语音,在不同语言的文字系统里写法完全不同。
比如英语 shoe 里的那个 /ʃ/ 音:
| 语言 | 写法 |
|---|---|
| 英语 | ⟨sh⟩(有时候还有 ⟨ti⟩、⟨si⟩) |
| 德语 | ⟨sch⟩ |
| 法语 | ⟨ch⟩ |
| 苗语 | ⟨s⟩ |
| 葡萄牙语 | ⟨x⟩ 或 ⟨z⟩ |
同一个音,五种写法------而且这些语言用的还都是拉丁字母。如果再加上阿拉伯文、天城文、汉字这些不同的 script,情况只会更复杂。
所以问题来了:如果我们想系统地研究语音、研究文字系统跟语音之间的关系,我们需要一套不依赖于任何特定语言的、统一的标音方案。
这就是 IPA(国际音标)存在的意义。
2. Phoneme 和 Phone:功能相同 ≠ 物理相同
IPA 能区分非常细微的语音差异,但这就引出一个关键问题:区分到什么粒度才算合理?
2.1 一个让英语母语者意外的事实
英语里 "pit" 的 p 和 "spit" 的 p,物理上是不同的音。用 IPA 来写的话:
- "pit" → [pʰ](送气)
- "spit" → [p](不送气)
可以做个实验:把手放在嘴前面,说 "pit",你会感到一股气流;说 "spit",那股气流明显弱很多。物理上确实不一样。
但对英语母语者来说,这两个音「听起来一样」。为什么?因为在英语里,这两个音永远不会出现在同一个位置上互相竞争 ------[pʰ] 只出现在词头和重读音节开头,[p] 只出现在 s 后面。它们的分布(distribution)是互补的,换一个用另一个不会改变词义。
但到了普通话里,情况完全不同。普通话的 "波"(bō)是 [p],"坡"(pō)是 [pʰ]------这两个音在同一个位置上对立,区分不同的词。
2.2 Phone、Phoneme、Allophone
这就引出三个核心概念:
- Phone(语音):物理层面上实际发出的声音。[p] 和 [pʰ] 是两个不同的 phone。
- Phoneme(音位):功能层面上的抽象单位。在英语里,[p] 和 [pʰ] 属于同一个 phoneme /p/。
- Allophone(音位变体):属于同一个 phoneme 的不同 phone。[p] 和 [pʰ] 是 /p/ 的 allophone。
用一个 NLP 的类比来理解:phonemicization(音位化)本质上是一种信息压缩。 它把可预测的、冗余的变化因素给 factor out,只保留具有区分意义的对比信息(contrastive information)。
这跟做 NLP 时候的 normalization 思路其实一样------把大小写统一、把同义词映射到同一个 token,都是在做类似的压缩。只不过语音学家做的是在声学信号层面的压缩。
Mortensen 还特别提到一个有趣的事实:连语音科学的研究者有时候都会搞混 phone 和 phoneme------Interspeech 2024 的投稿指南里专门提醒作者「请正确使用 phoneme 和 phone 这两个术语」。
3. 描述一个辅音:Place × Manner × Voicing
搞清楚了 phone 和 phoneme 的区别之后,接下来的问题是:怎么系统地描述世界上所有可能的语音?
IPA 的做法是把每个辅音看成几个维度的交叉。
3.1 发音部位(Place of Articulation)
每个辅音都有一个「发音部位」------发音时声道中最窄的地方在哪。
想像把一个人的头从正中间劈开(语音学家管这叫 mid-sagittal section),你会看到从声门到嘴唇之间一系列的解剖结构。不同的音就是在这条通道的不同位置制造阻碍:
-
p\]:双唇闭合 → **双唇音(bilabial)**
-
k\]:舌背靠近软腭 → **软腭音(velar)**
3.2 发音方式(Manner of Articulation)
同一个部位可以用不同的方式制造声音。/t/ 和 /s/ 的发音部位相同(都是齿龈),但方式不同:
- 塞音(plosive/stop):完全堵住气流再释放,比如 [p] [t] [k]
- 鼻音(nasal):口腔堵住但软腭打开,气流从鼻腔出去,比如 [m] [n] [ŋ]
- 颤音(trill):松弛闭合让气流引起振动,比如西班牙语的大舌颤音 [r]
- 闪音(tap/flap):瞬间的一下接触,比如美式英语 water 里的 [ɾ]
- 擦音(fricative):气流通过狭窄缝隙产生湍流,比如 [s] [f] [ʃ]
- 近音(approximant):较松的接近,比如 [w] [j] [ɹ]
- 边音(lateral):气流从舌头两侧通过,比如 [l]
3.3 气流机制(Airstream Mechanism)
绝大多数语音用的都是肺部呼气(pulmonic egressive)------肺把气往外推。但世界上还存在其他机制:
- 搭嘴音(click):用舌头和软腭之间制造真空再释放,只出现在南非的一些语言(如 Xhosa)和墨西哥的一种 Nahuatl 方言里。
- 挤喉音(ejective):声门关闭后喉头上升挤出空气。
- 内爆音(implosive):声门关闭后喉头下降制造负压,比如越南语的 đ。
3.4 浊音和清音(Voicing)
发 [s] 的时候,声带不振动(清音/voiceless);发 [z] 的时候,声带在振动(浊音/voiced)。把手指放在喉咙上交替发这两个音,能明显感受到区别。
但现实比「清 vs 浊」的二分法更复杂。Mortensen 引入了一个关键概念:VOT(Voice Onset Time,嗓音起始时间)。
-
d\]:声带从头到尾都在振动 → 负 VOT
-
tʰ\]:声带在释放很久之后才开始振动 → 正 VOT
4. 元音:高低、前后、圆唇
元音的描述方式跟辅音不同,用的是三个维度:
- 高度(height):舌头离口腔顶部的距离。说 "beet" 时舌头位置高,说 "bat" 时低。
- 前后(backness):舌头的最高点偏前还是偏后。"beet" 偏前,"boot" 偏后。
- 圆唇(rounding):嘴唇是否圆起来。"boot" 有圆唇,"beet" 没有。
这三个维度构成了一个三维空间,IPA 的元音图就是这个空间的二维投影(高度 × 前后),圆唇作为附加标记。
可以做个实验来感受:先发 "beet" 的元音 [i],然后不停嘴,慢慢滑到 "boot" 的元音 [u]。你能感到舌头在往后移,同时嘴唇在慢慢收圆。这就是你在这个三维空间里移动了一下。
5. 把所有维度做交叉积:IPA 辅音表
把 place × manner × voicing × airstream mechanism 做交叉积(cross product),去掉那些在自然语言中从未出现过的组合,就得到了完整的 IPA 辅音表。
这张表本质上就是一个高维特征空间的表格化呈现:每一行是一种 manner,每一列是一种 place,每个格子里有清/浊两个选项。每个辅音就是这个高维空间中的一个点。
这个思路其实跟做 NLP 特征工程的逻辑一样------用一组离散特征的交叉来定义一个空间,然后把每个数据点(这里是每个辅音)放进去。区别在于 IPA 的特征是语音学家手动定义的,而 embedding 的特征是模型自己学出来的。
6. 跟 NLP 的连接:G2P
这堂课配套的 Mini-Project 3 是做一个 G2P(Grapheme-to-Phoneme)系统------把文字转成语音表示。
为什么这很重要?因为:
文字是 NLP 模型实际看到的输入,但语音才是语言的本质。
文字系统充满了不规则性和歧义性。英语是出了名的拼写混乱:同一个字母在不同词里发不同的音,同一个音在不同词里用不同字母写。阿拉伯语和乌尔都语更极端------短元音在书写中根本不标出来,读者要靠上下文自己脑补。
如果 NLP 模型只看到文字层面的 token,它就被困在了文字系统的混乱里。而 G2P 可以把输入转换到一个更干净、更系统化的表示空间------语音空间。在这个空间里,语言的规律性更容易被发现。
Mortensen 还提到了一个很有意思的方向:为乌尔都语(Urdu)建 G2P。乌尔都语用波斯-阿拉伯文写,短元音不标注,所以从文字到语音是一个有歧义的解码问题。一种思路是用印地语(Hindi)的发音词典来训练一个语音层面的语言模型,因为乌尔都语和印地语其实是同一种语言(Hindustani)的两种变体,只是文字系统不同。然后用这个语言模型来对乌尔都语的 noisy 输出做解码。
这种跨文字系统但同语言的知识迁移,本质上就是在利用语音表示的跨正字法不变性。
7. 总结
| 概念 | 核心思想 | 跟 NLP 的关系 |
|---|---|---|
| Orthography ≠ Language | 文字只是语言的一种编码方式 | tokenizer 切的是文字,不是语言本身 |
| Phone vs Phoneme | 物理声音 vs 功能单位 | phonemicization ≈ 信息压缩 / normalization |
| Place × Manner × Voicing | 用几个离散维度的交叉积定义语音空间 | 类似于特征工程或 discrete embedding |
| VOT 是连续谱 | 清浊不是二元开关,而是连续值 | 语音模型需要学连续特征而非离散标签 |
| G2P | 从文字表示转到语音表示 | 把输入转到更干净的表示空间,有助于下游任务 |
这堂课的核心 takeaway:
文字系统是语言的一件外衣,而且不同语言穿的衣服款式完全不同。如果只盯着衣服看(tokenizer 切文字),很容易被表面差异误导。脱掉这层衣服,看底下的语音结构,很多跨语言的规律就会浮出来。
IPA 就是一套帮你「脱衣服」的工具,而 G2P 就是自动化这个过程的技术。对于做多语言 NLP 的人来说,理解这一层表示------文字和语音之间的映射------可能比你想象的更有价值。