前一阵接到一通回访电话,对面声音客气,语速偏快,中间夹着一次很轻的吸气。挂了电话我才后知后觉地想:那口气,不一定是真的。
换气、句尾的轻微拖音、说到一半改口重来——这些原本被当成“瑕疵”的东西,如今在语音合成里被单独拎出来建模。也正因为它们,判断一段声音是真是假,变得越来越依赖语境而不是耳朵。
从“念对字”到“说像人”
早年的合成系统把注意力放在发音准确上,字与字之间的接缝、语调的平直,听两句就能察觉。后来的参数化方法让音色可以调整,但那种“播音腔”仍在。神经网络进入这一领域之后,声学模型和声码器一起被替换,模型不再逐字拼接,而是学习一整段语音的分布。语音合成因此从“把字念对”转向了另一个问题:一段话该怎么说,才像人在说。
这个转向听起来只是质量提升,实际改变的是工作对象。工程师不再只需要音素和词典,还要处理停顿落在哪里、重音往哪边偏、一句话说完气息怎么收。
真正难的是节奏
音色可以靠少量录音模仿,节奏却很难。难点大致有这么几处:
- 呼吸位置。人在长句里换气的位置并不固定,和情绪、状态都有关系,模型学到的往往是一个平均位置。
- 停顿长度。逗号后面停多久没有唯一答案,停顿太整齐反而暴露机械感。
- 语气词与口头禅。“嗯”“就是说”在书面语里是杂音,在对话里是润滑剂,要不要合成、合成多少,是个取舍。
- 口误与自我修正。真实说话常有说错再改,模型默认输出的是顺滑的理想版本,一旦要它“犯错”,控制难度明显上升。
这几项的共同点是:都依赖上下文,且没有标准答案。训练数据里这类片段本来就稀疏,模型容易学到平均值,而平均值听起来恰恰是不自然的。
自然的代价
合成语音变得难辨之后,问题很快从技术转到了约定层面。一段声音被用来做什么、是否经过本人同意、通话另一方有没有知情的机会,这些都不再由模型精度决定。语音合成的能力每往前一步,使用它的规则就越需要说清楚——比如在自动外呼里主动表明身份,在生成内容里留下可追溯的标记。
我自己的判断是,不必把“完全听不出来”当成唯一目标。更现实的方向是让听的人保留知情和退出的余地:知道对面可能是合成的,也能要求转人工。技术上去追那最后一口气息当然有意思,但它解决不了信任问题。
回到那通电话。我没法确认对面是真人还是模型,也没打算追究——只是之后听人说话时,会下意识地等一次换气。这个习惯大概会持续一阵子。