音素(phoneme)是能区分词义的最小语音单位;字素(grapheme)是书写系统里最小的区别性单位,大致就是一个字母或一个汉字。G2P(grapheme-to-phoneme,字素到音素)要做的,就是把写下来的文字,转换成“该念哪几个音”的序列。它是 TTS(语音合成)和 ASR(语音识别)中间那层不起眼、却最容易翻车的“发音说明书”。
打个比方
把语音想成乐谱,文字是歌词。G2P 就是那个看着歌词标音的人。TTS 拿到音素序列后,才知道嘴该怎么动;ASR 反过来,先听出音素,再靠这本说明书倒推回文字。这一前一后,靠的其实是同一份映射关系。
英文难在漏风,中文走了另一条路
英文是拼音文字,字母和读音大体对应,但规则到处漏风:ough 在 though、through、tough 里读音各不相同;read 的现在式和过去式同形不同音。所以英文的 G2P 常靠“双保险”:一部人工整理的发音词典查常用词,遇到新词、人名、品牌名,再用规则或模型去猜。
中文走的是另一条路。汉字本身基本不表音,但有一个现成的中间层——拼音。于是中文 G2P 常拆成两步:先给汉字定音,再把拼音拆成声母、韵母、声调对应的音素。难点集中在第一步的多音字:“行”“重”“长”“了”都随上下文变脸,分词和语义判断往往比发音规则本身更关键。第二步还有变调、儿化、轻声,属于语流层面的处理。
| 对比项 | 英文 | 中文 |
|---|---|---|
| 书写单位 | 字母 | 汉字 |
| 有无中间层 | 通常没有,直接字素到音素 | 有,先到拼音再拆音素 |
| 主要难点 | 拼写与读音不一致、未登录词 | 多音字、分词、变调儿化 |
| 常见做法 | 发音词典+模型兜底 | 拼音标注+上下文消歧 |
和相邻概念的区别
音素不等于音节,也不等于字母:一个音节可能由多个音素组成,一个字母也可能对应多个音素或零个音素。音素和音位变体也不是一回事——前者用来区分词义,后者是同一个音在不同语音环境下的实际差异。G2P 输出的,通常是前一种更抽象的表示。
对从业者和普通人意味着什么
做 TTS,前端 G2P 错了,后面的声学模型再强也救不回来,用户听到的就是念错的名字和读歪的专有名词;做 ASR,发音词典是声学信号和文字之间的桥,桥搭得糙,结果就在同音字上打转。对普通人来说,语音助手念错你的名字、导航把多音字读反,问题多半就出在这一层。各家产品支持哪些语种、遵循什么发音规范,以官方页面为准。
