前阵子帮朋友听一段客服录音,想找出哪里不对劲。音色没问题,吐字清晰,语调也挑不出错,但听三十秒就走神。后来把音量调大才发现:整段话没有一次换气。它像一个人用一口气念完三百字,句子之间只有标点,没有肺。
这件事让我重新注意到语音合成里一个不太被讨论的环节——呼吸和停顿。它们不写在文本里,却决定了一段合成语音能不能被听下去。
文本里没有的东西,耳朵却在找
人说话不是按标点走的。一句话说到一半,可能因为想词而停半拍;情绪上来,气息会变浅;讲完一段要收尾,会先吸一口气再落字。这些细节在书面文本中完全缺席,但它们构成了“谁在说话”的线索。
早期的语音合成思路偏向把文字一对一映射成音素,再把音素拼接成声波。标点就是停顿指令,逗号短、句号长,规则清楚,结果也整齐。问题在于,整齐本身就是破绽。真实对话里的停顿长度差异很大,同一句话在不同情绪下换气位置也会挪动。听者未必说得清哪里怪,但会本能地觉得“这不是人在讲”。
所以现在的语音合成系统,大多要在文本之外再预测一层信息:哪里该停、停多久、停的时候有没有吸气声。这一步做得好,语音的可信度会明显不同;做得粗糙,音色再像也留不住人。
“像人”与“能听清”不是同一件事
有个容易混淆的点:清晰度和自然度是两条线。新闻播报式的语音合成追求的是每个字都听得明白,节奏稳定,适合长时间收听而不疲劳;而对话场景里,适度的含糊、抢话、气声反而更真实。两者取舍不同,没有通用的答案。
我倾向于把语音合成看作一种“场景适配”技术。做有声书,重点是长句的耐听和段落之间的呼吸感;做导航提示,越少情绪越好,停顿要短,不能让人等;做虚拟角色,则需要在句尾留出一点未说完的余地。同一个模型换个参数,听感就可能完全不同,这不是模型变强了,而是目标变了。
也因此,评价一段合成语音,很难脱离它要去的场景。拿朗读腔去评判客服语音,或者拿对话的松散去要求播报,都会得出偏颇的结论。
呼吸声是细节,也是成本
加入换气并不只是“多录一段呼吸音”那么简单。呼吸的位置要和语义对齐,长度要和语速匹配,音量要压得足够低,否则会变成明显的杂音。在合成流程里,这意味着额外的标注和额外的判断,工程上并不轻。
更麻烦的是,呼吸一旦加上去,其他细节也得跟上。停顿变自然了,听众就会更在意语调的起伏是否合理;语调合理了,又会注意到某些字的重音放得不对。语音合成给人的感受像一条链子,最弱的一环决定整体印象。这也是为什么一些听起来“差一点”的合成语音,缺的往往不是音色,而是节奏层面的协调。
它适合做什么,不适合做什么
我认为语音合成在信息传递类场景里已经相当可靠:把长文本转成可听内容、给视频配旁白、在设备上做即时提示,这些任务对情绪的要求低,对稳定的要求高,正好落在它的能力范围内。需要长时间陪伴、需要细微情绪变化的场景,目前仍要谨慎,尤其是涉及信任感的对话,一点点不自然都会被放大。
还有一个常被忽略的边界:合成语音的“自然”是统计意义上的自然,它倾向于给出常见说法,遇到罕见表达、方言夹杂或者私人化的语气,就容易退回标准腔。这不是缺陷,而是训练分布的结果。理解这一点,比追求“和人一模一样”更实际。
回到那段客服录音。如果当时它在中途吸一口气,我大概不会停下来琢磨它。语音合成的进步,很多时候就藏在这种让人不再注意的地方——听不出技术,才算用对了。