transcribe.cpp:一个 ggml 运行时跑完 16 个语音转文字模型家族
本地语音转文字的开发者,长期以来面对一个尴尬的现实:能用的推理栈屈指可数。OpenAI 的 Whisper 有官方 Python 实现和社区维护的 whisper.cpp,NVIDIA 的 Parakeet 和 Canary 必须跑在笨重的 NeMo PyTorch 框架上,想上 GPU 加速还要自己折腾 ONNX 转换。每换一个模型家族,就要重写一遍部署管线。

2026 年 7 月登上 Hacker News 首页头条(528 分、109 条讨论)的 transcribe.cpp 试图终结这种碎片化。它是一个基于 ggml 运行时的 C/C++ 语音转文字推理库,用一个统一接口跑 16 个模型家族、60 多个模型变体,覆盖 Metal、Vulkan、CUDA 三大 GPU 后端,外加 tinyBLAS 加速的 CPU 路径。项目由跨平台听写应用 Handy 的维护者 Sebastien Jones 发起,代码托管在 handy-computer/transcribe.cpp,MIT 协议开源。
它解决的核心痛点
transcribe.cpp 的作者在项目说明里直白地描述了现状:"用现在的 ASR 推理栈分发一个跨平台应用,体验非常糟糕。你基本上只有 whisper.cpp 和 ONNX 两个选择。" 这两个选择各有硬伤:whisper.cpp 只支持 Whisper 家族,Parakeet、Canary、Voxtral 这些后起之秀一律不沾;ONNX 路径虽然能覆盖更多模型,但只能跑 CPU,GPU 加速能力几乎为零,大量性能被浪费在桌面上。
对于需要把语音转文字能力嵌入桌面或移动应用的开发者,这意味着要在"支持的模型少"和"跑得慢"之间反复权衡。如果选择 MLX 在 Apple 设备上加速,又得维护两套引擎、做两次模型移植。市面上零星存在一些声称支持多模型的库,但作者指出它们大多出自不明作者之手,没有公开测试数据,无法判断推理结果是否可信,更无法判断项目能活多久。
transcribe.cpp 给出的答案是:一个有维护者背书、每个模型都经过数值验证和 WER 测试、可在三大平台 GPU 上加速、提供四种语言官方绑定的推理库。它本质上把 ggml 在 LLM 领域验证过的"一个运行时跑所有模型"的思路,搬到了 ASR 场景。
16 个模型家族,60+ 变体
transcribe.cpp 当前的模型覆盖范围远超同类项目。以下是它支持的模型家族清单:
| 家族 | 变体数 | 代表模型 | 定位 |
|---|---|---|---|
| Parakeet | 10 | TDT/RNN-T/CTC,110M–1.1B | 高吞吐英文,NVIDIA 开源旗舰 |
| Canary | 4 | canary-1b-flash 等 | 翻译 + 转写 |
| Canary-Qwen | 1 | canary-qwen-2.5b | FastConformer + Qwen3 LLM 解码 |
| Whisper | 12 | tiny 至 large-v3-turbo | 多语种经典 |
| GigaAM | 4 | v3 e2e-rnnt/ctc | 俄语专用 |
| Moonshine | 2 | tiny/base | 边缘设备轻量 |
| Moonshine Streaming | 3 | tiny/small/medium | 流式轻量 |
| Qwen3-ASR | 2 | 0.6B/1.7B | 通义系 |
| Cohere Transcribe | 1 | 03-2026 | Cohere 首款 ASR |
| SenseVoice | 1 | small | 阿里轻量多语种 |
| FunASR Nano | 2 | nano-2512/mlt-nano | 阿里下一代 |
| Nemotron Streaming | 2 | en-0.6b / 3.5 多语种 | 流式实时 |
| Voxtral | 2 | mini-3b / small-24b | Mistral 音频 LLM |
| Voxtral Realtime | 1 | mini-4b-realtime | 流式音频 LLM |
| Granite Speech | 4 | 4.0-1b / 4.1-2b | IBM 企业级 |
| MedASR | 1 | medasr | 医学听写专用 |
| MOSS Transcribe-Diarize | 1 | moss-transcribe | 中英 + 说话人分离 |
这份清单几乎囊括了 2026 年所有主流开源 ASR 模型。对开发者而言,这意味着不需要再为"Parakeet 跑在 NeMo、Whisper 跑在 whisper.cpp、Voxtral 跑在 transformers"这种割裂状态写胶水代码——同一个 transcribe-cli 二进制就能跑全部。
Parakeet 家族的 WER 实测
transcribe.cpp 最值得关注的工程实践,是它对每个模型都做了数值验证 + WER 全量测试。以 NVIDIA Parakeet 家族为例,以下是 transcribe.cpp 自己的 WER 管线在 LibriSpeech test-clean 上测出的结果(Q8_0 量化):
| 变体 | 解码器 | 参数量 | Q8_0 大小 | WER | 语言 |
|---|---|---|---|---|---|
| parakeet-tdt-1.1b | TDT | 1.1B | 1.27 GB | 1.38% | 英语 |
| parakeet-rnnt-1.1b | RNN-T | 1.1B | 1.27 GB | 1.46% | 英语 |
| parakeet-unified-en-0.6b | RNN-T | 0.6B | 731 MB | 1.60% | 英语 |
| parakeet-rnnt-0.6b | RNN-T | 0.6B | 730 MB | 1.62% | 英语 |
| parakeet-tdt-0.6b-v2 | TDT | 0.6B | 730 MB | 1.69% | 英语 |
| parakeet-tdt-0.6b-v3 | TDT | 0.6B | 740 MB | 1.94% | 25 欧洲语 |
| parakeet-ctc-1.1b | CTC | 1.1B | 1.26 GB | 1.85% | 英语 |
| parakeet-ctc-0.6b | CTC | 0.6B | 722 MB | 1.87% | 英语 |
| parakeet-tdt_ctc-1.1b | TDT+CTC | 1.1B | 1.27 GB | 1.87% | 英语 |
| parakeet-tdt_ctc-110m | TDT+CTC | 110M | 135 MB | 2.43% | 英语 |
从这组数据能看到几个结构性规律:
TDT 解码器的帧跳跃优势。 Parakeet 家族有三种解码器:TDT(带时长预测头的 transducer)、经典 RNN-T、CTC。TDT 的时长预测头让解码器可以跳过静音帧,因此同参数量下 TDT 的解码速度比 RNN-T 快,WER 也更低(1.1B 下 TDT 1.38% vs RNN-T 1.46%)。0.6B 档位上 RNN-T 反而略优于 TDT(1.62% vs 1.69%),但 TDT 的速度优势仍然成立。
CTC 的速度-精度权衡。 CTC 是单遍贪婪对齐,没有 transducer 的搜索循环,解码最快,但要付出约 0.2 个百分点的 WER 代价。对延迟敏感的流式场景,CTC 是合理选择。
110M 变体的边缘部署价值。 parakeet-tdt_ctc-110m 在 Q8_0 下只有 135 MB,WER 2.43%,是 Parakeet 家族最小的成员。它同时携带 TDT 和 CTC 两个解码头,运行时可按需切换——需要速度走 CTC,需要精度走 TDT。
跨平台 GPU 加速
transcribe.cpp 的加速后端覆盖了主流硬件:
- Metal(Apple Silicon,自动启用)
- Vulkan(Linux/Windows,需
libvulkan-dev) - CUDA(NVIDIA GPU,需 CUDA toolkit)
- tinyBLAS(Justine Tunney 的
llamafile_sgemm内核,默认开启,CPU 加速)
以 Parakeet 110M 模型为例,在 Apple Silicon GPU 上编码 10 秒音频的推理耗时约 27 毫秒,比同模型在 CPU 上快 96 倍。这个数字来自 modelslab 的对比测试,测量的是编码器前向推理,不含解码和后处理。
更宏观的对比来自 Open ASR Leaderboard 的公开数据。在 RTFx(实时倍率,越高越快)维度上,Parakeet-TDT-0.6B-v3 的吞吐量是 3332 倍实时,而 Whisper large-v3 只有 68 倍——也就是说,同样硬件上 Parakeet 的处理速度是 Whisper 的近 50 倍。这种差距的根源在于架构:Parakeet 的 FastConformer 编码器 + TDT 解码器在序列建模上比 Whisper 的 Encoder-Decoder + cross-attention 更高效。
libopenblas 是可选依赖,但作者强烈推荐安装——它能将宿主侧解码器加速 10-15 倍。不装的话构建会自动回退到标量路径。
WER 验证方法论
transcribe.cpp 区别于其他多模型 ASR 库的关键,是它把"每个模型的推理结果是否可信"当作工程问题来对待。作者在项目说明里点出了 ONNX 生态的信任危机:"Hugging Face 上的 .onnx 模型给我带来了巨大的不确定性,你无法判断它的推理是否准确。"
为消除这种不确定性,transcribe.cpp 对每个发布的模型执行两层验证:
- 数值验证:将 transcribe.cpp 的输出与参考实现(NVIDIA NeMo 或 Hugging Face transformers)逐张量比对,确保推理数值一致。
- WER 全量测试:对每个模型跑数千条语料的完整 WER 扫描,确认输出与参考实现一致或极度接近。测试结果发布在 GitHub 仓库和 Hugging Face 模型卡片上。
这套验证由 Modal 提供 GPU 算力支持,Blacksmith 提供 CI runner。Mozilla AI 的 BiR 项目在早期资助了这个方向的研究。对于生产环境的使用者,这意味着从 transcribe.cpp 拿到的转录文本,和从官方参考实现拿到的文本,在统计意义上没有差异。
用法与绑定
核心用法极简。构建后一行命令即可转录:
bashbuild/bin/transcribe-cli \ -m models/parakeet-tdt-0.6b-v2/parakeet-tdt-0.6b-v2-Q8_0.gguf \ samples/jfk.wav
输入要求是 16 kHz 单声道 WAV,其他格式用 ffmpeg 转换:
bashffmpeg -i input.mp3 -ar 16000 -ac 1 output.wav
官方绑定覆盖四种语言,由维护者同步更新:
| 语言 | 路径 |
|---|---|
| Python | bindings/python |
| TypeScript / JavaScript | bindings/typescript |
| Rust | bindings/rust/transcribe-cpp |
| Swift / ObjC | bindings/swift |
对于想从 whisper.cpp 迁移的项目,transcribe.cpp 设计为"基本可平替"——API 接口对齐,GGUF 模型格式一致,构建方式相同。差异在于 transcribe.cpp 的模型覆盖范围远大于 whisper.cpp(后者只支持 Whisper 家族)。
量化与模型分发
transcribe.cpp 沿用 llama.cpp 的量化体系。所有预构建 GGUF 模型托管在 Hugging Face 的 handy-computer 组织下,支持的量化预设包括:
F16(半精度浮点)Q8_0(8 位整数量化,WER 损失最小)Q6_K、Q5_K_M、Q4_K_M(K-量化,体积递减)
量化工具 transcribe-quantize 可从参考 GGUF 生成更小的模型:
bashbuild/bin/transcribe-quantize \ models/parakeet-tdt-0.6b-v2/parakeet-tdt-0.6b-v2-F32.gguf \ models/parakeet-tdt-0.6b-v2/parakeet-tdt-0.6b-v2-Q4_K_M.gguf \ --quant Q4_K_M
需要从源 checkpoint 转换时,转换器直接从 NVIDIA NeMo 的 .nemo 文件加载,无需手动导出中间格式:
bashuv run --project scripts/envs/parakeet \ scripts/convert-parakeet.py nvidia/parakeet-tdt-0.6b-v2
这条命令会写出 parakeet-tdt-0.6b-v2-F32.gguf,遵循 llama.cpp 风格的 <slug>-<QUANT>.gguf 命名约定。
与 whisper.cpp 和 ONNX 的定位差异
把 transcribe.cpp 放回 ASR 推理生态里看,三条路径的取舍很清晰:
| 维度 | whisper.cpp | ONNX Runtime | transcribe.cpp |
|---|---|---|---|
| 模型覆盖 | 仅 Whisper 家族 | 广(需手动转 ONNX) | 16 家族 60+ 变体 |
| GPU 加速 | Metal/CUDA/Vulkan | 主要 CPU | Metal/Vulkan/CUDA + tinyBLAS |
| 推理可信度 | 高(官方维护) | 低(ONNX 来源杂) | 高(数值验证 + WER 测试) |
| 嵌入难度 | 低 | 中 | 低(4 语言官方绑定) |
| 流式支持 | 有 | 取决于模型 | 有 |
whisper.cpp 仍然是只跑 Whisper 的可靠选择。ONNX 适合需要极致 CPU 覆盖但不在乎 GPU 加速的场景。transcribe.cpp 填补的是中间地带:需要跨多个模型家族、需要 GPU 加速、需要可验证的推理准确度。这个地带恰好是桌面听写应用、实时字幕工具、会议转写产品的刚需。
项目状态与社区反馈
transcribe.cpp 于 2026 年 4 月创建,目前 594 star、15 fork。作者明确标注这是 v0.1.0 版本,"还有一些我一个人发现不了的粗糙边缘",呼吁社区反馈 bug。项目得到了 Mozilla AI(BiR 项目)、Hugging Face(模型存储)、Modal(GPU 算力)、Blacksmith(CI runner)四家组织的赞助支持。
Hacker News 讨论区里,开发者们关注的几个方向颇有代表性。有人提出能否支持 IPA(国际音标)音素级转写,用于少数民族语言的语音记录——这类语言语料太少,永远不会有专门训练的模型,但音素级转写对语言学研究有价值。有人关心连续听写的低延迟工作流:打开文档开始说话,文字实时出现在光标处,而不是等录音结束再批量转写。还有人问能否转写视频音频(而非麦克风输入),用于语言学习场景。
这些需求反映出一个事实:ASR 的工程化需求远比"模型够准"复杂。延迟、连续性、多模型切换、跨平台分发,每一项都是产品化的硬门槛。transcribe.cpp 把推理这一层做扎实了,上层的应用创新才有地基。
对于正在评估本地 ASR 方案的开发者,transcribe.cpp 值得纳入选型清单的理由很具体:一个二进制跑 16 个模型家族,三大 GPU 后端全覆盖,每个模型的 WER 都有公开测试数据可查,MIT 协议无商用限制。在 ASR 模型百花齐放的 2026 年,这种统一推理层的需求一直存在,现在有了第一个像样的开源实现。
项目地址:github.com/handy-computer/transcribe.cpp 模型仓库:huggingface.co/handy-computer 作者应用:Handy 听写
- 华为开源 920 亿参数 openPangu-2.0-Flash 模型6/30/2026
- DeepSeek 联合北大开源 DSpark:半自回归推测解码,推理速度提升 57% 至 85%6/27/2026
- xAI 开源 Grok Build:Rust 编写的终端编程代理7/15/2026
- Linux登顶2026 CVE漏洞榜:内核维护者称这是好事7/4/2026
- Hallmark:一份写给AI编码助手的反AI味设计手册7/17/2026
- 27B 模型塞进手机:PrismML Bonsai 27B 把权重压到 1-bit7/18/2026
- B站在WAIC展出开源AI猫娘:能看懂屏幕、主动搭话的桌面伙伴7/18/2026
- Kimi K3 首登 DeepSWE v1.1:开源权重模型挤进前三7/18/2026
- Qwen3.8 发布:2.4T 参数、原生多模态、开放权重承诺7/19/2026
- GPT-5.6用一段十页提示词,关闭凸优化30年的复杂性缺口7/19/2026
- Moonshine Micro:80美分芯片跑完整语音流水线,500KB内存装下VAD+STT+TTS7/18/2026
- LingBot-Map:用前馈3D基础模型做流式重建,20FPS跑完一万帧7/18/2026
- F-Droid将Google ADV定性为恶意软件:40亿设备已被预装7/5/2026
- 字节跳动开源 Lance:3B 参数统一图像视频理解生成与编辑5/22/2026
- Kimi K2.7 Code 开源:代码基准全面提升,token 消耗降 30%6/12/2026
- MiniMax M3 发布:1M 上下文 + 原生多模态 + 前沿 Coding6/1/2026
- 小米发布 Xiaomi OneVL 一步式潜空间推理框架并全面开源5/13/2026
- TanStack npm 供应链攻击复盘:Pwn Request + 缓存投毒 + OIDC 内存提取的完整攻击链5/12/2026
- 小米开源 OmniVoice:646 语种零样本语音克隆 TTS5/7/2026
- GitHub 将于 6 月在旧金山总部举办 OpenClaw 社区交流活动5/5/2026
- PyPI 包 lightning 遭供应链攻击,800 万月下载量的 ML 框架暴露开发者凭证5/2/2026
- Qwen 开源高性能线性注意力内核库 FlashQLA,速度提升 2-3 倍4/28/2026
- Asahi Linux 突破 M3 芯片适配,但苹果的硬件围墙正在加高4/27/2026
- OpenClaw 发布 2026.4.24 版:默认模型切换为 DeepSeek V4 Flash4/26/2026
- DeepSeek 开源 TileKernels:面向 Blackwell 架构的高性能 LLM 算子库4/23/2026
- Hugging Face 最大开源仓库快被 AI 垃圾 PR 淹没了3/19/2026
- Vercel 确认安全事件,暗网卖家声称掌握核心访问权限4/19/2026
- Kimi K2.6 发布:开源模型在编码基准上全面追平闭源第一梯队4/20/2026
- Cherry Studio 被指违规遥测,禁用分析功能后仍连接服务器4/19/2026
- 百度开源 8B 文生图模型 ERNIE-Image:文字渲染达 SOTA,消费级显卡即可运行4/15/2026