合成语音听起来像机器的五个具体原因

2026-08-24

“这个声音听着像机器”是一句几乎无法执行的反馈。 它可能指语调平、可能指断句怪、也可能指音色发闷——这三件事出在语音合成流水线的不同位置,修的方法完全不同。

这篇把这句抱怨拆成五个可定位的具体问题。拆完之后,你再听到一段不满意的合成语音,能说出的就不是”不自然”,而是”停顿错了”或者”高频没还原出来”。

先立坐标系。语音合成的主流结构是三段:文本 → 前端 → 声学模型 → 声码器 → 波形。前端做文本规范化、注音和韵律预测;声学模型把语言学特征映射成梅尔频谱这类中间表示;声码器把频谱还原成波形。完整拆解见语音合成是怎么工作的:从文本到波形的三段流水线。下面五个原因,每一个都对应其中某一段。

原因一:韵律平,每句话都是同一个调子

现象:听三句没问题,听三十句就发现所有句子的起伏轨迹一样——开头稍高、结尾降下来,中间没有重音落点。

真人说话的重音是随语义走的。“我明天去北京”这句,强调”我”、强调”明天”、强调”北京”是三种不同的意思。合成语音如果每个字的能量和音高都差不多,信息的层次就被抹平了,听感上像在念,不像在说。

出在哪:前端的韵律预测和声学模型两处。前端负责预测重音落在哪里,声学模型负责把标注真正变成音高与时长的变化。前端标错了,声学模型再好也演不出来;前端标对了,声学模型表现力不够,起伏一样会被压平。

怎么改善:如果系统提供文本级标记能力,就显式标出重音位置;不提供的话,把长句拆短、要强调的词单独成句,往往比反复换模型有效。

原因二:该停的地方不停,不该停的地方乱停

现象:一长串定语一口气读完,中间不换气;或者在一个词的中间莫名其妙断开。

断句错误比读错单个字更伤可懂度。“下雨天留客天留我不留”是个老例子——同一串字,断句不同,意思相反。听众靠停顿切分句子成分,停错了理解成本立刻上升。

出在哪:前端的断句与韵律预测。这一段要判断哪里是短语边界、哪里该插呼吸停顿,依据是句法和语义,不是字数。

怎么改善:主动加标点是最直接的手段。逗号、分号本来就是给断句用的信号,写文案时舍不得加,后果就得自己承担。前端还有多音字、数字读法等一堆坑,见TTS 前端在做什么:文本规范化、注音与韵律预测

原因三:音色发闷,或者带一层金属味

现象:内容和语调都对,声音却”隔了一层”,齿音和气声模糊;有时反过来,带一种不属于人声的电子质感。

出在哪:声码器。它的任务是从梅尔频谱恢复时域波形,而这是个欠定问题——频谱丢掉了相位信息。早期用 Griffin-Lim 迭代估计相位,估不准就留下明显的金属感。神经声码器改为直接学习频谱到波形的映射,音质大幅改善,但只要还原不到位,高频损失和质感异常依然是这一段的典型症状。

怎么改善:这一段能动的余地最小,主要是选实现和输出配置。另外采样率不是越高越好,目标信道是 8 kHz 电话时,合成 48 kHz 再降采样是白费算力。两段的分工见声学模型和声码器各自在干什么

原因四:太干净了——一点杂音都没有

这一条最反直觉:问题不是有杂质,而是完全没有杂质。

真人说话时有换气声、有轻微的迟疑、有说到一半的改口。这些在文本里根本不存在,却是”有个人在现场说话”的重要证据。全部抹掉之后,剩下一条过于平整的声音轨迹——每个字都清晰、每次转折都干净、连续几分钟不喘气。

人耳对这种”完美”敏感。它不符合任何一次真实的说话经验,于是被归类为非人。“太干净”本身就是一种不自然,把它当音质指标去追求,方向就反了。

