前置知识: AI工程

文本转语音

00:00
11 min Intermediate

从Tacotron到F5和Kokoro,理解现代TTS的三段式架构

文本转语音 (TTS) — 从Tacotron到F5和Kokoro

ASR将语音反转成文本;TTS将文本反转为语音。2026年技术栈分三部分:文本→token,token→mel,mel→波形。每部分都有一个适合笔记本的默认模型。

类型: 构建 语言: Python 前置条件: Phase 6 · 02(频谱图与Mel),Phase 5 · 09(Seq2Seq),Phase 7 · 05(完整Transformer) 时间: ~75 分钟

问题

你有一个字符串:“Please remind me to water the plants at 6 pm.” 你需要一段3秒的音频,听起来自然,韵律正确(停顿、重音),“plants”的元音发音正确,并且在CPU上300 ms内完成以用于实时语音助手。你还需要切换声音,处理语码混合输入(“remind me at 6 pm, daijoubu?”),不要在人名上出丑。

现代TTS流水线如下:

  1. 文本前端。 归一化文本(日期、数字、邮箱),转换为音素或子词token,预测韵律特征。
  2. 声学模型。 文本 → mel频谱图。Tacotron 2 (2017)、FastSpeech 2 (2020)、VITS (2021)、F5-TTS (2024)、Kokoro (2024)。
  3. 声码器。 Mel → 波形。WaveNet (2016)、WaveRNN、HiFi-GAN (2020)、BigVGAN (2022)、2024+的神经编解码声码器。

2026年,声学模型+声码器的分割在端到端扩散和流匹配模型中变得模糊。但三部分的心智模型对调试仍然有效。

概念

Tacotron 2 (2017)。 Seq2seq:字符嵌入 → BiLSTM编码器 → 位置敏感注意力 → 自回归LSTM解码器输出mel帧。慢(AR),长文本不稳定。仍被引用为基线。

FastSpeech 2 (2020)。 非自回归。时长预测器输出每个音素对应多少mel帧。单次前向,比Tacotron快10倍。损失一些自然度(单调对齐)但到处在用。

VITS (2021)。 联合训练编码器 + 基流的时长 + HiFi-GAN声码器端到端,使用变分推断。高质量,单模型。2022-2024主导开源TTS。变体:YourTTS(多说话人零样本)、XTTS v2 (2024, Coqui)。

F5-TTS (2024)。 基于流匹配的扩散Transformer。自然韵律,5秒参考音频即可零样本语音克隆。2026年开源TTS排行榜榜首。335M参数。

Kokoro (2024)。 小型(82M),CPU可运行,最佳英语TTS实时性能。封闭词表仅英语,Apache-2.0。

OpenAI TTS-1-HD、ElevenLabs v2.5、Google Chirp-3。 商业SOTA。ElevenLabs v2.5的情感标签(“[whispered]”、“[laughing]“)和角色声音主导2026年有声书制作。

声码器演进

时代声码器延迟质量
2016WaveNet仅离线发布时SOTA
2018WaveRNN~实时良好
2020HiFi-GAN100倍实时接近人类
2022BigVGAN50倍实时跨说话人/语言泛化
2024SNAC, DAC (神经编解码)与AR模型集成离散token,比特高效

到2026年,大多数”TTS”模型是从文本到波形的端到端模型;mel频谱图是内部表示。

评估

  • MOS(平均意见分)。 1-5分,众包。仍是黄金标准;但速度慢得痛苦。
  • CMOS(比较MOS)。 A-vs-B偏好。每个标注的置信区间更窄。
  • UTMOS、DNSMOS。 无参考神经MOS预测器。用于排行榜。
  • CER(字符错误率)通过ASR。 将TTS输出通过Whisper,对输入文本计算CER。可懂度的代理指标。
  • SECS(说话人嵌入余弦相似度)。 语音克隆质量。

2026年LibriTTS test-clean数字:

模型UTMOSCER (via Whisper)大小
真实语音4.081.2%
F5-TTS3.952.1%335M
XTTS v23.813.5%470M
VITS3.623.1%25M
Kokoro v0.193.871.8%82M
Parler-TTS Large3.762.8%2.3B

