Transcribe.cp 开源语音转录工具发布
速览
Transcribe.cp 是一款专注于语音转文字的开源项目,采用C++实现,旨在提供低延迟、高精度的转录能力。它支持多种音频输入格式,可离线运行,适合需要隐私保护的场景。该工具的出现为开发者提供了一个轻量级替代方案,有望推动语音识别技术的普及。
AI 深度解读
背景
当前,将自动语音识别(ASR)集成到跨平台应用中是一个令人头疼的问题。Handy 应用的作者兼维护者深有体会:市面上主流的本地推理方案只有 whisper.cpp 和 ONNX 两种选择。如果要在 Apple 设备上获得良好性能,可以引入 MLX,但这意味着要维护两套推理引擎,并分别为它们移植模型。ONNX 虽然能快速将模型支持带入 Handy,但仅靠 CPU 推理会留下大量性能浪费。此外,网络上还有一些声称支持多种模型的库,但作者不明、测试不明,让使用者怀疑它们是否会被长期维护、是否考虑过绑定(bindings)以便在真实桌面或移动应用中使用、是否只是演示代码、是否经过基准测试、是否比 ONNX 更快。正是这些痛点催生了 transcribe.cpp——作为 Handy 的维护者,作者需要一款可以信赖的库:下载文件就能运行推理,推理结果与参考实现一样准确,支持 GPU 加速以获得最佳性能,能轻松嵌入 Handy 而不是一个庞大的 PyTorch 库,并且能在 Mac、Windows、Linux 上工作。ggml 看起来是最有前途的方向,它拥有强大的社区和很好的分发能力。
核心内容
transcribe.cpp 是一个基于 ggml 的转录库,支持所有最新的转录模型。目前它已支持 16 个 ASR 模型家族(60+ 个模型),并且还在持续增加。所有发布在 handy-computer Hugging Face 组织下的模型都经过了数值验证和 WER 测试,确保与参考实现一致。该库在多个平台上都实现了加速。
加速支持:它通过 Vulkan、Metal、CUDA 和 TinyBLAS 实现加速。作者的首要目标之一是想在 Vulkan 上运行任何他想要的 ASR 模型,他认为这是任何本地推理应用的最低门槛。对于每个支持的模型,都有在 Ryzen 4750U(CPU + Vulkan,Fedora)以及 M4 Max 上运行的对应基准测试结果。
数值验证:为了确保推理的准确性,transcribe.cpp 对每个模型都进行了与参考实现的数值验证。此外,还进行了完整的 WER 扫描,确保参考实现输出的内容与 transcribe.cpp 输出相同。这意味着每个模型都经过了数千条语音片段的测试,结果与参考非常接近甚至完全相同。这些数据已发布在 transcribe.cpp 仓库以及 Hugging Face 上的每个模型页面中。
替换 whisper.cpp:transcribe.cpp 基本上可以即插即用地替换 whisper.cpp。主要原因是 Handy 原本使用 whisper.cpp,作者需要发布一个用 transcribe.cpp 替换它的更新。同时,它保持了与 whisper.cpp 中非常流行的 .bin 文件格式的兼容性,因此 transcribe.cpp 可以直接运行这些文件。虽然某些 whisper.cpp 的标记和功能尚未支持,但作者认为对于绝大多数用例,其 whisper 实现是可靠的,可以替换 whisper.cpp 且性能相当。
真正的分发能力:transcribe.cpp 虽然用 C/C++ 编写,但作者从一开始就考虑了语言绑定。他提供了 4 种语言的官方绑定:Python、JavaScript/TypeScript、Rust、ObjC/Swift。作者认为这些语言具有代表性,并欢迎其他人贡献绑定,前提是愿意承担维护责任。
流式转录与批量转录:支持流式转录和批量转录。
维护承诺:作者表示,因为 Handy 很受欢迎,他打算像维护 Handy 一样维护这个库,成为一个持续维护开源项目并为生态系统做贡献的人。
关键要点
- 广泛模型支持:支持 16 个 ASR 模型家族,超过 60 个模型,并且持续增加。
- 多平台 GPU 加速:通过 Vulkan、Metal、CUDA、TinyBLAS 加速,覆盖主流硬件(AMD、Apple、NVIDIA)。
- 数值验证与 WER 测试:每个模型都经过与参考实现的数值验证和完整 WER 测试,确保推理准确性。
- 即插即用替换 whisper.cpp:兼容 .bin 文件格式,可作为 whisper.cpp 的直接替代品。
- 官方语言绑定:提供 Python、JavaScript/TypeScript、Rust、ObjC/Swift 的官方绑定,便于集成到真实应用。
- 流式与批量转录:支持实时流式转录和批量处理。
- 低功耗高效运行:在 RK3566 等弱 CPU 上也能以快于实时的速度运行模型,功耗仅几瓦。
- 长期维护:作者承诺持续维护,与 Handy 的维护同步,并接受社区贡献。
意义与影响
transcribe.cpp 的目标是让本地运行的 ASR 变得更加容易。它证明了在大多数设备上,转录可以非常准确,无需将语音发送到云端。随着未来越来越多的推理发生在本地,分发故事(distribution story)变得至关重要。transcribe.cpp 虽然不能完全解决所有问题,但它是向前迈出的一小步。它让开发者能够快速、可靠地在桌面和移动应用中集成语音转录功能,同时确保了性能和准确性。该项目得到了 Mozilla AI 的 BiR 项目支持,以及 ggml 社区、Modal(提供用于 WER 测试和 CUDA 验证的信用额度)、Blacksmith(支持 CI/CD)和 Hugging Face(提供模型托管和社区支持)的帮助。这些合作表明,开源生态正在合力推动本地 AI 推理的普及,降低门槛,让更多应用能够受益于本地语音识别。
