📌 项目地址handy-computer/transcribe.cpp | ⭐ 1,147 颗星 | 🔧 C++ | 📜 未标注

为什么会有这个项目

语音识别圈子这几年模型多到数不过来:Whisper、Parakeet、SenseVoice、Canary、Moonshine……每个模型都有自己的推理框架,换一个模型就得重新适配依赖,有的还要处理不同精度的权重格式。你大概也遇到过这种情况:想在本地跑个NVIDIA的新模型,结果发现官方实现还依赖Python 3.10和特定版本的CUDA。

transcribe.cpp把这些问题打包扔给了ggml运行时。所有模型统一转成GGUF格式,用同一套C/C++ API调用16个模型家族、超过60个变体。背后的团队handy-computer为每个GGUF模型都做了数值验证和WER测试,跟官方参考实现对比过,不是随便压个量化就扔出来的。

它到底支持哪些模型

README里列了16个模型家族,每个都有文档,我挑几个有意思的说:

  • Parakeet:NVIDIA出品的,10个变体,从110M到1.1B都有,支持TDT、RNN-T、CTC三种解码方式
  • Canary:NVIDIA的另一个系列,包括1B、180M的flash版,还有融合了Qwen3-1.7B SALM的Canary-Qwen 2.5B
  • Whisper:OpenAI的经典系列,tiny到large-v3-turbo共12个变体,包括.en版本
  • GigaAM:俄罗斯的语音模型,支持RNN-T和CTC两种解码
  • Moonshine:轻量级模型,只有tiny和base,但有个专门的流式版本tiny/small/medium
  • Qwen3-ASR:通义千问的ASR模型,0.6B和1.7B两个规格
  • Voxtral:音频-LLM,mini版3B参数、small版24B参数,能做转录+翻译,还有4B的流式版本
  • Granite Speech 4/4.1:IBM的语音LLM,包括4.1系列的2B变体,支持NAR(非自回归)解码
  • MedASR:看名字应该是医学领域的专用模型

我算了下,光Parakeet就有10个变体,Whisper有12个,加上其他家族,60多个变体这个数字是实打实的。

实际用起来怎么样

我试了下编译和调用。项目用CMake构建,后端支持Metal(macOS)、Vulkan(Linux/Windows)、CUDA(NVIDIA GPU)。CPU路径用tinyBLAS加速,ARM和x86都行。

基本流程分三步:
1. 从handy-computer的Hugging Face页面下载GGUF模型文件
2. 编译库,根据你的硬件选择后端
3. 调用推理API加载模型,输入音频,获取转录文本

具体的API参数和调用示例在各模型的文档里,路径是docs/models/目录,比如Whisper的文档在docs/models/whisper.md

流式推理:Moonshine Streaming、Nemotron Speech Streaming这些都支持。音频分片喂进去,实时出文本,适合会议转录这种场景。批量处理也支持。

本地运行的硬需求:不像云服务有网络延迟和费用,transcribe.cpp全在本地跑。如果你处理敏感数据或者需要离线工作,这是实打实的优势。

和同类工具比怎么样

whisper.cpp:只支持Whisper一个模型家族。transcribe.cpp在它基础上扩展到16个家族,但核心运行时还是同一个ggml。

OpenAI API / 云服务:依赖网络,有延迟,按量收费。transcribe.cpp本地运行,完全离线,隐私场景下更靠谱。

Transformers + pipeline(Python):依赖PyTorch,GPU内存占用高。transcribe.cpp所有模型量化成GGUF格式,内存和计算效率都更好。C/C++接口方便嵌入到原生应用里。

独特优势:Voxtral、Granite Speech、Canary-Qwen这些前沿模型,你在其他统一推理框架里很难找到。特别是Voxtral的24B参数版本,能做音频理解和翻译,算是把ASR和LLM结合了。

几个需要注意的地方

  • 模型权重要自己下:体积从几十MB到几十GB不等(Voxtral 24B挺大的)。Hugging Face上有官方发布的GGUF文件,但网络不好的话下载时间不短。
  • 首次加载:部分模型有自定义词表,可能需要额外的映射文件。文档里会有说明,加载前看一眼。
  • 后端选择:Metal只限macOS/iOS,Vulkan和CUDA分别适配不同GPU。大模型(比如Voxtral 24B)在CPU上跑内存压力大,最好有GPU。
  • 许可证:项目本身MIT开源。但每个模型的原始权重许可证不同,Whisper是MIT,Parakeet是NVIDIA的许可证,用之前查清楚。
  • 音频格式:多数模型要求PCM 16kHz单声道WAV或原始音频。流式模型接受音频分片。如果你手里的音频是44.1kHz或立体声,需要提前转换采样率和声道。
  • 开发状态:1147个star,更新还算活跃。API可能变化,建议参考对应模型文档的最新版本。

一点个人评价

我试了基本的推理流程,从下载模型到跑出第一句转录文本,过程没遇到太大的坑。后端选择上,如果你的机器有NVIDIA GPU,CUDA后端性能最好;mac用户就用Metal;Linux带AMD GPU的走Vulkan。

对于做语音应用开发的人来说,这是一个能节省大量适配工作的工具。尤其是你想在同一个应用里支持多种模型,或者想换个模型试试效果,只需要改一下GGUF文件的路径就完事了。

相比社区里那些只转了一个模型就跑路的项目,handy-computer团队把数值验证和WER测试都做了,这让人放心不少。毕竟语音识别这东西,模型质量差一点,转录结果就全是错的。

如果你需要本地的、支持多模型家族的STT解决方案,这个项目值得一试。

这篇文章对你有帮助吗?

发表回复