流式语音合成
在文本尚未全部到达时增量生成并播放语音,使输入、模型推理与音频输出形成连续流水线的 TTS 技术。
普通离线 TTS 先接收完整文本,再一次性生成整段语音。流式 TTS 将文本、语音表示和波形切成可递增处理的 chunk:前几个词或音素到达后就启动合成,后续文本与音频边到边处理。
需要区分两种常见含义:
- 单流式:完整文本已知,但声学模型或 vocoder 分块输出;
- 双流式:文本也在逐步到达,系统一边接收文本、一边输出语音。
双流式更接近实时 LLM 对话:上游语言模型还在生成回答,TTS 已开始播放前半句。它比“把离线模型的波形切小块”更难,因为模型必须在缺少未来文本时做发音、停顿和韵律决定。
- 降低交互等待:用户不必等 LLM 写完整段回答后再听到声音。
- 支撑实时对话:语音助手、数字人、游戏角色和客服需要连续反馈。
- 减少峰值内存:按 chunk 处理可避免一次缓存整段声学表示和波形。
- 改善长文本体验:有声阅读可以边合成边播放,而不是等待整章生成。
- 暴露真正的系统瓶颈:文本调度、对齐、模型、vocoder、网络与播放器都进入延迟预算。
1. 增量文本入口
Section titled “1. 增量文本入口”上游可以按字符、subword、词、短语或句子发送文本。粒度越小,越早启动,但上下文越少:
- 太早:首词读音、重音和语调可能在看到后文后才发现不合适;
- 太晚:质量较稳,但首包延迟上升;
- 实际系统常按标点、语义短语和最长等待时间动态组 chunk。
2. 文本—语音单调对齐
Section titled “2. 文本—语音单调对齐”系统需要知道“当前看到的文本,足够生成到哪一段语音”。常见方案包括:
| 对齐方式 | 思路 | 流式特点 |
|---|---|---|
| 固定比例交织 | 每若干文本 token 插入固定数量语音 token | 简单,但不适应语速和音素时长变化 |
| MFA 强制对齐 | 用 GMM-HMM 工具得到帧级音素边界 | 精确但流水线较重 |
| CTC 对齐 | 神经对齐器给出音素/blank 的单调路径 | 可与 ASR 技术栈复用,适合构造交织序列 |
| 时长预测 | 显式预测音素持续时间 | 可控,但增加组件和误差来源 |
| 隐式单调注意力 | 训练模型自行学局部单调推进 | 系统简洁,依赖数据与训练稳定性 |
CTC-TTS 综述中的 bi-word 策略,以相邻两个词和其对齐语音作为局部推进单元,避免固定比例交织忽略真实时长差异。
3. 因果序列模型
Section titled “3. 因果序列模型”流式模型不能偷看未到达的未来文本或未来音频。常见骨干包括:
- 因果 decoder-only Transformer;
- chunk-causal attention;
- temporal Transformer + depth Transformer;
- block-wise AR:低频 LM 规划下一 block,局部 decoder 生成细节;
- 因果 Flow Matching/DiT:只在当前可用条件下生成声学 chunk。
KV cache 保存历史状态,避免每次新文本到达都重算完整前缀。
4. 流式声学解码与 vocoder
Section titled “4. 流式声学解码与 vocoder”即使 LM 已输出语音 token,非因果 decoder 或等待长窗口的 vocoder 仍会拖慢首包。完整流式链路通常要求:
- tokenizer/声学头能分块解码;
- chunk 之间处理重叠、边界和相位连续性;
- vocoder 使用因果卷积或有限 lookahead;
- 播放器能立即消费小音频块;
- 生成速度长期保持快于播放速度,即 RTF < 1。
5. 延迟分解
Section titled “5. 延迟分解”“首包延迟”至少应拆成:
- 文本 prefill 等待;
- 首次模型 forward;
- 声学 chunk 缓冲;
- vocoder 生成;
- 服务排队与网络传输;
- 客户端播放缓冲。
不同论文可能从不同起点计时,也可能输出不同长度的首个音频包。只有同时报告硬件、模型规模、并发、输入长度、chunk 大小和计时边界,延迟数字才可比较。
6. 质量—延迟权衡
Section titled “6. 质量—延迟权衡”| 缩短延迟的手段 | 可能收益 | 可能代价 |
|---|---|---|
| 减少文本 prefill | 更早开口 | 首词读音和语调缺少后文 |
| 减小音频 chunk | 更快出首包 | 边界伪影、调度开销上升 |
| 减少 lookahead | 因果性更强 | 韵律、连读和跨句计划变差 |
| 降低 tokenizer 帧率 | LM 序列更短 | 单 token 信息量和重建压力增大 |
| 减少 Flow/Diffusion 步数 | RTF 降低 | 音质或稳定性下降 |
| 蒸馏/量化/小模型 | 计算更快 | 容量、鲁棒性或控制能力下降 |
- 传统阶段:统计参数 TTS 和早期神经 TTS 主要面向完整文本离线生成。
- 流式 vocoder 阶段:WaveRNN、LPCNet、因果卷积等先解决边生成边播放。
- chunk 声学模型阶段:FastSpeech/Flow/扩散模型逐步加入 chunk-aware 或因果约束。
- Codec LM 阶段:语音 token 使 KV cache、AR streaming 和多流序列成为主线。
- 双流式阶段:LLMVoX、SpeakStream、StreamMel、VoXtream、CTC-TTS 等同时处理增量文本和语音输出。
- 全双工阶段:Moshi/PersonaPlex 一类系统还需处理用户打断、重叠说话、backchannel 和 turn-taking;这已经超出单向 TTS。
- “RTF < 1 就是低延迟”:RTF 描述持续吞吐,不等于首包快;模型可能等很久再快速生成整段。
- “首包快就是体验好”:首包之后若卡顿、音频 chunk 太短或输出追不上播放,体验仍差。
- “把文本按句切开就是双流式”:句切分通常仍等待完整句子,且没有训练期对齐和因果序列设计。
- “双流式一定比离线质量差很多”:差距取决于 prefill、lookahead、训练序列、数据和声学解码器;不是固定结论。
- “延迟数字可直接跨论文排名”:计时口径、硬件、并发和首包大小常不同。
- “端到端语音 LLM 不需要对齐”:即便没有显式 MFA,模型仍要在隐空间学习文本/语义与声学时间的对应关系。
- “流式 TTS 就等于全双工对话”:全双工还要求监听、打断、重叠语音、轮次状态和回声处理。
与相邻概念的区别
Section titled “与相邻概念的区别”| 概念 | 输入/输出 | 与流式 TTS 的区别 |
|---|---|---|
| 离线 TTS | 完整文本 → 完整语音 | 可利用全部未来上下文,不以首包为主要目标 |
| 流式 ASR | 增量语音 → partial/final 文本 | 方向相反,关注 partial 稳定与首字延迟 |
| Speech-to-Speech | 语音 → 语音 | 包含理解、推理与生成,TTS 只是输出环节 |
| 全双工语音对话 | 双向连续语音流 | 还需打断、重叠、轮次和 backchannel |
| 实时 voice conversion | 语音 → 转换后的语音 | 内容通常来自输入语音,不由文本规划 |
| 低 RTF 离线合成 | 完整文本 → 快速整段语音 | 吞吐高,但可能仍需等完整文本和整段生成 |
- 资料摘要:LLM-based TTS 四年全景(2023–2026) — 四路线、CTC-TTS 与延迟评测全景
- 资料摘要:CosyVoice 2 — chunk-aware 因果 Flow Matching
- 资料摘要:Qwen3-TTS — 12.5/25 Hz 双 tokenizer 与流式模型家族
- 自动语音识别(ASR) — CTC、流式 partial 与反向任务
- LALM(大型音频语言模型) — 多流语音 token 与统一语音接口
- 神经音频编解码(RVQ) — 帧率、码本深度与因果解码基础
- 条件流匹配(CFM) — 连续声学生成与 chunk 因果化
- Wiki 目录