09. 主流识别模型
上一篇讲的是所有识别模型共通的部分:特征、声学证据、解码约束和后处理。真正选型时,问题会具体得多:Whisper 能不能做实时字幕?SenseVoice 为什么快那么多?Qwen3-ASR 这类“大模型 ASR”比传统模型强在哪,又贵在哪?
这些差别大多来自一个问题:文字怎样从音频向量里生成出来。本篇先按这个问题把端到端模型分成四类,再看各类里的主流模型,最后讲榜单、幻觉、热词和许可证这几个选型时容易踩的点。模型信息核对到 2026 年 10 月。
四类结构
四类模型的前半段几乎一样:16 kHz 音频先变成 Fbank 特征,再由 Conformer、Zipformer、Transformer 一类的编码器变成一串音频向量,大约每 20—80 ms 一个。区别都在后半段。
CTC:每一帧自己判
CTC 在每个音频向量上独立输出一个 token,或者一个“空白”。比如“打开空调”可能被逐帧判成 打 打 _ 开 _ _ 空 调 调,合并重复、去掉空白后就是结果。
每一帧互不等待,所以解码可以并行,速度很快,只要编码器是流式的,整个模型就能流式。代价是它假设各帧之间条件独立:模型判“调”的时候,并不知道前面已经输出了“空”。语言上的连贯要靠编码器自己学到,或者在解码时加外部语言模型。SenseVoice-Small 就是这一路:只有编码器,输出层用 CTC,官方给出的数据是 10 秒音频约 70 ms 出结果。
Transducer:边读边判
Transducer(RNN-T 及其变体 TDT)在 CTC 的基础上加了一个预测网络,记住已经输出了哪些 token。联合网络每一步做一个决定:输出下一个 token,还是读入下一帧音频。
这让它既有语言上下文,又天然适合流式:音频来一帧就推进一帧,不需要等整句话结束。它也是热词最好加的结构,解码时可以在搜索路径上给热词加分。新一代 Kaldi 的 Zipformer、NVIDIA 的 Parakeet-TDT 都属于这一类,端侧流式识别大多从这里起步。
编码器-解码器:读完再写
注意力编码器-解码器(AED)先把整段音频编码完,再由解码器用交叉注意力反复读这段音频,像翻译一样逐个生成 token。Whisper、NVIDIA Canary 是代表。
能看到整段上下文,准确率高,还能顺带输出标点、语言标签和翻译。代价有两个:一是天然非流式,Whisper 每次处理固定的 30 秒窗口,不足的部分补静音;二是解码器是一个条件语言模型,音频证据弱的时候(静音、噪声、音乐)它会照着语言习惯“编”出一句话,这就是 ASR 的幻觉。
非自回归的 Paraformer 介于第一、三类之间:先用 CIF 模块预测这一段有几个字,再由解码器一次并行生成全部字。它保留了解码器对上下文的建模,又不用逐字等待,所以中文场景里长期是速度和准确率兼顾的选择。FunASR 也提供了分块流式的 Paraformer。
大模型路线:交给 LLM 写
最新的一类是“音频编码器 + 适配层 + 大语言模型”。编码器输出的音频向量被投影成 LLM 输入空间里的向量,和文字提示词拼在一起送进 LLM,由 LLM 生成转写结果。结构上和 多模态大模型 读图片是同一个思路,只是把图像编码器换成了音频编码器。
LLM 带来了大量语言知识:专有名词、中英混说、口语里的数字和语序,它都比传统解码器处理得更自然;上下文和热词可以直接写进提示词。代价也来自 LLM:参数从几亿涨到几十亿,首字延迟和显存都更高;幻觉风险和 LLM 本身一样,提示词里给的上下文还可能被它“过度采纳”。Qwen3-ASR、Fun-ASR、FireRedASR-LLM、GLM-ASR 都走这条路。
四类怎么对比
| 结构 | 能否流式 | 热词怎么加 | 典型问题 | 端侧部署 |
|---|---|---|---|---|
| CTC | 编码器流式即可 | 解码时加语言模型或词图 | 上下文弱,同音字靠后处理 | 最容易 |
| Transducer | 天然流式 | 搜索路径上直接加分,最成熟 | 训练显存大 | 主流选择 |
| 编码器-解码器 | 通常不能 | 前缀提示或后处理 | 静音和噪声上幻觉 | 中小模型可以 |
| 大模型路线 | 需要专门设计 | 写进提示词 | 慢、贵、幻觉、过度采纳提示 | 0.6B 级勉强,多数在服务器 |
主流模型速查
下表只列 2026 年 10 月仍有人在用的代表模型。规模取官方名义参数;大模型路线的权重文件往往比名字大,因为还包含音频编码器。
| 模型 | 机构与时间 | 结构 | 流式 | 语言 | 许可证 |
|---|---|---|---|---|---|
| Whisper large-v3 | OpenAI,2023-11 | 编码器-解码器,约 15.5 亿 | 否 | 约 100 种 | MIT(代码) |
| Whisper large-v3-turbo | OpenAI,2024-10 | 同上,解码器剪到 4 层,约 8.1 亿 | 否 | 同上,翻译能力变弱 | MIT |
| Paraformer | 阿里达摩院,论文 2022,FunASR 开源 2023 | 非自回归 + CIF | 有分块流式版 | 中文为主 | FunASR 模型许可 |
| SenseVoice-Small | 阿里 FunAudioLLM,2024-07 | 编码器 + CTC | 否 | 中、粤、英、日、韩 | FunASR 模型许可 |
| Fun-ASR-Nano-2512 | 阿里通义,2025-12 | 大模型路线 | 官方称支持低延迟 | 中文及方言、英、日 | Apache-2.0 |
| Qwen3-ASR 1.7B / 0.6B | 阿里通义千问,2026-01 | 大模型路线 | 同一模型支持流式和离线 | 30 种语言 + 22 种中文方言 | Apache-2.0 |
| FireRedASR2 AED / LLM | 小红书,2026-02 | 编码器-解码器 / 大模型路线 | 否 | 普通话、方言、英、中英混说 | Apache-2.0 |
| GLM-ASR-Nano-2512 | 智谱,2025-12 | 大模型路线,名义 15 亿 | 否 | 普通话、粤语、方言、英 | MIT |
| Dolphin | 海天瑞声与清华,2025-03;方言版 2026-05 | CTC 与注意力混合 | 方言版提供流式 | 40 种东方语言 + 22 种中文方言 | Apache-2.0 |
| Zipformer | 新一代 Kaldi,2023 | Transducer / CTC | 有流式和非流式 | 按训练配方 | Apache-2.0 |
| Parakeet-TDT-0.6B-v3 | NVIDIA,2025-08 | Transducer(TDT) | 否 | 25 种欧洲语言,不含中文 | CC-BY-4.0 |
| Canary-Qwen-2.5B | NVIDIA,2025-07 | 大模型路线 | 否 | 仅英文 | CC-BY-4.0 |
| Voxtral Mini 4B Realtime | Mistral,2026-02 | 大模型路线,流式 | 是 | 13 种 | Apache-2.0 |
| VibeVoice-ASR | 微软,2026-01 | 大模型路线,权重约 87 亿 | 否 | 多语言 | MIT |
| Moonshine Voice(v2) | Moonshine AI,2026-02 | 编码器-解码器,流式 | 是 | 英文为主 | MIT |
几个容易记错的地方:
- Qwen3-ASR 已经开源。2025 年先出的 Qwen3-ASR-Flash 只有 API;2026 年 1 月放出 1.7B 和 0.6B 的开源权重,另外配了一个 Qwen3-ForcedAligner-0.6B 专门给出时间戳,因为 LLM 直接生成的文字没有可靠的逐字时间。
- Fun-ASR 完整版只有 API,开源的是 Nano 版。
- NVIDIA 的模型大多不支持中文,许可证是要求署名的 CC-BY-4.0,不是 Apache。
- VibeVoice-ASR 一次吃下 60 分钟,在同一份输出里给出文字、说话人和时间戳。这类“转写 + 分离”一体的模型正在出现,但和下一篇讲的独立分离流水线相比,可控性和可替换性不同。
商用 API 里,OpenAI 的 gpt-4o-transcribe(2025-03)和带说话人标签的 gpt-4o-transcribe-diarize(2025-10)、Mistral 的 Voxtral Transcribe 2(2026-02)、字节的豆包语音识别(Seed-ASR 系列)都属于大模型路线。
中文场景怎么挑
按 08 篇的思路,先定运行模式和设备,再挑模型:
| 场景 | 起点 | 理由 |
|---|---|---|
| 端侧实时字幕、语音助手 | 流式 Zipformer 或流式 Paraformer | 天然流式,体积小,sherpa-onnx 直接支持 |
| 端侧短句命令、离线转写 | SenseVoice-Small | 非流式但极快,配合 VAD 能做到“说完即出” |
| 服务器上的会议、客服录音转写 | Paraformer、FireRedASR2-AED,或 Qwen3-ASR | 前两者稳、快;Qwen3-ASR 在专有名词、方言和中英混说上更强 |
| 方言 | Qwen3-ASR、Dolphin 方言版、FireRedASR2 | 都专门覆盖了中文方言,需按你的方言单独测 |
| 多语言文件 | Whisper large-v3 或 Qwen3-ASR | 语言覆盖广;Whisper 生态最成熟 |
| 大量业务术语 | 先试 Transducer + 热词,或大模型路线 + 上下文提示 | 两种热词机制都要同时测命中率和误命中率 |
表里只是验证起点。同一模型在不同录音条件下差距很大,最终要用自己的录音集,按 16 篇的口径算 CER。
榜单怎么看
最常被引用的是 Hugging Face 的 Open ASR Leaderboard。它同时报两个数:归一化后的 WER,以及 RTFx(每秒计算处理了多少秒音频,是 RTF 的倒数,越大越快)。
读这个榜要注意三点:
- 主榜是英文短音频。长音频和多语言是单独的分榜,中文能力几乎不体现。中文模型要看 AISHELL、WenetSpeech、各家方言测试集,或者干脆自己测。
- 准确率和速度要一起看。2025 年榜首多次由大模型路线(Canary-Qwen、Granite-Speech、Phi-4-multimodal)占据,Transducer 结构的 Parakeet-TDT-v2 也曾长期领先;大模型路线的 RTFx 通常比 Parakeet 低一到两个数量级。
- 公开测试集可能出现在训练数据里。榜单分数只能用来缩小候选范围。
幻觉:静音里冒出一句话
编码器-解码器和大模型路线都有一个条件语言模型在生成文字。音频里没有语音时,它也倾向于输出“最常见的一句话”,比如“谢谢观看”“请不吝点赞”,这些来自训练数据里视频字幕的结尾。CTC 和 Transducer 每一步都要从音频帧上找证据,这类问题少得多。
对策都在模型外面:
- 识别前先过 VAD,不把长静音和纯噪声段送进模型。参数见 05 篇。
- 打开模型自带的无语音判断(如 Whisper 的 no_speech 概率)并设阈值。
- 测试集里放静音、纯噪声、音乐片段,统计非空输出比例。微调会让这个问题变好或变坏,见模型训练系列的第 15 篇。
热词在不同结构里怎么加
| 结构 | 做法 | 特点 |
|---|---|---|
| Transducer | 把热词建成词图,搜索时给经过热词的路径加分 | 最成熟;sherpa-onnx 用 modified_beam_search 实现 |
| Paraformer | 专门的 SeACo-Paraformer 模型,用一个热词编码器影响输出 | 要换成带热词能力的模型版本 |
| CTC | 解码时融合外部语言模型或词图,或识别后按词表纠错 | 效果依赖语言模型和纠错规则 |
| 编码器-解码器 | 前缀提示(如 Whisper 的 initial_prompt),或识别后纠错 | 提示只是影响,不保证命中 |
| 大模型路线 | 把热词、领域、上一句话写进提示词 | 最灵活;但只是“建议”,模型可能不采纳,也可能把发音相近的普通词改成热词 |
不管哪种做法,都要同时统计命中率和误命中率。把热词召回放进生产服务后怎样隔离请求、怎样补召,见流式语音技术实践:共享热词召回。
许可证
模型许可证比代码许可证更容易被忽略:
- Apache-2.0、MIT:可以商用,保留声明即可。Qwen3-ASR、FireRedASR2、Zipformer、Moonshine 属于这一类。
- CC-BY-4.0:可以商用,但要按要求署名。NVIDIA 的 Parakeet、Canary 属于这一类。
- 项目自定的模型许可:FunASR 系列(Paraformer、SenseVoice)用自己的模型许可协议,商用前逐条读条款。
- 非商用(如 CC-BY-NC):只能研究使用。下一篇会遇到几个这样的说话人模型。
同一个模型的 Hugging Face 页面标签、GitHub 仓库和论文写的许可证可能不一致(Whisper large-v3 的模型卡标 Apache-2.0,代码仓库是 MIT),以发布方的正式声明为准,并在交付清单里记下版本。
总结
选识别模型,先看结构决定的硬约束:要不要流式、热词怎么加、能不能容忍幻觉、设备放不放得下;再在同一类里比较具体模型的语言覆盖和许可证;最后用自己的录音定胜负。大模型路线在中文专有名词、方言和中英混说上进步最明显,但它更慢、更贵,也需要更严格的静音和负例测试。
下一篇:10. 说话人识别与分离,回答“是谁在说”。
