Zipformer
一种面向语音序列的高效 encoder:用多尺度 U-Net-like 时间分辨率、卷积局部建模、跨模块 attention weight reuse 与 bypass 连接,兼顾长程依赖、局部声学结构和计算效率。
Zipformer 最初为 自动语音识别(ASR) 设计,是 Transformer/Conformer 家族中的高效语音 encoder。它不是单个 attention 变体,而是一套围绕“语音序列很长、相邻帧高度相关、不同时间尺度都重要”组织的 backbone。
在 资料摘要:ZipVoice 中,Zipformer 被迁移到零样本 TTS 的两个位置:
- Text encoder:将 phone/token 序列编码为逐 token 条件状态。
- Vector field estimator:在 mel 时间轴上预测 Flow Matching 的向量场。
这说明 Zipformer 的适用范围不只限于“从声学帧识别文本”;只要任务仍是长序列建模,并同时需要局部与全局依赖,它也可作为生成模型骨干。
1. 语音序列计算量高
Section titled “1. 语音序列计算量高”标准 self-attention 对序列长度 的计算与显存复杂度近似为 。语音特征通常有数百到数千帧;若所有层始终保持最高时间分辨率,计算很快成为瓶颈。
Zipformer 在不同 encoder stack 使用不同 downsampling factor,让部分计算在较短序列上完成,再通过多尺度路径恢复或融合信息。
2. 语音同时有局部与长程结构
Section titled “2. 语音同时有局部与长程结构”- 局部:共振峰变化、音素过渡、能量与基频连续性。
- 中程:音节、词与短语节奏。
- 长程:句法、语义、说话人风格和整句韵律。
卷积擅长局部模式,attention 擅长全局依赖;Zipformer 把二者放在同一 encoder layer 家族中,而不是只依赖其中一种。
3. 生成模型需要多尺度归纳偏置
Section titled “3. 生成模型需要多尺度归纳偏置”Flow/diffusion 模型要从高噪声逐步恢复细节。低分辨率路径更容易组织整体结构,高分辨率路径保留局部细节;这与图像/音频生成常见的 U-Net 直觉一致。
ZipVoice 因而让完整多尺度 Zipformer 承担声学向量场估计,而文本 encoder 去掉 U-Net 多尺度结构,只保留对文本序列更直接有用的卷积与 attention reuse。
多尺度 U-Net-like encoder
Section titled “多尺度 U-Net-like encoder”Zipformer 由多个 encoder stack 组成,不同 stack 可以在不同时间分辨率上工作。抽象地看:
其中 是第 个 stack 的 downsampling factor。较大的 意味着更短序列、更大的有效感受野和更低 attention 成本。
这里的 “U-Net-like” 指多分辨率编码与跨层融合,并不意味着完全复刻图像 U-Net 的二维卷积结构。
Convolution module
Section titled “Convolution module”Convolution module 在局部时间窗口内混合相邻 hidden state,提供两类作用:
- 捕捉相邻帧强相关的语音模式;
- 给纯 attention 加入局部性与平移相关的归纳偏置。
对 TTS 声学建模尤其重要,因为相邻 mel frame 并非独立 token,而是连续发音运动的密集采样。
Attention weight reuse
Section titled “Attention weight reuse”Zipformer 在同一层的多个 attention-related module 之间复用 attention weight,包括两个 self-attention module 和一个 non-linear attention(NLA)module。
如果 attention matrix 记为:
复用的核心不是让所有模块输出相同,而是让它们共享 或其构造所需的 query/key projection,再用各自的 value / nonlinear path 产生不同变换。这样避免重复计算最昂贵的时序关系图。
Bypass 连接
Section titled “Bypass 连接”多尺度 stack 之间用 bypass 保留与融合较早的高分辨率信息。它的作用类似跨层残差/skip connection:
- 避免下采样路径丢失内容细节;
- 缩短梯度传播路径;
- 让后续层同时访问已加工特征与较直接的输入表示。
ZipVoice 的消融中,删除 bypass 后 WER 从 1.68 恶化到 98.89,说明它对生成稳定性和内容保持不是可有可无的装饰。
时间步与条件注入
Section titled “时间步与条件注入”Zipformer 本身是 encoder 结构,不天然等于 flow/diffusion 模型。作为 ZipVoice vector field estimator 时,还需要接收:
- noisy mel ;
- reference/prompt mel;
- 帧级文本条件 ;
- flow timestep ;
- 蒸馏模型中的 CFG strength 。
这些条件如何拼接或调制,属于 ZipVoice 的生成任务适配,不是 Zipformer 名称本身的定义。
- ASR 阶段:Zipformer 被提出为高效 encoder,通过多尺度序列处理、卷积、attention reuse 与 bypass 降低长语音序列成本。
- k2-fsa / icefall 生态:Zipformer 成为多种 ASR recipe 的主干,并形成可导出、可部署的实现。
- TTS 迁移:ZipVoice 把 Zipformer 同时用作 text encoder 与 CFM vector field estimator,证明其效率设计可迁移到生成式语音任务。
- 组件复用:ZipVoice 官方代码中的 TTSZipformer 可作为逐 phone encoder 研究对象,但导出 ONNX 图可能把 duration expansion 一并封装,接口粒度必须单独核对。
- “Zipformer 就是更小的 Transformer”:不准确。关键不是单纯减少层数或 hidden size,而是多尺度路径、卷积、attention reuse 和 bypass 的组合。
- “attention reuse 等于所有 attention 输出相同”:复用的是时序权重/关系图;不同模块仍可使用不同 value 与非线性变换。
- “U-Net-like 就一定适合 text encoder”:ZipVoice 恰好在 text encoder 中去掉 U-Net 结构,只在声学 vector field estimator 保留完整多尺度路径。
- “Average Upsampling 属于 Zipformer”:不是。它是 ZipVoice 放在 text encoder 之后的无参数长度匹配策略。
- “ONNX text encoder 输出就是逐 phone states”:不一定。ZipVoice 的官方推理导出图可包含 duration expansion,输出已进入帧级坐标;复用时应直接检查 PyTorch module 的边界与 shape。
- “Zipformer 是 DiT”:两者都能作为 flow/diffusion backbone,但结构来源和条件注入方式不同。Zipformer 保留面向语音序列的卷积、多尺度与 attention reuse;经典 DiT 更接近 patch Transformer + timestep modulation。
与相邻概念的区别
Section titled “与相邻概念的区别”| 概念 | 核心结构 | Zipformer 的区别 |
|---|---|---|
| Transformer | self-attention + FFN | 增加语音多尺度、卷积、attention reuse 与 bypass |
| Conformer | attention + convolution | Zipformer 更强调多分辨率 stack 与 attention 权重复用 |
| U-Net | encoder–decoder 多尺度路径 | Zipformer 是一维序列 encoder,并非二维卷积生成网络 |
| DiT | Transformer 作为扩散/流骨干 | Zipformer 来自 ASR,并保留强语音局部归纳偏置 |
| Duration predictor | 预测 token 时长 | 不属于 Zipformer;ZipVoice 用 Average Upsampling 避开独立时长模型 |
- 资料摘要:ZipVoice — Zipformer 从 ASR encoder 迁移到 Flow Matching TTS 的完整案例。
- 条件流匹配(CFM) — ZipVoice 声学 Zipformer 所估计的向量场目标。
- 自动语音识别(ASR) — Zipformer 的原始任务背景。
- Transformer — attention-based encoder 的基础架构。
- DiT(Diffusion Transformer) — 另一类常用 flow/diffusion Transformer backbone。
- Wiki 目录