Whisper.cpp 实战:CPU 也能跑的极致语音识别
OpenAI Whisper 的 C++ 高性能移植版。让你的 Mac 和树莓派也能实现实时语音转文字。
如果说 OpenAI Whisper 是语音识别领域的皇冠,那么 Whisper.cpp 就是把皇冠上的宝石扣下来,镶嵌到了每一个普通人的钥匙扣上。
Whisper 的官方实现依赖 PyTorch,极其吃显存且运行缓慢。而 Georgi Gerganov 大神开发的 whisper.cpp 完全用 C/C++ 重写,不依赖任何第三方库,甚至可以在 iPhone 和树莓派上流畅运行。
为什么选择 Whisper.cpp?
- 零依赖:不需要 PyTorch,不需要 Python,甚至不需要 GPU。
- 极致性能:利用 Apple Silicon 的 NEON 指令集和 AVX2 优化,M1 Mac 上只需 1 秒就能转录 1 分钟的音频。
- 跨平台:Linux, Mac, Windows, iOS, Android, WebAssembly… 只有你想不到,没有它跑不了。
安装指南 (macOS/Linux)
1. 克隆代码
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
2. 下载模型
Whisper.cpp 使用量化后的 ggml 模型格式。脚本会自动帮你转换和下载。
# 下载 base 英文模型 (约 140MB)
bash ./models/download-ggml-model.sh base.en
# 或者下载多语言版本 (支持中文)
bash ./models/download-ggml-model.sh small
3. 编译
make
没错,就是这么简单。编译完成后,你会在目录下看到一个 main 可执行文件。
实战:语音转文字
准备一个包含语音的 test.wav 文件(必须是 16kHz 采样率)。
# 运行转录
./main -m models/ggml-small.bin -f test.wav -l zh
参数详解:
-m: 指定模型文件。-f: 输入音频文件。-l zh: 指定语言为中文(如果不指定,它会自动检测,但指定后速度更快)。-otxt: 输出为 txt 文件(它还支持-ovtt字幕格式,-osrt字幕格式)。
进阶玩法:实时语音听写
Whisper.cpp 提供了一个 stream 工具,可以调用麦克风进行实时听写。
# 编译 stream 工具
make stream
# 启动实时听写
./stream -m models/ggml-small.bin -l zh --step 500 --length 5000
现在,对着麦克风说话,终端里就会实时蹦出文字!
技术原理:为什么这么快?
Whisper.cpp 的核心魔法在于 GGML 张量库(也是 llama.cpp 的核心)。
- 4-bit / 8-bit 量化:极大地减小了模型体积和内存带宽需求。
- SIMD 优化:针对 ARM NEON 和 x86 AVX2 进行了手写汇编级别的优化。
- 混合计算:在 Apple Silicon 上,它能混合使用 CPU 和 Neural Engine。
适用场景
- 播客字幕生成:一小时的播客,用 M2 Mac 转录只需要 1-2 分钟。
- 会议记录:配合实时流模式,打造完全隐私的会议纪要助手。
- 边缘计算:在树莓派监控设备上加上语音指令识别。
Whisper.cpp 重新定义了”端侧 AI”的可能性。它告诉我们:并不是所有 AI 都需要昂贵的 H100,优秀的代码优化同样是生产力。