端到端 TTS 与两段式:现在主流是哪种

2026-08-24

两段式把合成拆成”文本 → 梅尔频谱 → 波形”,中间留一个显式的声学表示;端到端跳过这个显式中间表示,从文本直接产出波形。这不是新旧之分,而是”要不要在中间留一个可以看见、可以替换、也可以被干预的接口”。

这个问题很容易被写成”端到端全面胜出”。但只要你真的动手调过一次读音、改过一次语速,就会发现中间那层接口是有价值的。下面先把两条路各自解决什么问题说清楚,再谈怎么选。

一句话结论

  • 资源有限、想快速迭代音质 → 两段式。换一个声码器就能改善听感,不用重训整套系统。
  • 追求整体一致、且有条件端到端训练 → 端到端。它天然规避了两段之间的误差累积。
  • 需要精细干预读音、时长、停顿 → 两段式的中间表示给了你直接下手的地方,端到端更依赖训练时喂进去的控制信号。
  • 要做零样本音色克隆、用提示词控制风格 → 关注近年语音 token 化那一类做法,它的建模范式和上面两条都不太一样。

先把”两段”指的是哪两段

完整的合成链路通常是四步:文本 → 前端 → 声学模型 → 声码器 → 波形。前端做文本规范化、注音、韵律预测;声学模型把语言学特征映射成梅尔频谱;声码器再把频谱还原成时域波形。链路全貌见TTS 的三段流水线

所谓”两段式”,说的是后面那两段——声学模型 + 声码器,中间的接口就是梅尔频谱。

为什么当初要在这里切一刀?因为梅尔频谱是个信息量适中的表示:比文字丰富得多(带上了音高、时长、音色),又比原始波形紧凑得多(波形每秒上万个采样点,频谱每秒只有几十帧)。切在这里,两个子问题各自可解、可单独训练。这两个模块的分工细节,见声学模型和声码器分别在干什么

端到端解决的是什么问题

端到端的核心动机是消除两段之间的误差累积与分布不匹配

这个 mismatch 是两段式的经典问题,值得展开说:声码器训练的时候,喂给它的是真实录音提取出来的频谱;但真正推理的时候,它吃到的是声学模型预测出来的频谱。这两种频谱不是同一个分布——预测频谱往往更平滑、细节更少、还带着声学模型自己的偏差。于是声码器在一个它没见过的输入分布上工作,误差就这样一级级传下去。

工程上常见的缓解手段是让声码器在预测频谱上做微调,或者把两段联合训练一段时间。但这些都是补丁,端到端从结构上就不存在这个接缝

代价也很直接:接缝没了,可替换性也没了。 你不能只换半个模型。

两段式解决的是什么问题

两段式的优点全都来自那个显式接口:

模块可替换。 声码器不满意就换声码器,声学模型不动。这在实践中是个很实在的能力——同一个声学模型配不同的声码器,输出的音质可以差出一个档次,而你付出的只是换掉后半段的成本。

可分别优化。 两个模块可以用不同的数据、不同的目标函数、不同的节奏各自迭代。声码器甚至可以做成说话人无关的通用组件,多个音色共用。

训练资源要求更低。 两个小问题分别学,比一个大问题一次学到底要省。对多数团队来说这一条才是决定性的。

顺便说一句,声码器本身还分自回归、基于流 / GAN、扩散与流匹配几条路线,各有各的机制取舍——F5-TTShttps://github.com/SWivid/F5-TTS,MIT)就自述其语音合成基于 flow matching。这类选择直接影响首包延迟,详见流式 TTS 与首包延迟

两条路线的取舍表

维度两段式端到端
模块可替换性高。换声码器即可改音质,声学模型不动低。要改就得动整个模型
误差累积存在。训练见真实频谱、推理吃预测频谱,分布不匹配结构上不存在这个接缝
训练资源要求较低。两个子问题分别训练较高。需要一次性把整条链路训到底
可控性可在中间表示上直接干预(改频谱、改时长预测)更依赖训练时就设计好的控制信号
调试难度低。能定位到是声学模型的锅还是声码器的锅高。输出不对时较难拆开看是哪一环

表里最容易被低估的是调试难度那一行。合成结果发闷、带金属味,多半是声码器还原不足;韵律平、停顿乱,多半是前端和声学模型的事。两段式让你能分头验证——单独拿真实频谱喂声码器听一遍,就知道后半段有没有问题。端到端出问题时,你手上没有这样的中间探针。

可控性这条差别,值得单独说

两段式在中间表示上可以直接下手:想让语速慢一点,改推理时的时长预测比例(这比对波形做变速自然得多,后者会损伤音质或改变音高);想调停顿,在时长层面动手脚;想看某个字的发音对不对,能把频谱拿出来对照。

端到端没有这个入口,它的可控性来自训练时就喂进去的控制信号——训练时没设计的维度,推理时也变不出来。

判断标准挺实际的:你的场景需不需要逐字逐句地抠。 有声书、客服播报、多音字密集的专业内容往往需要;泛用的语音提示往往不需要。情感与语气这一维的控制方式,另见情感与语气怎么控制

还有第三种范式:把语音变成 token

近年出现的一类做法,跟上面两条路的坐标系都不太一样:先把语音离散化成 token,然后用语言模型的方式预测语音 token,最后再解码成波形。

这个思路的意义在于,它把语音生成变成了一个序列预测问题,于是语言模型那套东西——上下文条件、提示词——就可以自然地用上来。“零样本音色克隆”和”用提示词控制风格”在这个框架下变得顺理成章:参考音频和风格描述都可以作为条件塞进上下文里。克隆的机制细节见声音克隆是怎么做到的

这条路上有公开自述可查的项目,比如 CosyVoicehttps://github.com/QwenAudio/CosyVoice,Apache-2.0),自述为多语种大型语音生成模型,提供推理、训练、部署全栈能力;IndexTTShttps://github.com/index-tts/index-tts)自述为工业级、可控、高效的零样本 TTS 系统——它的许可证在 GitHub 上未被识别为标准标识,如果你要用在产品里,需自行查阅仓库 LICENSE 文件

这里只写机制,不做效果比较:能不能满足你的需求,还是得拿自己的文本和参考音频去听。

常见问题

问:所以现在主流到底是哪种?

这个问题没有一个跨场景通用的答案,本文也不打算给”哪种是未来”的结论。更有用的问法是:你手上有多少训练资源、需不需要在中间层做精细干预、能不能承受”改一点就要重训全部”的代价。三个问题答完,选择基本就定了。

问:端到端没有误差累积,是不是就一定音质更好?

不能这么推。消除接缝解决的是”分布不匹配”这一类问题,而合成质量还受前端断句、训练数据、生成范式等很多因素影响,两段式那个接缝本身也有成熟的缓解手段。把”少了一个已知缺陷”直接等同于”整体更好”,是典型的过度推断。

问:语音 token 化的做法算端到端还是两段式?

它不太适合套进这个二分。它确实有中间表示(语音 token),但这个表示是离散的、由模型自己学出来的,跟人工设计的梅尔频谱性质不同;你也很难像换声码器那样把它的解码器随便换掉。把它当作第三种范式来理解会更顺。

相关阅读


本文讲的是语音合成的通用建模原理,不绑定某一个具体实现。 文中提到的开源项目信息来自其公开仓库的自述内容,各家的能力边界与默认配置差异很大,请以官方文档为准。 我们没有对文中提到的任何方案做过实测,因此不给音质评分、速度一类的数字。

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