构建它

步骤 1:音素化输入

from phonemizer import phonemize
ph = phonemize("Hello world", language="en-us", backend="espeak")
# 'həloʊ wɜːld'

音素是通用桥梁。避免将原始文本输入VITS级别以下的任何模型。

步骤 2:运行Kokoro(2026年CPU默认)

from kokoro import KPipeline
tts = KPipeline(lang_code="a")  # "a" = 美式英语
audio, sr = tts("Please remind me to water the plants at 6 pm.", voice="af_bella")
# audio: float32张量, sr=24000

离线运行,单文件,82M参数。

步骤 3:使用F5-TTS进行语音克隆

from f5_tts.api import F5TTS
tts = F5TTS()
wav = tts.infer(
    ref_file="my_voice_5s.wav",
    ref_text="The quick brown fox jumps over the lazy dog.",
    gen_text="Please remind me to water the plants.",
)

传入5秒参考片段 + 其转录;F5克隆韵律和音色。

步骤 4:从零构建HiFi-GAN声码器

太大无法放入教程脚本,但形状如下:

class HiFiGAN(nn.Module):
    def __init__(self, mel_channels=80, upsample_rates=[8, 8, 2, 2]):
        super().__init__()
        # 4个上采样块,总共256倍从mel速率到音频速率
        ...
    def forward(self, mel):
        return self.blocks(mel)  # -> 波形

训练:对抗性(短窗口上的判别器)+ mel频谱图重建损失 + 特征匹配损失。已商品化 — 使用 hifi-gan 仓库或nvidia-NeMo的预训练检查点。

步骤 5:完整流水线(伪代码)

text = "Please remind me at 6 pm."
phones = phonemize(text)
mel = acoustic_model(phones, speaker=alice)      # [T, 80]
wav = vocoder(mel)                                # [T * 256]
soundfile.write("out.wav", wav, 24000)

使用它

2026年技术栈:

场景选择
实时英语语音助手Kokoro (CPU) 或 XTTS v2 (GPU)
5秒参考语音克隆F5-TTS
商业角色声音ElevenLabs v2.5
有声书旁白ElevenLabs v2.5 或 XTTS v2 + 微调
低资源语言在5-20小时目标语言数据上训练VITS
表达性/情感标签ElevenLabs v2.5 或 StyleTTS 2微调

截至2026年开源领先者:F5-TTS用于质量,Kokoro用于效率。除非你是历史学家,否则不要用Tacotron。

陷阱

  • 没有文本归一器。 “Dr. Smith”读作”Doctor”还是”Drive”?“2026”读作”twenty twenty six”还是”two zero two six”?在音素化器之前归一化。
  • OOV专有名词。 “Ghumare” → “ghyu-mair”?为未知token提供后备的素到音素模型。
  • 削波。 声码器输出很少削波,但推理时的mel缩放不匹配可能超出±1.0。始终 np.clip(wav, -1, 1)
  • 采样匹配 Kokoro输出24 kHz;你的下游流水线期望16 kHz → 重采样或产生混叠。

交付它

结果保存为 outputs/skill-tts-designer.md。为给定声音延迟语言目标设计TTS流水线。

练习

  1. 简单 code/main.py。从玩具词构建音素字典,估算每个音素的时长,并打印假的”mel”调度
  2. 中等。 安装Kokoro,用 af_bellaam_adam 声音合成同一句话。比较音频时长和主观质量
  3. 困难。 录制5秒自己的参考。使用F5-TTS克隆。报告参考和克隆输出之间的SECS。

关键术语

术语通俗说法实际含义
音素声音抽象声音类别;英语39个(ARPABet)。
时长预测每个音素持续非AR模型输出;每个音素的整数帧数。
声码器Mel→波形将mel频谱映射原始样本的神经网络
HiFi-GAN标准声码器基于GAN;2020-2024主导。
MOS主观质量人类评分者的1-5平均意见分。
SECS语音克隆指标目标克隆说话嵌入之间的余弦相似
F5-TTS2024开源SOTA匹配扩散;零样本克隆。
KokoroCPU英语领先者82M参数模型,Apache 2.0。

延伸阅读

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式