出在哪:声学模型的建模范围,以及训练数据是否保留了这些现象。很多语料在制作时会把换气声和口误当噪声清掉,模型自然学不到。

原因五:语气和内容打架

现象:用标准播报腔读一句道歉,或者用同一种轻快语气念完一段事故通报。字都对,气氛全错。

这不是音质问题,是语义与韵律不匹配。听众会同时接收内容和语气两路信息,两路冲突时,怀疑感就出现了。

出在哪:声学模型的风格控制环节,以及上游有没有把”该用什么语气”传下来。纯文本输入不含情感标注,模型只能按训练数据的平均风格读。

怎么改善:用系统提供的情感控制能力显式指定。控制方式大致有标签式、参考音频式、自然语言提示式三类,各有取舍——注意可控性和自然度常常此消彼长,控制信号给得越硬,语音越容易发僵。细节见TTS 的情感与语气控制

恐怖谷:越接近真人,剩下的不像越刺耳

还有个反直觉的现象:合成质量提升之后,抱怨不一定减少。

当声音明显是机器时,听众会自动降低期待,小毛病不构成问题。当声音已经足够接近真人,框架切换成”这是个人”,任何一处不匹配都会被放大——一个不该有的停顿、一次不换气的长句,都会突然变得刺耳。

于是优化到后期,收益不来自继续提升平均质量,而来自消除低频出现的异常点。平均分再高,每分钟出一次破绽,整体印象依然是假的。

为什么听一句觉得挺好,听一段就出戏

选型时最常踩的坑:试听几句很好,接上真实长文本就露馅。

原因有两个。一是韵律单调只在长度上暴露——单句听不出”每句都一个调子”,因为只有一句。二是长文本要切分合成,跨片段会漂移:音色可能变、语速可能不一致、拼接处可能有爆音,段落停顿还需要在拼接时显式插入静音,而不是指望模型自己留。

所以评测要用贴近实际长度的语料。主观评分本身的坑更多,见MOS 是怎么打出来的

症状定位表

把上面五条压缩成一张对照表,从听感直接查到流水线环节:

你听到的症状大概率出在具体环节
每句都一个调子,没有重音落点前端 + 声学模型韵律预测标注,以及音高时长的建模表现力
断句怪,该停不停或词中间断开前端断句与停顿位置预测
声音发闷、高频细节缺失声码器频谱到波形的还原不足
有金属味、电子质感声码器相位估计不准
太干净、不换气、毫无迟疑声学模型(含训练数据)非语言现象未被建模或被清洗掉
语气和内容对不上声学模型的风格控制情感信息没传下来或控制不生效
长文本中途音色变了工程层长文本切分与片段拼接

表的用法:先定位环节,再决定要不要换实现。很多被归因为”模型不行”的问题,改改文本标点就解决了。

常见问题

问:这五个原因里,哪个最值得先修?

按投入产出比通常是停顿和韵律——它们出在前端,而前端是使用者唯一能通过改文本直接影响的一段,加标点、拆长句、标注读音成本极低。音色类问题可调空间小得多。

问:加入换气声和迟疑,不会显得不专业吗?

要看场景。新闻播报、导航提示这类场景,听众本来就接受”这是播报”的框架,过度拟真反而奇怪;有声书、虚拟角色对话这类需要沉浸感的场景,非语言现象缺失会直接削弱可信度。标准不是”越像人越好”,而是这个场景下听众期待什么。

问:为什么实时对话里的合成语音格外容易显得机械?

实时场景要压首包延迟,很多改善自然度的手段——看到完整上下文再定韵律、用更慢但更细腻的生成方式——都会被延迟预算挤掉。这是取舍,不是能力不足。详见流式 TTS 与首包延迟

相关阅读


本文讲的是语音合成领域的通用原理,不绑定某一个具体实现。 各家系统的流水线划分、可控参数与能力边界差异很大,请以你所用系统的官方文档为准。 我们未做过听感实测,因此不给评分、速度一类的数字。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。