transcribe.cpp v0.1.0: 高性能、跨平台 ASR 推理引擎
transcribe.cpp v0.1.0: 高性能、跨平台 ASR 推理引擎
transcribe.cpp v0.1.0 为本地自动语音识别 (ASR) 提供统一的硬件加速引擎
transcribe.cpp v0.1.0 是一个基于 ggml 构建的 C/C++ 转录库,能够在多种模型上实现高性能、本地 ASR 推理。它的设计旨在通过提供一个支持多种硬件后端并拥有大量经过数值验证的模型库的单一引擎,来解决跨平台语音转文本应用的分发挑战。
核心技术能力
广泛的模型支持与数值验证
transcribe.cpp 支持 16 个不同 ASR 家族的 60 多个模型。为了确保可靠性,在 handy-computer Hugging Face 组织下发布的每个模型都已针对其参考实现进行了数值验证,并在数千个语句中进行了词错误率 (WER) 扫描。这一过程确保了本地推理输出与参考实现的准确度一致。
硬件加速
该库提供了广泛的加速支持,以确保在各种硬件配置上实现快速推理:
- Vulkan: 作为本地推理分发的基准目标。
- Metal: 针对 Apple Silicon (M-series chips) 进行了优化。
- CUDA: 针对 NVIDIA GPU 进行了优化。
- TinyBLAS: 用于基于 CPU 的加速。
已在 M4 Max 和 Fedora 上的 Ryzen 4750U (使用 CPU + Vulkan) 上进行了基准测试,以验证这些架构下的性能。
集成与分发
作为 whisper.cpp 的更灵活替代方案,transcribe.cpp 保持了与 whisper.cpp 使用的流行 .bin 文件的兼容性,使其在许多用例中成为近乎即插即用的替代品。为了便于集成到桌面和移动应用中,维护者提供了四种语言的一手绑定:
- Python
- JavaScript/TypeScript
- Rust
- Objective-C/Swift
设计动机:解决 ASR 分发问题
开发 transcribe.cpp 的动力来自于在不依赖碎片化的推理栈的情况下分发 Handy 应用的需求。作者指出,目前的现状往往迫使开发者在 whisper.cpp 和 ONNX 之间做出选择,或者为不同的平台管理单独的引擎(例如,Apple 设备的 MLX)。
通过利用 ggml,transcribe.cpp 旨在提供一个一致的分发方案,即单个库即可在 Mac、Windows 和 Linux 上运行推理,同时保持 GPU 加速并避免 PyTorch 等大型框架的开销。
社区洞察与技术考虑
社区讨论突出了该库的几个关键关注点和潜在的未来发展方向:
- 性能差异: 用户注意到后端之间存在显著的性能差异,一些用户观察到在特定环境下 Metal 比 Vulkan 快得多。
- Diarization 和 Speaker ID: 多个用户询问了向库中添加说话人分离 (diarization) 和说话人识别 (speaker identification) 的最简单方法,这表明了本地 STT 工作流中对这些功能的需求。
- 部署: 虽然存在 Python 绑定,但社区成员指出,它们尚未在 PyPI 上以包含依赖项的二进制 wheel 形式提供,不过这已计划在未来的版本中实现。
- ONNX 对比: 虽然作者强调了 ONNX 分发的痛苦,但一些用户指出 ONNX Runtime 可以分发到 NVIDIA GPU 上的 TensorRT,这表明选择 ggml 而非 ONNX 是出于对统一、轻量级跨平台体验的特定需求。
"I think as we look forward to the future, more inference will start happening locally for one reason or other. This brings the distribution story front and center. In order to have more applications running inference locally, we need to make running inference easier."
项目支持
transcribe.cpp v0.1.0 是在 Mozilla AI (通过 BiR program)、Modal (用于 CUDA WER 测试)、Blacksmith (用于 CI/CD) 和 Hugging Face (for model storage) 的支持下开发的。