🔧 AI 知识库

微软把 2.47G 语音模型压到 670M,准确率几乎没掉

原文链接

微软把 2.47G 语音模型压到 670M,准确率几乎没掉

原文链接:https://mp.weixin.qq.com/s/yqR1bC72Cvh1tjPD0eP6rw 作者:智声工坊 | 2026-04-22

摘要

微软把英伟达 Nemotron-0.6B 语音模型从 2.47GB 压缩到 670MB(体积减 73%),词错率仅退化 0.17 个百分点(8.03% → 8.20%),CPU 实时倍速 6×,算法延迟 0.56 秒。三招核心:ONNX Runtime 三块独立优化(Encoder/Decoder/Joiner)+ int4-k-quant 按权重重要性量化 + 混合精度。已在微软 Foundry-Local 开源,笔记本就能跑。


端侧 ASR 的四个矛盾

端侧语音识别需要同时满足四个指标,几乎不可能:

  • 模型小:内存有限
  • 速度快:实时识别,吞吐量不能崩
  • 延迟低:说完马上出结果
  • 还得准:错字率高下游没法用

学界一直在找平衡点,但没人真正打通——直到微软这篇论文。


反常识发现:批处理跑分 ≠ 流处理能力

微软团队拉通测了 50 多种配置组合,挖到一个反直觉事实:

模型批处理 WER2.4秒分块流式 WER
Qwen3-ASR5.9%10.45%
Voxtral-Mini7.1%12.3%
Parakeet6.8%9.9%

Qwen3-ASR 批处理表现得非常强,切到流式后词错率几乎翻倍。因为大部分 ASR 模型的训练数据都是完整句子,喂 2.4 秒一段的碎片,前后文一断注意力机制就乱了。

结论:选模型不能只看排行榜,得看真实场景。


真正的赢家:英伟达 Nemotron 缓存感知架构

Nemotron-0.6B 最牛的地方是 缓存感知(cache-aware)架构,天生为流式识别设计:

  1. 把音频切成固定长度小块(每块 0.56 秒,70 帧)
  2. 每次推理时记住前面 5.6 秒的历史信息(左上下文)
  3. 顺便"偷看"未来 0.56 秒音频(右上下文)
  4. 算完当前块,把缓存传给下一块

像听人说话一样——不是孤立地听每个字,而是边听边脑补,记得前几句说啥(左历史),偶尔等说完一个词的尾音再下结论(右展望)。

结果:从批处理切到流式,准确率几乎没掉——8.03% → 8.20%,仅退化 0.17 个百分点。


压缩三招

1. 拆模型

把 Nemotron 拆成三块独立优化:

  • Encoder(编码器):处理音频特征
  • Decoder(解码器):生成文字 token
  • Joiner(连接器):融合两者输出

每块针对性量化,不会一刀切伤准确率。

2. int4-k-quant 量化(最关键一招)

普通 int4 量化是简单"四舍五入"把 FP32 权重砍到 4 比特,损失很大。k-quant 按权重重要性加权重建——重要的层(注意力 Q/K/V)保留更高精度,不重要的(FFN 中间层)狠狠压缩。

类比:普通量化把所有像素压成低分辨率,k-quant 把人脸保留高清、背景模糊处理。

3. 混合精度

  • Encoder:int4-k-quant(压缩比最高)
  • Decoder:int8(保持生成质量)
  • Joiner:FP16(融合精度敏感)

最终:2.47G → 670M,体积减 73%。


最终成绩单

指标数值
体积压缩73%(2.47G → 670M)
平均词错率(WER)8.20%
相比 FP32 退化0.17 个百分点
CPU 实时倍速
算法延迟0.56 秒

CPU 上跑得比实时快 6 倍——低端笔记本都能流畅跑。WER 8.20% 已接近云端商用 ASR 水平。方案已在微软 Foundry-Local 开源,下载就能在笔记本上跑实时语音识别,不要钱、不联网、不传数据。


判断

端侧 ASR 不是"未来可期",是"现在就能用"。云端 ASR 厂商的护城河该填了。端侧语音应用的窗口期才刚刚打开。