资料摘要:ZipVoice
小米提出的 123M 参数零样本 TTS:用两个 Zipformer 分别编码文本、估计 Flow Matching 向量场,以无参数 Average Upsampling 给出粗帧级文本条件,再把带 CFG 的教师轨迹蒸馏为 4 NFE、单分支推理的 ZipVoice-Distill。
🔒 ZipVoice: Fast and High-Quality Zero-Shot Text-to-Speech with Flow Matching
中文全文译稿 · 精读笔记 · 官方代码 · 模型权重 · arXiv
- 效率目标不是单点优化:模型同时缩小 backbone、复用 attention、用 Average Upsampling 省去 forced alignment / duration predictor,并以 flow distillation 把带 CFG 的多步教师压到 4 NFE。
- 两段 Zipformer:text encoder 保留卷积与 attention-weight reuse,但去掉多尺度 U-Net;vector field estimator 使用完整 Zipformer 多尺度结构,承担绝大部分参数。
- 粗对齐而非 duration model:若文本有 个 token、目标有 帧,令 ,每个文本状态重复 次,再用 filler 补到 。它只提供初始帧级脚手架,不声称等于真实音素时长。
- 零样本克隆来自 infilling:reference speech 作为未 mask 的 mel 条件,目标区域从 noisy mel 恢复;文本条件、prompt mel 与 noisy mel 在时间轴对齐后沿 feature 维拼接。
- 蒸馏内化 CFG:teacher 用两次带 CFG 的 Euler 更新形成跨区间平均向量;student 以 CFG strength 为显式条件回归该向量,部署时不再计算 conditional / unconditional 两个分支。
- 论文主工作点:ZipVoice-Distill 在 LibriSpeech-PC test-clean 的 4 NFE 结果为 SIM 0.606、WER 1.68、UTMOS 4.22;123M 大模型版本在 H20 上报告 RTF 0.0125。
- CPU 口径需谨慎:Apple M2 CPU RTF 为 1.2202,较 F5-TTS 的 37.284 快得多,但仍大于 1;论文因此使用“接近实时”而非严格实时表述。
1. 系统输入输出
Section titled “1. 系统输入输出”输入包括目标文本 token 与参考语音;输出为目标语音 waveform。声学特征使用 24 kHz 音频的 100 维 mel-spectrogram,hop length 为 256;生成 mel 后由额外的 Vocos vocoder 还原波形。
Text encoder 把 token 序列变成:
Average Upsampling 再将其扩展为与 mel 长度一致的条件:
speech feature 记为 ;training 时用 Gaussian noise 与 线性插值得到 ,并随机保留一段 prompt mel 作为 speech condition。
2. Masked CFM 训练
Section titled “2. Masked CFM 训练”Binary temporal mask 中,1 表示要生成的目标区域。模型预测向量场时看到 noisy speech、帧级文本条件和未被 mask 的参考语音:
损失只计算在目标区域;prompt 区域用于条件化而不参与重建误差。推理从 Gaussian noise 出发,用 ODE solver 反复调用同一个 vector field estimator,再裁去 prompt 区域并交给 vocoder。
3. Zipformer 为什么适合声学向量场
Section titled “3. Zipformer 为什么适合声学向量场”论文给出三个理由:
- U-Net-like 多尺度路径在不同时间分辨率上处理序列,与 diffusion / flow 模型常用的多尺度归纳偏置一致。
- 卷积模块捕获相邻声学帧的局部相关性,attention 负责长程依赖。
- 同一层的两个 self-attention 与一个 NLA 共享 attention weight,并复用 query/key projection,降低参数与计算量。
Text encoder 不需要声学分支那样的多尺度结构,所以去掉 U-Net,只保留 convolution module 与 attention reuse。论文的 ablation 也显示,删去专用 text encoder 后 WER 变差;它不是单纯的 embedding lookup。
4. Average Upsampling 的坐标意义
Section titled “4. Average Upsampling 的坐标意义”
每个 token 状态先重复 次;若 ,余下 个位置用 filler embedding 补齐。这不是 alignment supervision,也不输出真实逐 token duration;它只是先把文本 condition 放进 mel-frame 坐标系,让声学 Zipformer 从一个比“文本后全 padding”更合理的初始布局学习隐式对齐。
消融结果很强:删去 Average Upsampling,WER 从 1.68 升至 20.19。这证明粗脚手架有用,但不能反推 uniform duration 假设符合真实发音时长。
5. Flow Distillation
Section titled “5. Flow Distillation”对时刻 的状态 ,teacher 先用带 CFG 的一步 ODE 更新到 ,再更新到 。两步结果构成区间平均 teacher vector:
Student 从 teacher 权重初始化,并额外接收经 Fourier embedding 和 linear layer 处理的 CFG strength 。训练让 student prediction 回归该区间 teacher vector;推理时 已作为单分支条件,不必像普通 CFG 那样每步做 conditional / unconditional 两次评估。
这里要区分 step 与 NFE:带 CFG 的一步通常对应两次模型前向;ZipVoice-Distill 报告的 4 NFE 是四次单分支函数评估。
6. 训练规模与推理策略
Section titled “6. 训练规模与推理策略”- 小规模模型用 LibriTTS 585 小时训练;大规模模型使用约 10 万小时中英文语音。
- 基础 ZipVoice 与蒸馏版都报告 123M 参数;主要参数位于 vector field estimator。
- 推理把 reference speech 重复到约 3 秒,以稳定音色条件;目标长度按文本 token 数与 reference 的 speech/text length ratio 估计。
- 论文还使用 last-step speech condition drop,避免最终结果在 prompt 与目标边界处出现残留条件污染。
大规模 LibriSpeech-PC test-clean
Section titled “大规模 LibriSpeech-PC test-clean”| 模型 | 参数 | NFE | SIM | WER | UTMOS |
|---|---|---|---|---|---|
| E2 TTS | 335M | 32 | 0.582 | 2.13 | 4.19 |
| F5-TTS | 336M | 32 | 0.589 | 1.88 | 4.21 |
| ZipVoice | 123M | 16 | 0.603 | 1.67 | 4.24 |
| ZipVoice-Distill | 123M | 4 | 0.606 | 1.68 | 4.22 |
数字来自论文 Table 1。它们支持“4 NFE 基本保留内容与音色质量”,但不同基线训练数据、checkpoint 与评测来源不完全一致,不能把极小差距解释为绝对排名。
在相同设备和作者的 PyTorch 测试中,3 秒 prompt、生成 10 秒语音:
| 设备 | F5-TTS RTF | ZipVoice-Distill RTF |
|---|---|---|
| NVIDIA H20 | 0.2958 | 0.0125 |
| NVIDIA V100 | 0.4367 | 0.0238 |
| Apple M2 CPU | 37.284 | 1.2202 |
- 无 Average Upsampling:SIM 0.562、WER 20.19、UTMOS 4.10。
- 无 text encoder:SIM 0.575、WER 2.82、UTMOS 4.16。
- Zipformer 无 downsampling:SIM 0.582、WER 1.74、UTMOS 4.18。
- Zipformer 无 attention reuse:SIM 0.572、WER 1.81、UTMOS 4.13。
- Zipformer 无 bypass:SIM 0.440、WER 98.89、UTMOS 3.96。
- 贡献是强工程组合而非全新生成范式:CFM、CFG、infilling、U-Net-like 多尺度与蒸馏都有前置工作;论文价值在于证明 ASR Zipformer 的效率设计能迁移到 flow TTS,并形成可部署的小模型。
- 显式 duration control 仍缺失:Average Upsampling 依赖目标总长度 ,而推理中的 来自经验比例估计;它消除了 duration predictor,却没有提供用户可控的逐音素时长。
- 多语言证据有限:大模型训练覆盖中英文,但系统级主表集中在英文 LibriSpeech-PC,中文仅用 2020 条 DiDiSpeech 样本验证;不能据此外推到更广泛语言。
- RTF 依赖固定场景:速度表固定 3 秒 prompt、10 秒输出和特定硬件;线上端到端延迟还包含文本前处理、调度、vocoder、网络和并发。
- 开源边界较好但仍需区分接口:官方发布代码、训练/微调流程和 checkpoint;若复用 phone encoder,应区分 PyTorch 的逐 phone hidden states 与 ONNX 图中已做 duration expansion 的帧级输出。
- 无音素级时长 TTS 的文本—语音对齐机制对比 — 七篇 diffusion / flow TTS 的长度桥接与文本—语音对齐横向比较。
- Zipformer — 本文 text encoder 与 vector field estimator 的共同骨干。
- 条件流匹配(CFM) — masked speech-infilling 训练目标的生成框架。
- CFG(无分类器引导) — 基础模型的条件引导,以及蒸馏时被内化的教师轨迹。
- 资料摘要:F5-TTS — 同为无显式 forced alignment 的 Flow Matching TTS,对齐策略与 backbone 不同。
- 资料摘要:CosyVoice — 以离散语音 token + CFM 解码器组织零样本 TTS 的相邻路线。
- Wiki 目录