一、语音需要同时回答“远处相关吗”和“附近怎样变化”
这篇文章面向需要选择或实现 ASR Encoder 的工程师,解释 Conformer 如何在一个块内分工处理全局依赖和局部声学结构,以及为什么它不能单独决定系统是否流式。
纯 Transformer 是一个强而合理的起点。Self-Attention 可以让任意两个时间位置直接交互,适合处理跨词上下文;但它没有显式规定相邻语音帧应当连续。纯 CNN 则天然适合音素过渡和局部频谱模式,计算也更规则,但单层只能看到有限窗口,远距离关系需要堆叠很多层。
Conformer 的选择不是用 CNN 替代 Transformer,而是让 Attention 和卷积各自承担擅长的部分:Attention 负责内容相关的全局交互,卷积负责位置邻近的局部模式。
一句定义:Conformer 是一种在 Macaron 双 FFN 之间依次放置相对位置多头自注意力和一维卷积模块的语音编码器。
二、完整数据流:先降低帧率,再堆叠编码块
10 秒音频 ÷ 10 ms hop ≈ 1,000 个特征帧
经过约 4× 时间降采样 ≈ 250 个 Encoder 位置
注意力矩阵由 1,000² 缩到约 250² 个位置对,
仅从序列长度看,单层全局注意力的位置对约减少到 1/16。
注意:这是简化计算,不含通道、卷积和实现常数。
三、Conformer Block:四个模块按顺序串联
四、自注意力:根据当前语音动态读取全局
Conformer 使用 Multi-Head Self-Attention。每个时间位置投影出 Q、K、V,再根据 Q 与所有 K 的匹配程度聚合 V:
原始模型引入 Transformer-XL 风格的相对正弦位置编码。模型不仅知道某个帧“是什么”,还可以表达两个帧之间的相对距离;作者认为这有助于适应不同长度的语音。
这条分支的优势是感受野可以覆盖整个输入,并随语音内容改变连接;成本是标准全局 Attention 的时间和注意力矩阵显存随长度近似二次增长。卷积降采样因此不是无关紧要的前处理,而是完整架构的成本控制点。
五、卷积模块:门控、逐通道时间卷积与通道混合
LayerNorm
→ Pointwise Conv(通道扩张为 2 倍)
→ GLU 门控(拆成两半并逐元素相乘)
→ 1D Depthwise Conv(沿时间轴逐通道卷积)
→ BatchNorm
→ Swish
→ Pointwise Conv(投影回模型维度)
→ Dropout
→ Residual Add
| 组件 | 改变什么 | 为什么放在这里 |
|---|---|---|
| Pointwise Conv | 混合并扩张通道,不扩大时间窗口 | 为门控和局部卷积准备表示 |
| GLU | 一半特征作为内容,另一半形成门 | 选择哪些通道信号继续传播 |
| Depthwise Conv | 每个通道独立读取邻近时间帧 | 低成本注入局部时间结构 |
| BatchNorm + Swish | 归一化并加入平滑非线性 | 支持深层训练和局部特征变换 |
| 第二个 Pointwise Conv | 重新混合通道并恢复维度 | 把局部结果送回残差主干 |
Depthwise Conv 的卷积核大小控制单层直接覆盖的局部窗口。原论文的大模型采用 kernel size 32,但这不是所有 Conformer 的固定参数;后续实现常根据流式延迟、数据规模和计算预算调整。
六、Macaron FFN:为什么前后各放半个
普通 Transformer 通常在 Attention 后放一个 FFN。Conformer 借鉴 Macaron-Net,把它拆成块首和块尾两个 FFN,并让每次残差更新乘以 1/2:
FFN 不在时间位置之间传递信息,而是在每个位置内部扩张、非线性变换并压回通道维度。Attention 与 Conv 解决“从哪些时间位置取信息”,FFN 解决“如何重新组合这个位置的特征”。
两个半步 FFN 并不等于机械地复制普通 FFN。它形成 FFN → 时序混合 → FFN 的对称结构。原论文的消融实验报告,Macaron 双 FFN 优于参数规模接近的单 FFN 配置。
七、Conformer、Transformer 与 SAN-M 的差异
| 比较轴 | Transformer | Conformer | SAN-M |
|---|---|---|---|
| 全局模块 | Self-Attention | Self-Attention | Self-Attention |
| 局部模块 | 无显式时序卷积 | GLU + Depthwise Conv | DFSMN FIR Memory |
| 融合方式 | 单一 Attention 路径 | MHSA 后串行接 Conv | Attention 与 Memory 并行相加 |
| FFN 布局 | 通常一个 FFN | 前后两个半步 FFN | 通常沿用 Transformer 式 FFN |
| 局部非线性 | 依赖 Attention + FFN 间接学习 | GLU、BatchNorm、Swish | FIR 式逐通道加权为主 |
| 常见角色 | 通用 Encoder/Decoder | ASR 声学 Encoder | FunASR 声学 Encoder |
简化地说,Conformer 是“先做全局内容混合,再做局部细化”;SAN-M 是“全局分支与局部分支同时计算,再融合”。这是结构差异,不足以脱离 checkpoint 和推理设置判断谁更快或更准。
八、原始论文实际证明了什么
作者在 LibriSpeech 960 小时英语语音上训练了约 10M、30M 和 118M 三档模型。论文报告 118M 模型在不使用外部语言模型时,test-clean/test-other WER 为 2.1%/4.3%;加入外部语言模型后为 1.9%/3.9%。10M 小模型报告为 2.7%/6.3%。
论文消融还比较了卷积放置方式、卷积核大小、激活函数与 Macaron FFN。其结论支持“Attention 后串联卷积”和“双半步 FFN”这套组合,但证据来自当时的 LibriSpeech 配置,不应扩展为所有语种、噪声条件和流式模型上的无条件结论。
不要把 Encoder 指标当成产品指标:WER 同时受训练数据、输出单元、Decoder、外部语言模型和搜索影响;延迟还取决于 chunk、右侧上下文、硬件、batch 与推理引擎。
九、部署边界:离线 Conformer 不会自动变成流式模型
全局 Attention 需要完整或受限上下文
原始双向 MHSA 可以读取未来帧。流式化时必须改成 chunk attention、limited-context attention 或其他缓存协议,并明确每层允许多少右看。
普通卷积也可能读取未来
对称 Depthwise Conv 会访问当前位置右侧。严格因果模型需要左填充的 causal convolution;可控延迟模型则保留有限 look-ahead。卷积核大小因此也参与最低算法延迟。
标准 Attention 对长音频仍昂贵
卷积分支没有消除 O(T²) 注意力。长录音通常还需要更激进的降采样、局部注意力、分块或 FastConformer 类变体。
Conformer 只定义 Encoder
CTC、RNN-T、AED 和 Paraformer-v2 都可以把 Conformer 当作前端。首字延迟、输出是否并行、能否使用文本历史以及静音幻觉风险,必须结合后端一起判断。
Conformer Paraformer-v2 的 240M 都是 Conformer 参数吗?
不是。论文表中的 240M 是完整系统规模,包含 Conformer Encoder、CTC 相关投影和非自回归 Decoder 等部分。Conformer 本身没有固定参数量,层数、模型宽度、FFN 宽度和词表相关输出层都会改变总规模。
十、一手资料
- A. Gulati et al. Conformer: Convolution-augmented Transformer for Speech Recognition.
- Google Research. Conformer 官方研究页面.
- K. An et al. Paraformer-v2: An Improved Non-autoregressive Transformer for Noise-robust Speech Recognition.
- Google Research. Conformer-Transducer: Streaming Speech Recognition with Conformer.
评论加载中...