mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7
2385 字
7 分钟
[TTS] FastSpeech:一口气出频谱
2026-07-07

FastSpeech 系列论文解读:不一个字一个字念了,一口气吐出整段频谱(快 270 倍)#

论文:FastSpeech: Fast, Robust and Controllable Text to Speech(arXiv<1905>.09263,2019.05) FastSpeech 2: Fast and High-Quality End-to-End Text to Speech(arXiv<2006>.04558,2020.06) 作者/机构:微软亚洲研究院(Yi Ren、Xu Tan、Tao Qin、Tie-Yan Liu 等)

Tacotron 2 把 TTS 音质推到了接近真人,但它的解码器是自回归的——一个词一个字地蹦,遇到长句容易丢字、重复,而且推理慢。2019 年微软的 FastSpeech 干了件在当时有点”反直觉”的事:解码不再一个帧一个帧地看前面,而是整段频谱一次前向全部生成。它把 mel 谱生成提速 ~270×(端到端含声码器约 38×),顺带把”跳词、重复”这类自回归通病基本消灭。代价是先得训练一个 teacher 模型来提供时长对齐。一年后 FastSpeech 2 把老师踢开,直接训练、训练快 、音质反超。这一系列把”非自回归并行合成”定成了 TTS 的新范式,从此”快”和”稳”成为默认要求。


一、动机:自回归 TTS 的三大病#

FastSpeech 的摘要写得很直白,自回归端到端 TTS 有三大毛病:

  1. :逐帧生成,mel 谱必须一帧依赖一帧;
  2. 不稳:长句里会跳词、重复词(Tacotron 2 也逃不掉);
  3. 不可控:想调语速、韵律?模型没给你这个把手。

解法方向也很清晰:非自回归(non-autoregressive)——所有输出帧并行预测。但并行化有一个绕不开的坎:文本的长度和频谱的长度不一样(“今天天气不错”7 个字,频谱可能有 700 帧),你必须知道”每个字该说多久”,才能把文本”摊开”到频谱的长度上。这就是整个 FastSpeech 系列的核心工程。

二、FastSpeech(2019.05):并行合成,但需要一个”老师”#

1. 三个模块#

FastSpeech 基于 Transformer,去掉自回归解码,改成三段式:

  • Feed-Forward Transformer(FFT,前馈 Transformer):编码器和解码器都用 FFT 块,去掉了 decoder 的逐帧自回归;
  • Length Regulator(时长调节器):核心部件。它拿着每个音素的时长,把音素序列”复制扩充”成和目标频谱等长的序列——这就是并行化的关键:只要有每个音素的时长,文本就能一次展开成全谱;
  • Duration Predictor(时长预测器):推理时预测每个音素的时长,喂给 Length Regulator。

2. “270× 加速”到底指什么#

论文的 ~270× 特指 mel 谱生成部分相对自回归 Transformer TTS 的加速;把 WaveNet 声码器一起算进去,端到端约 38×。这两个数字经常被混用,读论文要分清口径。代价也如实标出:时长对齐需要从**教师模型(teacher model)**的注意力中提取——也就是先训练一个自回归模型(比如 Transformer TTS),把它的对齐信息蒸馏出来。这是 FastSpeech 1 最大的工程负担。

3. 副产品:鲁棒性和可控性#

  • 并行、无累积误差,跳词/重复基本消失
  • 因为显式建模了时长,语速可以平滑调节——调时长预测器输出即可,这是自回归模型做不到的。

LJSpeech 上音质与自回归模型相当(MOS 相当,论文表述为 matches autoregressive models),但速度天差地别。第一代非自回归 TTS 就这么立住了。

三、FastSpeech 2(2020.06):把老师踢开,还顺手加了”表情”#

FastSpeech 1 有个隐患:teacher-student 蒸馏管线又复杂又耗时,而且老师蒸馏出来的”简化版频谱”丢了信息,音质上不去。FastSpeech 2 对症下药:

1. 免蒸馏:直接用真实目标训练#

不再用老师蒸馏的输出,而是直接用 ground-truth(真实标注)频谱做训练目标——蒸馏只是权宜之计,真正的问题是 TTS 里著名的一对多映射(one-to-many mapping):同一句话可以说成无数种样子,模型不知道该学哪种。FastSpeech 1 用蒸馏”作弊”简化了分布,FastSpeech 2 换了个更诚实的做法——

