Skip to main content

Handy作者开源transcribe.cpp:60+模型,GPU加速,即插即用

在本地语音转录这件事上,开发者们长期面临一个尴尬的抉择:要么用whisper.cpp,要么用ONNX。想在苹果设备上跑?还得加上MLX,这意味着要维护两套引擎,每个模型都得单独移植。

7月19日,知名语音转文字应用Handy的作者兼维护者Sebjones,把他跨平台开发中遇到的坑,变成了一个新库——transcribe.cpp,并发布了v0.1.0版本。这是一个基于ggml的语音转录库,支持所有最新的转录模型。Hugging Face上handy-computer组织发布的每个模型,都经过了数值验证和词错误率(WER)测试,确保与官方参考实现一致。作者也坦言,这只是0.1.0版本,可能还有些他没发现的粗糙之处,欢迎社区提issue改进。

从痛点出发

transcribe.cpp的诞生,源于一系列令人沮丧的现实。Sebjones直言,用现有的ASR推理栈来分发跨平台应用,体验非常糟糕。虽然有些零散的库声称支持很多模型,但作者不明,测试也不清楚,留下一堆问号:这个库什么时候会停止更新?作者考虑过官方绑定吗?能在真实的桌面或移动应用里用吗?本质上是不是只是demo代码?做过基准测试吗?比ONNX快吗?

作为需要在Handy中集成语音功能的人,他想要一个库:能直接下载模型文件并运行推理,推理结果与参考实现一致;推理要在GPU上运行以获得最佳性能;要能轻松嵌入Handy,没有PyTorch那样庞大的框架负担;必须兼容Mac、Windows和Linux。深思熟虑后,ggml成了他的最佳选择——社区强大,分发能力出色。

能力一览

Image

在具体能力上,transcribe.cpp提供了快速准确的推理引擎,模型覆盖广泛。它支持16个ASR模型家族,总计超过60个模型,更多模型还在路上。加速方面,它通过Vulkan、Metal、CUDA和TinyBLAS四条路径将推理迁移到GPU。作者特别强调Vulkan是任何本地推理应用的基线,并在Fedora系统的Ryzen4750U(CPU加Vulkan)和自己的M4Max上,为每个支持的模型做了基准测试。

每个模型都经过了数值验证和完整的WER扫描——通过数千个音频片段进行打磨,输出与参考实现非常接近甚至完全一致。这些验证结果也公开在transcribe.cpp仓库和Hugging Face对应的模型页面上。功能上,它支持流式转录和批量转录,基本上可以作为whisper.cpp的即插即用替代品——Handy原本运行在whisper.cpp上,作者正用transcribe.cpp发布更新来替换它。为此,他特意保持了与Handy分发的whisper.cpp流行.bin文件的兼容性,让transcribe.cpp可以直接运行这些文件;虽然某些标志和功能尚未对齐,但其whisper实现对大多数用例来说足够可靠,性能也大致相当。

从第一天起就重视绑定

让这个库在真实产品中前景可期的是,它从第一天起就优先考虑了语言绑定。库本身用C/C++编写,作者不仅需要Rust绑定,也明白要广泛分发本地语音转录,必须有像样的官方绑定。他选择了四个最具代表性的语言:Python、JavaScript和TypeScript、Rust、以及Objective-C和Swift。他也欢迎社区贡献更多绑定,前提是愿意承担维护工作。这些决策很大程度上是由Handy的需求驱动的,而Handy的流行本身也给了作者持续维护这个库的动力。

目标:让本地ASR更易用

在作者看来,transcribe.cpp的最终目标是让本地ASR更容易使用。语音转录在大多数设备上都能达到很高的准确率,所以没必要把音频发送到云端。他举了一个硬核例子:在性能较弱的RK3566芯片上,transcribe.cpp可以在CPU上以超实时速度运行模型,使用最先进的模型时,功耗仅几瓦就能实现实时转录。他认为,未来由于各种原因,更多推理将在本地进行,分发问题变得极其重要。虽然transcribe.cpp远未完全解决这个问题,但它希望成为一小步。

在致谢中,作者特别感谢了几位贡献者:Mozilla AI及其BiR项目和工程师Davide,他们在项目还只是一个模糊想法时就决定支持;ggml及其贡献者,他们构成了整个项目的基础;Modal提供了WER测试和CUDA验证的计算积分;Blacksmith处理了部分CI/CD;Hugging Face既是本地AI社区的支柱,也为handy-computer组织提供了模型存储的私有空间。至于AI是否辅助了开发,作者回答得很直白:当然用了,但一个人不可能在几个月内仅用ggml从零创建这个规模的引擎。不过,这里呈现的文字都不是AI写的,全是他自己的口和手写出来的。

Key Points

  • 开源新库:Handy作者发布transcribe.cpp,基于ggml,支持60+转录模型
  • GPU加速:通过Vulkan、Metal、CUDA、TinyBLAS实现推理加速
  • 即插即用:兼容whisper.cpp的.bin文件,可作为直接替代
  • 多语言绑定:提供Python、JavaScript、Rust、Swift等官方绑定
  • 本地优先:目标让本地ASR更易用,无需云端处理