2026 年起开源转录库 transcribe.cpp:支持多模型、多平台加速,助力本地语音转文本!
今天,我特别激动地要和大家分享 transcribe.cpp。它从 2026 年 4 月至今一直在发展。
transcribe.cpp 是基于 ggml 的转录库,支持所有最新转录模型。在 handy-computer Hugging Face 组织下发布的每个模型,都经过数值验证和字错率(WER)测试,确保与参考实现匹配,且在各平台能实现加速。
我是 Handy 的作者和维护者。这个库的诞生,源于我向众多用户分发跨平台语音转文本应用程序时遇到的难题。
这是 0.1.0 版本的库,意味着存在一些小问题,仅靠我一人难以全部发现!请大家将问题 反馈 给我,让我们一起解决!
开发动机
目前,用现有的自动语音识别(ASR)推理栈分发跨平台应用程序的体验糟糕。主要选择是 whisper.cpp 和 ONNX,为苹果设备引入 MLX 又需支持两种引擎,还得移植模型。我曾用 ONNX 为 Handy 快速增加模型支持,但仅用 CPU 时性能损失大。
市面上有些声称支持多种模型的库,作者不明且缺乏测试,带来的疑问比答案多。比如,这些库何时停止维护?开发者有无考虑提供绑定用于实际桌面或移动应用?这是不是演示代码?有无进行基准测试?是否比 ONNX 更快?
这些问题促使我开发 transcribe.cpp。作为 Handy 维护者,我需要值得信赖的库。希望下载文件运行推理,确保引擎中模型的推理结果与参考实现一样出色,最好能在 GPU 运行获最佳性能,能轻松嵌入 Handy,不是庞大的 PyTorch 库,且能在 Mac、Windows 和 Linux 上运行。而 ggml 是目前最好选择,有强大社区支持,分发表现出色。
它能带来什么?
你将获得快速、准确的推理引擎,支持多种模型:
- 支持 16 种 ASR 模型系列(60 多个模型),未来还会增加。
- 通过 Vulkan、Metal、CUDA 和 TinyBLAS 实现加速。
- 每个模型都经过数值验证和 WER 测试。
- 支持流式转录。
- 支持批量转录。
- 基本可替代 whisper.cpp。
- 维护者提供 4 种语言的绑定:Python、Javascript/Typescript、Rust、ObjC/Swift。
广泛的模型支持
我们打算支持更多先进转录模型。截至目前,已支持大多数公开可用的现代转录模型,一些暂未支持的很快会添加。
加速支持
我的首要目标之一是在 Vulkan 上运行任何想要的 ASR 模型,这是本地推理应用的基本要求。对于支持的每个模型,都在 Fedora 系统的 Ryzen 4750U(CPU + Vulkan)以及我的 M4 Max 上进行了基准测试。
数值验证
我希望确保 transcribe.cpp 中的推理结果准确,接近参考实现。因为使用从 Hugging Face 上获取的 .onnx 模型时,对推理准确性不确定。为确保推理正确,会将每个模型与参考实现进行数值验证,还会全面 WER 扫描,确保输出与参考实现一致。这意味着每个模型都经过数千次语音测试,输出结果与参考实现接近或相同。测试数据结果会发布在 transcribe.cpp 仓库,也会在 Hugging Face 上的每个模型页面展示。
可替代 whisper.cpp
transcribe.cpp 基本可替代 whisper.cpp。原因是 Handy 之前用 whisper.cpp,我需用 transcribe.cpp 更新替换。要与 whisper.cpp 中流行的 .bin 文件保持兼容性,这些文件随 Handy 发布,transcribe.cpp 能运行它们。不过,whisper.cpp 中的一些标志和功能,目前还不支持。但对绝大多数使用场景,我们的实现可靠,性能与 whisper.cpp 相当。
实际分发
从开始我就考虑语言绑定问题。虽库用 C/C++ 编写,但我需要 Rust 绑定。要广泛分发本地转录功能,至少需良好的官方绑定支持。我选了 4 种能代表该库使用场景的语言。当然,也欢迎其他人贡献绑定,前提是承担相应维护工作。
很多决策受 Handy 需求驱动。因 Handy 受欢迎,我打算像维护 Handy 一样维护这个库,继续维护开源项目,为生态系统做贡献。
如果没有 Handy,这个库不会存在,因为我不会遇到支持多种 ASR 模型的问题,也不了解人们对 ASR 的使用场景。我已尽力涵盖听到最多的使用场景,库目前可能有未处理情况,欢迎大家贡献!
让本地语音转文本更易实现
transcribe.cpp 的目标是让本地运行的 ASR 更简单。多数设备能准确转录,没必要将语音发送到云服务。RK3566 这样的设备,用性能较弱的 CPU,也能通过 transcribe.cpp 超实时运行模型,用最先进模型超实时转录,功耗仅需几瓦。
我认为,未来会有更多推理在本地进行,分发问题至关重要。为让更多应用本地运行推理,需让推理过程更简单。当然,transcribe.cpp 不能完全解决问题,但希望是向前的一小步,我自己也收获颇丰。
感恩之情
我非常感谢支持这个项目的人。
首先感谢 Mozilla AI、他们的 BiR 项目 以及 Mozilla AI 的 Davide。最初这只是我脑海中的难题,向他们求助,他们决定支持解决。那时,transcribe.cpp 还没具体概念,我在探索 Handy 中加速分发的方法。感谢他们的支持,让项目诞生。
还有 ggml。没有 ggml 及贡献者,项目不可能实现。感谢大家付出,我认为 ggml 在简化本地推理应用分发方面做得出色。
Modal 也帮了大忙。我向他们寻求支持,他们给了使用额度,用于 WER 测试,确保库在 CUDA 上正常工作。能验证工作正确性,对我帮助极大。
Blacksmith 为 transcribe.cpp 的部分持续集成/持续部署(CI/CD)提供支持。我求助后,他们立刻提供使用额度。CI/CD 对确保发布内容经过一定测试很重要。
Hugging Face 是本地 AI 社区的支柱,为 handy-computer 组织提供私有存储,让我可随意上传模型。
是否使用了 AI 辅助?
当然使用了。我认为,短短几个月内,仅靠个人用 ggml 从头开发这么大的引擎,没外部帮助不可能。不过,这里的文字是我自己说出来或敲出来的,没使用 AI 生成。