在导航里输入一个不太常见的姓氏,播报出来的读音常常是另一个字。或者在客服电话里,你的名字被念成了一种陌生的腔调。这种时刻很短,但足够让人从“这是机器”的默认状态里回过神来。
语音合成做了这么多年,音色已经能做得相当接近真人。真正卡住人的,往往不是嗓音,而是那一个被念错的字。
一个字读错,背后是一串判断
从文字到声音,中间隔着一段常被忽略的活:把连续的字串切成词,判断多音字该读哪个音,把数字、日期、单位、缩写念成口语,处理没见过的生僻字和人名。这些工作在有的系统里靠规则和词典,在有的系统里交给模型。两种做法都会出错,出错的姿势不一样。
多音字难,不在于发音本身,而在于依据不足。“重”是 zhòng 还是 chóng,“行”是 xíng 还是 háng,单看这个字看不出来,得看上下文,有时还得看这是地名、姓氏还是普通词语。人名尤其麻烦:没有语料,没有惯例,字形还可能是生僻组合。
所以那句“念错了”,其实是前面的理解环节没跟上,只是最后由声音背了锅。
念对之后,还有一口气的距离
字音都对了,听感却仍可能不对。句子长到二十几个字,一口气读完不换气,人不会这样说话。停顿的位置、重音的落点、句尾是上扬还是收住,这些韵律上的选择,决定了听者觉得这是“有人在说”还是“有个东西在念”。
于是有了呼吸声、轻微的唇齿摩擦、句间的自然停顿。加得克制,听感会松弛下来;加得过多,反而像刻意表演。分寸不太好量化,也不太好写进规范。
端到端之后,问题换了位置
语音合成把文本直接映射成波形之后,减少了中间环节的误差累积,也把一部分控制权交了出去。发音是对的,但节奏未必随你调;情绪标签一挂上,可能一下子过头。
另一个变化是可解释性。流水线式结构出错时,能定位到分词、注音还是声码器;一体化之后,只能看到结果不对,说不清哪一步偏了。调试从“修一个模块”变成了“调一批样本”,成本转移了,并没有消失。
好听,不等于合适
同一套合成能力,放在不同场景里会有不同要求。客服播报需要清楚、稳定、不怕重复;有声书需要起伏和角色区分;设备提示音只需要短和干净。这些要求彼此并不一致,也很难用一套指标概括。
评测本身就是个难题。主观听感测试通常样本不大,听的人背景各异;客观指标与人耳感受之间,也很难说完全对得上。一个在测试集里表现平稳的系统,遇到真实的人名、地名、专业术语,仍可能露怯。
还有一些问题不归技术管
合成的声音越来越像人,随之而来的问题不只是像不像。一段合成语音被用在哪里、要不要标明来源、被模仿的人是否知情,这些取决于使用者的选择和规则的约定,技术本身给不出答案。
回到开头那个被念错的名字。让一个人名读对,是件很小的事,但它恰好检验了系统有没有真的在“读”这段文字,而不是在“念”这串字符。语音合成的进展,很多时候就藏在这种不起眼的细节里。