让 AI 朗读一份公司简介,「长安」当地名还是当品牌,人名里的「单」读几声,模型一猜就容易翻车。中文的多音字数以百计,人名、品牌名、行业术语更是统计习惯覆盖不到的角落。发音词典就是兜住这些角落的工具:一张从字词到读音的对照表,查到谁,谁就按表读。这篇讲清模型为什么猜不准、词典在链路的哪一步生效、专有名词为什么非它不可,以及词典管不到的地方。
文字本身不含读音:猜音从哪来
汉字是表意文字,字形不直接告诉你读音,「行」在银行与行走里是两个音,模型只能靠上下文猜。猜的机制是统计:训练数据里「银」后面跟着「行」的搭配压倒性多,模型就学会在这种搭配里读 háng。常用词、常见搭配的准确率已经很高,日常文本够用;失手集中在三类地方——低频搭配里的常见字、人名地名这类任意组合、品牌与术语这类自造词。统计能学到「大概率怎么读」,学不到「这一家偏偏怎么读」,这正是查表能补的洞。
| 失手的地方 | 原文举的例子 | 统计为什么接不住 |
|---|---|---|
| 低频搭配里的常见字 | 「行」在银行与行走里是两个音 | 常用搭配准确率高,低频搭配的样本压不住概率 |
| 人名地名这类任意组合 | 人名里的「单」读几声 | 组合任意,训练数据里未必有同名同姓的搭配 |
| 品牌与术语这类自造词 | 「长安」当地名还是当品牌 | 自造词没有历史搭配,模型只能照常见读法给 |
词典怎么兜底:查表优先于猜
发音词典的工作位置在文本前端——文字送进合成器后的第一道处理工序,分词、正则化都在这里进行,整体流程见文本前端一篇。轮到确定读音时,处理顺序是先查词典、再靠模型:文本里的词在词典中有登记,读音直接锁定,模型不再参与;查不到的才交给模型按上下文猜。词典条目的内容是词与音素序列的对应——把一个词写成标准的注音串,而注音为什么要写到音素级,见音素一篇。查表优先的意义在于确定性:模型猜音有概率,词典条目没有,登记一条就准一条。
专有名词的主场:一次登记全局生效
词典最能发挥的地方是专有名词。企业做批量配音,产品名、部门简称、内部术语、合作方名字,每个都可能是模型的盲区,把它们的读法登记成一张表,一次配置、全量文稿生效,不必每篇单独标注。这与另一件工具互为补充:SSML 里的拼音标记可以在文稿里临时指定某个字的读音,适合一处两处的小修;词典管全局的固定读法,适合反复出现的名称,SSML 的用法见SSML一篇。长文稿尤其依赖词典:几万字的有声书里主角名字出现几百次,词典一次锁死,全篇读音不会时对时错,长文本的处理见长文本合成一篇。
词典的边界:查不到的仍要猜
词典并非万能保险。它的覆盖靠人维护,新的人名、新的品牌不断出现,没登记的照样走模型猜测的老路。条目写得过宽也会误伤——同一个字形在不同词里读音不同,把单字登进词典而不带词境,可能让不该改的读音也被锁死,所以词条通常以词为单位登记。还有一个容易混淆的分工:词典管「读什么音」,语调、停顿、重音仍由合成环节决定,两者别混为一谈。维护词典是个持续的小活:遇到读错的词顺手登记一条,表越养越准,配音返工就越少。动手试试很直观:让豆包把一段含多音字与专有名词的文稿先用默认读音合成一遍,列出读错的字,再让 DeepSeek 按规范格式把这些词写成词典条目,重新合成一遍,查表的效果一次就能听出来。
发音词典速查
- 本质:字词到读音的对照表,查到即锁定读音
- 位置:文本前端里确定读音的一步,查表优先于模型猜
- 主场:人名、品牌、术语等专有名词,一次登记全局生效
- 搭配:临时读音用 SSML 标记,固定读法进词典
- 边界:没登记的照猜,词条以词为单位免误伤
关于发音词典的三问三答
- 词典会越用越准吗?:会,但靠维护。模型自己不会往词典里学新词条,遇到读错的词登记进去,下次就准;放任不管,同一批词会反复错。
- 英文与中英混排需要词典吗?:需要。缩写、品牌英文名、人名的英文读法同样有约定俗成与任意性,混排文稿里中英两边的读音问题都值得登记。
- 登记了词典为什么还读错?:先查三处:词条格式是否符合该工具的规范、登记的是字还是词、文本里的写法与词条是否完全一致——繁简、全半角、空格差异都会让查表落空。


