Whisper.cpp的安装包只有79MB。对比之下,原版Whisper的PyTorch版本动辄几个G,还要配CUDA、配Python环境、配一堆依赖。这相当于把一辆SUV塞进了背包——不是折叠,是完整功能。

这个项目来自Georgi Gerganov,一个保加利亚程序员。他没有OpenAI的算力,没有全职团队,用C/C++重写了整个推理引擎。结果:同样的模型,速度提升3-4倍,内存占用降到1/10,还能在树莓派上跑。

为什么原版这么重

为什么原版这么重

OpenAI在2022年9月开源Whisper时,放出的官方实现基于PyTorch。这是当时最合理的选择——研究友好,生态成熟,GPU加速方便。

但PyTorch的"合理"是有代价的。它假设你在服务器上跑,有NVIDIA显卡,有几十G内存,有专门的运维人员配环境。一个conda环境能折腾一下午,版本冲突的报错长到可以当论文读。

Gerganov的观察很直接:语音识别本质是矩阵乘法,不需要那么多抽象层。他砍掉PyTorch,砍掉Python解释器,砍掉CUDA驱动,直接用C++调用计算核心。剩下的,就是模型权重和纯数学运算。

这个思路不算新。但Whisper.cpp的完成度让人意外——它支持全部5种模型尺寸(tiny/base/small/medium/large),支持GPU加速(CUDA/Metal/OpenCL),支持流式识别,甚至支持浏览器里的WebAssembly版本。

安装只需要三步

安装只需要三步

官网文档写得像故意气人:"You need three things." 然后列了Git、C++编译器、Whisper模型权重。

实测macOS:brew install cmake,git clone,make,完事。Linux类似。Windows稍微麻烦,但也就多装个MinGW。整个过程不超过10分钟,不需要配Python,不需要看conda的冲突日志。

模型下载是自动的。运行./download-ggml-model.sh tiny.en,脚本会从Hugging Face拉取量化后的权重。tiny版39MB,base版74MB,small版466MB——都是GGML格式,Gerganov自己设计的二进制结构,比PyTorch的pkl文件紧凑得多。

跑起来更离谱。M1 Mac上识别一段30秒音频,tiny模型耗时0.3秒。不是"接近实时",是"等你反应过来已经完了"。

谁在用,用在哪

谁在用,用在哪

Whisper.cpp的GitHub星标已经超过3万。贡献者列表里有OpenAI的员工,有苹果的工程师,有做助听器创业公司的,有给老电影加字幕的档案馆。

最意外的用户群是嵌入式开发者。树莓派4B能跑tiny模型,实时率(RTF)0.5左右——说一句话,等半句话的时间出结果。Jetson Nano、iPhone、甚至ESP32(外接PSRAM)都有人移植成功。

浏览器版本更激进。llama.cpp的同作者把Whisper编译成WebAssembly,配合WebGL加速,直接在Chrome里离线跑。Demo页面打开就能用,不需要上传音频到任何服务器。

这对隐私敏感场景是刚需。医疗转录、法律取证、企业内部会议——数据不出本地,比任何"我们承诺保护隐私"的条款都可靠。

量化带来的取舍

量化带来的取舍

轻量化的代价是精度。GGML格式默认用4-bit或5-bit量化,把32位浮点数压成4-5位整数。信息损失客观存在,但Whisper的冗余度比想象中高。

Gerganov的测试:large-v3模型从FP32量化到Q5_0,词错误率(WER)从4.2%升到4.7%。对于多数应用,0.5%的代价换10倍速度提升,这笔账不难算。

更激进的方案是distil-whisper,Hugging Face做的知识蒸馏版。small模型的尺寸,medium模型的精度,但依赖PyTorch生态。Whisper.cpp选了另一条路:保持模型结构不变,从推理引擎下手。

两条路没有高下。distil-whisper适合云部署,Whisper.cpp适合端侧。有意思的是,后者正在反哺前者——llama.cpp的GGUF格式已经成为Hugging Face的推荐格式,量化工具链被整个社区复用。

OpenAI的沉默与社区的噪音

OpenAI的沉默与社区的噪音

Whisper.cpp发布于2022年10月,距离OpenAI开源Whisper只隔了3周。Gerganov在issue里轻描淡写:"I was bored during the weekend."

OpenAI官方从未正式回应这个项目。但他们的工程师在私下场合承认,内部有人用Whisper.cpp做原型验证——启动快,调试方便,比等GPU集群排队高效得多。

这种"官方不背书,身体很诚实"的态度,在开源社区很常见。TensorFlow和PyTorch竞争时,Google内部也有人用PyTorch写论文。技术选型是技术选型,品牌站队是品牌站队,两码事。

更深层的变化是生态重心转移。Whisper.cpp证明了一件事:大模型的"大"可以分层。训练需要集群,推理未必。一个精心优化的C++程序,能在消费级硬件上跑出生产级延迟。

这个结论正在扩散。Llama.cpp、Stable Diffusion cpp、各种"xx.cpp"项目接连出现。它们共享同一套方法论:模型权重是数据,推理引擎是代码,两者之间不需要重型框架。

79MB的安装包,3万星标,无数衍生项目。如果你现在需要一个离线语音识别方案,会选PyTorch原版还是这个"周末无聊产物"?