Canary vs Canary-Qwen:transcribe.cpp 两大 NVIDIA 模型家族完整横向对比指南
【免费下载链接】transcribe.cppggml speech-to-text inference for 16+ model families项目地址: https://gitcode.com/GitHub_Trending/tr/transcribe.cpp
transcribe.cpp 是一个基于 ggml 的 C++ 语音转文字(speech-to-text)离线推理引擎,支持 16+ 个模型家族。其中Canary与Canary-Qwen是 NVIDIA 出品的两大热门家族:一个走"编码器-解码器 + 多语言翻译"路线,一个走"音频-大语言模型(Audio-LLM)"路线。本文通过准确率、速度、体积、许可证四个维度的实测数据,帮你 3 分钟选对模型 🎯
两大 Canary 家族是什么?
两者共享同一个"FastConformer 音频编码器"血统,但架构走向完全不同:
| Canary 家族 | Canary-Qwen 2.5B | |
|---|---|---|
| 架构模式 | 多任务 AED:FastConformer 编码器 + Transformer 解码器 | SALM(音频增强语言模型):FastConformer 编码器 +Qwen3-1.7B 因果语言模型 |
| 工作方式 | 编码器出特征 → 解码器逐词生成 | 音频帧"注入"到 LLM 输入序列,由大模型直接"写出"转写文本 |
| 代表变体 | canary-1b、canary-1b-v2、canary-1b-flash、canary-180m-flash | canary-qwen-2.5b(2.53B 参数) |
| 支持语言 | 4 种(英/德/西/法)或25 种欧洲语言 | 仅英语 |
| 附加能力 | ✅ 支持语音翻译(如英语音频 → 德语文本) | ❌ 仅 ASR,无翻译 |
| 输入上限 | 约6.7 分钟/次 | 约54 分钟/次 |
| 许可证 | 原版 1B 为 CC-BY-NC-4.0(非商用),v2/flash 为 CC-BY-4.0 | CC-BY-4.0(可商用) |
一个有趣的血缘关系:Canary-Qwen 的编码器逐字节初始化自canary-1b-flash的 FastConformer,相当于"把 1B Flash 的耳朵,接上了 Qwen3 大模型的嘴"。
准确率对比:WER 越低越好 📊
在 LibriSpeech test-clean(2620 条英文语音)上的词错率(WER),Q8_0 量化档位:
| 模型 | 参数量 | WER (Q8_0) | Q8_0 体积 |
|---|---|---|---|
canary-1b | 1B | 1.55% | 1.16 GB |
canary-1b-flash | 890M | 1.62% | 1.05 GB |
canary-qwen-2.5b | 2.53B | 1.63% | 2.80 GB |
canary-1b-v2 | 980M | 1.91% | 1.14 GB |
canary-180m-flash | 189M | 1.93% | 218 MB |
几个值得注意的结论:
- 单看英文转写,原版
canary-1b反而比 2.5B 的 Canary-Qwen 略优(1.55% vs 1.63%),且文件小一半多; - Canary-Qwen 的六个量化档位(BF16 → Q4_K_M)WER全部稳定在 1.63%,量化几乎零损失;
- 多语言场景(如德语、西语)只能选 Canary 家族——FLEURS 测试中
canary-1b德语 WER 6.45%、法语 7.44%。
完整量化矩阵与逐语言数据见 catalog/canary-1b.json 和 catalog/canary-qwen-2.5b.json。
速度对比:谁更快?⚡
以 jfk.wav(11 秒语音)、Q8_0 量化、3 次迭代平均的实测延迟:
| 机器 / 后端 | canary-1b | canary-1b-v2 | canary-qwen-2.5b |
|---|---|---|---|
| Apple M4 Max · Metal | 207 ms(51.7× 实时) | 105 ms(104.7× 实时) | 229 ms(48.1× 实时) |
| Apple M4 Max · CPU | 426 ms | 415 ms | 1015 ms |
| AMD Ryzen 7 4750U · CPU | 1395 ms | 1150 ms | 3871 ms |
规律很清晰:
- 同平台下,Canary 家族比 Canary-Qwen 快约 2 倍——解码端只是一个小 Transformer,而 Canary-Qwen 每步都要跑完整的 Qwen3 LLM;
- 即便是 2.5B 的 Canary-Qwen,在 M4 Max 上处理 11 秒音频也只要 0.23 秒,离线场景绰绰有余;
- 追求极限低延迟,选
canary-1b-v2(8 层浅解码器);追求小体积跑在树莓派级别设备,选 218 MB 的canary-180m-flash。
如何选择:一张决策表 🧭
| 你的需求 | 推荐模型 |
|---|---|
| 多语言(25 种欧洲语言)转写 | canary-1b-v2 |
| 英/德/西/法 四语 + 语音翻译 | canary-1b-flash |
| 商用英文转写、单次输入可能超 10 分钟 | canary-qwen-2.5b(CC-BY-4.0 可商用) |
| 极致英文准确率 + 小体积 | canary-1b(注意非商用许可证) |
| 边缘设备 / 内存受限 | canary-180m-flash |
⚠️ 两个家族共同的限制:均不支持实时流式、说话人分离、自动语言检测(Canary 需显式传-l语言码)。
快速上手:3 条命令跑通
git clone https://gitcode.com/GitHub_Trending/tr/transcribe.cpp cd transcribe.cpp cmake -B build && cmake --build build仓库不附带模型文件,从handy-computer/<variant>-gguf对应的发布仓库下载 GGUF 后:
# Canary(可加 -l de 切德语,或 --task translate 做翻译) build/bin/transcribe-cli -m models/canary-1b-flash/canary-1b-flash-Q8_0.gguf samples/jfk.wav # Canary-Qwen(英语) build/bin/transcribe-cli -m models/canary-qwen-2.5b/canary-qwen-2.5b-Q8_0.gguf samples/jfk.wav音频需先转为 16 kHz 单声道 WAV:ffmpeg -i input.mp3 -ar 16000 -ac 1 output.wav
延伸阅读与源码路径
- 家族总览:docs/models/canary.md
- Canary-Qwen 模型卡(含下载与性能表):docs/models/canary-qwen-2.5b.md
- 各变体文档:docs/models/canary-1b.md、docs/models/canary-1b-v2.md、docs/models/canary-1b-flash.md、docs/models/canary-180m-flash.md
- 架构移植与 SALM 音频注入细节:docs/porting/families/canary_qwen.md
- C++ 架构实现:src/arch/canary/ 与 src/arch/canary_qwen/
- 模型转换脚本:scripts/convert-canary.py、scripts/convert-canary-qwen.py
- 数值验证容差配置:tests/tolerances/canary_qwen.json
一句话总结:要"多语言 + 翻译"选Canary,要"可商用的纯英文长音频转写"选Canary-Qwen——两个家族都能在离线场景以远超实时的速度交付接近人类水平的转写结果 ✅
【免费下载链接】transcribe.cppggml speech-to-text inference for 16+ model families项目地址: https://gitcode.com/GitHub_Trending/tr/transcribe.cpp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考