跳转到内容

输入关键词开始搜索

    资料摘要:ZipVoice

    论文摘要更新 2026-08-17置信度 high待阅读原始来源 ↗#语音合成#零样本#流匹配#进阶#易过时

    小米提出的 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:若文本有 NN 个 token、目标有 TT 帧,令 d=T/Nd=\lfloor T/N\rfloor,每个文本状态重复 dd 次,再用 filler 补到 TT。它只提供初始帧级脚手架,不声称等于真实音素时长。
    • 零样本克隆来自 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;论文因此使用“接近实时”而非严格实时表述。

    输入包括目标文本 token y=(y1,,yN)y=(y_1,\ldots,y_N) 与参考语音;输出为目标语音 waveform。声学特征使用 24 kHz 音频的 100 维 mel-spectrogram,hop length 为 256;生成 mel 后由额外的 Vocos vocoder 还原波形。

    Text encoder 把 token 序列变成:

    y^RF×N.\hat y\in\mathbb R^{F\times N}.

    Average Upsampling 再将其扩展为与 mel 长度一致的条件:

    zRF×T.z\in\mathbb R^{F\times T}.

    speech feature 记为 x1RD×Tx_1\in\mathbb R^{D\times T};training 时用 Gaussian noise x0x_0x1x_1 线性插值得到 xtx_t,并随机保留一段 prompt mel 作为 speech condition。

    Binary temporal mask m{0,1}D×Tm\in\{0,1\}^{D\times T} 中,1 表示要生成的目标区域。模型预测向量场时看到 noisy speech、帧级文本条件和未被 mask 的参考语音:

    LCFM-TTS=E(vt(xt,z,(1m)x1;θ)(x1x0))m2.L_{\text{CFM-TTS}} =E\left|\left(v_t(x_t,z,(1-m)\odot x_1;\theta)-(x_1-x_0)\right)\odot m\right|^2.

    损失只计算在目标区域;prompt 区域用于条件化而不参与重建误差。推理从 Gaussian noise 出发,用 ODE solver 反复调用同一个 vector field estimator,再裁去 prompt 区域并交给 vocoder。

    3. Zipformer 为什么适合声学向量场

    Section titled “3. Zipformer 为什么适合声学向量场”

    论文给出三个理由:

    1. U-Net-like 多尺度路径在不同时间分辨率上处理序列,与 diffusion / flow 模型常用的多尺度归纳偏置一致。
    2. 卷积模块捕获相邻声学帧的局部相关性,attention 负责长程依赖。
    3. 同一层的两个 self-attention 与一个 NLA 共享 attention weight,并复用 query/key projection,降低参数与计算量。

    Text encoder 不需要声学分支那样的多尺度结构,所以去掉 U-Net,只保留 convolution module 与 attention reuse。论文的 ablation 也显示,删去专用 text encoder 后 WER 变差;它不是单纯的 embedding lookup。

    d=TN.d=\left\lfloor\frac{T}{N}\right\rfloor.

    每个 token 状态先重复 dd 次;若 T>dNT>dN,余下 TdNT-dN 个位置用 filler embedding 补齐。这不是 alignment supervision,也不输出真实逐 token duration;它只是先把文本 condition 放进 mel-frame 坐标系,让声学 Zipformer 从一个比“文本后全 padding”更合理的初始布局学习隐式对齐。

    消融结果很强:删去 Average Upsampling,WER 从 1.68 升至 20.19。这证明粗脚手架有用,但不能反推 uniform duration 假设符合真实发音时长。

    对时刻 tt 的状态 xtx_t,teacher 先用带 CFG 的一步 ODE 更新到 tmidt_{\mathrm{mid}},再更新到 tdestt_{\mathrm{dest}}。两步结果构成区间平均 teacher vector:

    vt,tdestT=xtdestxttdestt.v^{T}{t,t{\mathrm{dest}}} =\frac{x_{t_{\mathrm{dest}}}-x_t}{t_{\mathrm{dest}}-t}.

    Student 从 teacher 权重初始化,并额外接收经 Fourier embedding 和 linear layer 处理的 CFG strength ω\omega。训练让 student prediction 回归该区间 teacher vector;推理时 ω\omega 已作为单分支条件,不必像普通 CFG 那样每步做 conditional / unconditional 两次评估。

    这里要区分 stepNFE:带 CFG 的一步通常对应两次模型前向;ZipVoice-Distill 报告的 4 NFE 是四次单分支函数评估。

    • 小规模模型用 LibriTTS 585 小时训练;大规模模型使用约 10 万小时中英文语音。
    • 基础 ZipVoice 与蒸馏版都报告 123M 参数;主要参数位于 vector field estimator。
    • 推理把 reference speech 重复到约 3 秒,以稳定音色条件;目标长度按文本 token 数与 reference 的 speech/text length ratio 估计。
    • 论文还使用 last-step speech condition drop,避免最终结果在 prompt 与目标边界处出现残留条件污染。
    ZipVoice 训练与推理架构
    ZipVoice 训练与推理架构
    模型 参数 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 依赖目标总长度 TT,而推理中的 TT 来自经验比例估计;它消除了 duration predictor,却没有提供用户可控的逐音素时长。
    • 多语言证据有限:大模型训练覆盖中英文,但系统级主表集中在英文 LibriSpeech-PC,中文仅用 2020 条 DiDiSpeech 样本验证;不能据此外推到更广泛语言。
    • RTF 依赖固定场景:速度表固定 3 秒 prompt、10 秒输出和特定硬件;线上端到端延迟还包含文本前处理、调度、vocoder、网络和并发。
    • 开源边界较好但仍需区分接口:官方发布代码、训练/微调流程和 checkpoint;若复用 phone encoder,应区分 PyTorch 的逐 phone hidden states 与 ONNX 图中已做 duration expansion 的帧级输出。