语音合成(TTS)
文字转语音(Text-to-Speech,TTS)技术将书面文字转化为自然流畅的语音,是人机交互中不可或缺的输出模态。从早期机械感十足的机器人声音,到如今与真人难以区分的神经网络语音,TTS 技术经历了深刻的变革。
TTS 任务定义
TTS 的核心任务:
输入:文字字符串(可包含标点、数字、英文缩写等)
输出:音频波形(PCM 数据,通常 22050Hz 或 24000Hz 采样率)
高质量 TTS 系统需要满足:
- 自然度:语音听起来自然、流畅,不机械
- 可懂度:发音准确清晰,听众能轻松理解
- 情感表达:语调、节奏、重音符合语义情感
- 说话人一致性:在长段语音中保持音色的一致性
- 实时性:对话场景下需要低延迟输出(首字节时间 <500ms)
传统拼接合成
最早的 TTS 系统采用**单元选取(Unit Selection)**方法:将大量真人录音切割为音素、音节等单元,合成时从数据库中检索最匹配的单元进行拼接。
- 优点:拼接单元来自真实录音,音质局部逼真
- 缺点:拼接边界处有明显不自然感;数据库通常只支持单一说话人;录制成本高昂
- 代表系统:CMU Festival、AT&T Natural Voices(早期商业系统)
统计参数合成(HMM-TTS)
基于**隐马尔可夫模型(HMM)**的参数合成方法:
- 不直接拼接录音,而是从数据中学习声学参数(基频 F0、频谱参数)的统计模型
- 合成时从模型中生成参数序列,再通过**声码器(Vocoder)**将参数转换为音频波形
- 代表工具:HTS(HMM-based Speech Synthesis System)
- 优点:声音平滑连贯,支持多说话人;缺点:声音听起来"机械",缺乏自然度
神经 TTS 演进
WaveNet(DeepMind,2016)
WaveNet 是神经 TTS 的里程碑,使用**扩张因果卷积(Dilated Causal Convolution)**直接在波形级别生成音频:
- 每个采样点的生成条件化于所有历史采样点
- 膨胀卷积的感受野覆盖数百毫秒的历史音频
- 音质显著优于 HMM 系统,接近真人水平
缺点:自回归生成,实时率远低于 1(每秒只能生成约 0.02 秒音频),无法实时使用。
Tacotron / Tacotron 2(Google,2017-2018)
Tacotron 系列引入了两阶段的神经 TTS 框架(至今仍是主流架构模式):
文字 → 文本编码器(LSTM/Transformer)
→ 注意力机制(对齐文字与声学帧)
→ 声学解码器 → 梅尔频谱(Mel Spectrogram)
梅尔频谱 → 声码器(WaveNet/Griffin-Lim)→ 音频波形
Tacotron 2 配合 WaveNet 声码器,生成质量已达到令人满意的自然度。
FastSpeech / FastSpeech 2(微软,2019-2020)
FastSpeech 解决了 Tacotron 的两个核心问题:
- 慢:自回归生成逐帧输出,FastSpeech 改为非自回归并行生成,速度提升 30 倍
- 对齐不稳定:依赖注意力对齐有时会跳字或重复,FastSpeech 引入显式**时长预测器(Duration Predictor)**明确控制每个音素对应多少帧
FastSpeech 2 进一步增加了**音高(Pitch)和能量(Energy)**预测,使情感控制成为可能。
声码器(Vocoder)
声码器将声学特征(梅尔频谱)还原为音频波形,是 TTS 音质的关键:
- WaveNet:最高质量,但速度慢(不实用于实时)
- WaveGlow(NVIDIA,2018):基于 Flow 的并行声码器,实时推理
- HiFi-GAN(2020):GAN-based 声码器,速度快(实时率 >100x)、质量高,成为当前最广泛使用的声码器之一
- BigVGAN:HiFi-GAN 的改进版,更好的泛化性
零样本声音克隆
零样本声音克隆(Zero-shot Voice Cloning)只需极少量参考音频(3-30 秒)即可合成任意文字的对应说话人声音,是近年最引人注目的 TTS 进展。
XTTS(Coqui,2023)
XTTS 是目前最强大的开源零样本克隆模型:
- 仅需 3-6 秒参考音频
- 支持 17 种语言(含中文)的克隆与合成
- 推理速度可达实时,适合对话场景
Tortoise TTS
Tortoise 以极高的克隆质量著称,通过多次采样和重排序提升质量,但速度较慢,更适合离线高质量生成。
Fish Speech
国内开源项目,专门针对中文进行优化,支持多说话人、情感控制,生成质量接近商业水平。
实时 TTS:VITS / Fish Speech
VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech) 实现了完全端到端的 TTS,直接从文字生成波形,无需中间梅尔频谱:
- 结合 VAE + 对抗训练 + Flow 实现高质量生成
- 推理速度快,适合实时对话
- 支持通过说话人 embedding 实现多说话人
VITS2 和 Fish Speech 在 VITS 基础上进一步提升中文效果和稳定性。
商业 TTS API 对比
| 服务商 | 产品 | 中文质量 | 克隆功能 | 实时延迟 | 特色 |
|---|---|---|---|---|---|
| ElevenLabs | - | 良好 | 是(3-30s) | 中等 | 情感控制最佳,英文顶级 |
| 微软 Azure | Neural TTS | 优秀 | 是(自定义声音) | 低 | 稳定性强,声音库丰富 |
| 阿里云 | 语音合成 | 优秀 | 是 | 低 | 中文最优选之一 |
| 科大讯飞 | 语音合成 | 极佳 | 是 | 低 | 中文 TTS 国内领先 |
| Google Cloud | Text-to-Speech | 良好 | 否 | 低 | WaveNet 加持 |
| OpenAI | TTS API | 一般 | 否(6 种预设) | 低 | 集成简单,GPT 生态 |
在 AI 语音助手中的应用
TTS 是 AI 语音助手(如 Siri、小爱同学、ChatGPT Voice Mode)的声音输出层,关键工程要求:
- 流式输出:LLM 生成文字的同时,TTS 即时合成,减少等待时间(TTFA,Time to First Audio)
- 停顿自然性:在标点符号处的停顿要自然,不能机械地"读字"
- 中断处理:用户打断说话时,TTS 能快速停止当前合成
- 情感匹配:根据对话内容的情感色彩调整语调(兴奋、安慰、正式等)
- 多说话人:同一对话中不同角色使用不同音色(角色扮演、多人对话场景)