2. 显式建模三种变化信息#

把说话时的”变化源”直接变成条件输入:

  • duration(时长):每个音素实际说多长;
  • pitch(音高):语调起伏,比如 F0(基频)轨迹;
  • energy(能量):响度变化。

训练时从波形里提取这些真值喂进去,推理时用对应的预测器输出。模型不再需要猜”这句话该怎么说”,只需要把”给定的时长/音高/能量”渲染成语音——一对多映射被摊平了。

3. 成绩与遗留#

  • 训练比 FastSpeech 快 (免去蒸馏步骤);
  • 音质超过 FastSpeech 1,论文称 甚至能超过自回归模型
  • 附带提出 FastSpeech 2s:第一个文本直接到波形的并行模型(音质略逊,但验证了”完全端到端并行”可行)。

FastSpeech 2 也确立了非自回归的”标准配置”——并行骨架 + 显式时长 + 音高/能量条件,后来大量系统(包括 VITS 的时长预测器、ESPnet 等开源实现)都沿用了这套设计。

收尾:我的一点看法#

FastSpeech 系列给我的最大启示是:“快”和”稳”不是免费的,它们靠”显式化”买单。自回归模型把时序的复杂性藏进循环里,非自回归则必须显式问自己:“每个字该说多久?“——于是时长建模成了新问题,而这个问题恰好带来了副产品:语速可控。很多时候,把一个隐式问题变成显式问题,就会顺手得到可解释、可控制的能力。

对 FastSpeech 1,我的评价是”工程决策很聪明但架构有隐患”:用蒸馏绕开一对多映射,短期有效,长期是死路——信息在蒸馏里丢了,音质上不去。FastSpeech 2 抓住这个病根,用”条件输入”正面解决,这一步非常关键,直接让非自回归从”能并行的玩具”变成”能上线的系统”。

批评点也有。一是 FastSpeech 2 的时长/音高/能量预测器是额外负担,预测不准会影响韵律自然度(后来的工作要么用更好的时长模型,要么干脆换 diffusion 路线);二是它依然依赖 mel 谱 + 声码器的两段式,不是真正端到端;三是论文音质评测用的是”与自回归相当/超过”,但没有达到 Tacotron 2 那种逼平真人的水平——非自回归在自然度上的短板,要到 VITS、NaturalSpeech 时代才真正补齐。可以说,FastSpeech 解决了”速度与稳定性”,把”自然度天花板”的问题留给了后人。


附:核心数据速查#

基本盘

项目数值
FastSpeech首个非自回归并行 TTS,Feed-Forward Transformer + Length Regulator
FastSpeech 加速mel 谱生成 ~270×;端到端约 38×(含声码器)
FastSpeech 2免蒸馏直接训练,显式建模 duration/pitch/energy
FastSpeech 2 训练加速训练快 3×(相对 FastSpeech 1)
机构微软亚洲研究院

核心创新

创新要点
Length Regulator按时长把音素序列扩到频谱长度,实现并行生成
Duration Predictor推理时预测每个音素时长(语速可控)
教师蒸馏对齐FastSpeech 1 从自回归教师提取时长对齐
显式变化建模FastSpeech 2 用 ground-truth 的时长/音高/能量做条件,摊平一对多映射
FastSpeech 2s第一个文本直接到波形的并行模型

关键成绩

  • mel 谱生成 ~270× 加速、端到端 ~38×(口径不同,勿混用)
  • 跳词/重复基本消除,语速可平滑调节
  • FastSpeech 2:训练快 、音质超过 FastSpeech 1、可超过自回归模型

关键概念清单

  • non-autoregressive = 非自回归(输出并行生成)
  • mel-spectrogram = 梅尔频谱
  • Length Regulator = 时长调节器(对齐文本与频谱长度)
  • teacher-student distillation = 师生蒸馏
  • one-to-many mapping = 一对多映射(同一文本多种合理读音)
  • ground-truth = 真实标注/真值
  • duration / pitch / energy = 时长 / 音高(F0 基频)/ 能量(响度)
  • F0 = fundamental frequency,基频
  • FFT = Feed-Forward Transformer,前馈 Transformer(此处非傅里叶变换)
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

[TTS] FastSpeech:一口气出频谱
https://mizuki-eaf.pages.dev/posts/音频生成模型/tts-fastspeech一口气出频谱/
作者
无名之子
发布于
2026-07-07
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录