Whisper.cpp 本地离线语音识别实战指南
Whisper.cpp 是 OpenAI Whisper 自动语音识别模型的 C/C++ 移植版本,提供了高性能的离线语音识别解决方案。这个项目最大的亮点在于完全用纯 C/C++ 实现,无需任何外部依赖,就能在各种平台上实现高效的语音转文字功能。
核心优势
在实际项目中选择工具时,Whisper.cpp 有几个关键特性值得注意:
跨平台兼容性 - 从 macOS、iOS 到 Android、Linux,甚至 WebAssembly 和 Windows 系统都能完美运行,连 Raspberry Pi 和 Docker 容器都支持。
极致性能优化 - 针对苹果 Silicon 芯片深度优化,支持 ARM NEON、Accelerate 框架、Metal 和 Core ML 等多种加速技术。
轻量级设计 - 运行时零内存分配,资源消耗极低,特别适合嵌入式设备和移动端应用。
环境构建与基础使用
本地环境准备其实并不复杂,只需几条命令即可跑通流程。建议先在终端克隆项目并下载模型文件:
git clone https://github.com/ggerganov/whisper.cpp
cd whisper.cpp
sh ./models/download-ggml-model.sh base.en
cmake -B build
cmake --build build --config Release
编译完成后,就可以通过 whisper-cli 处理音频文件了。例如转换一个样本录音:
./build/bin/whisper-cli -f samples/jfk.wav
模型规格与量化策略
Whisper.cpp 支持从 tiny 到 large 的多种模型规格,满足不同场景需求。根据硬件资源灵活选择至关重要:
- tiny.en - 75MB 磁盘,273MB 内存
- base.en - 142MB 磁盘,388MB 内存
- small.en - 466MB 磁盘,852MB 内存
- medium - 1.5GB 磁盘,2.1GB 内存
- large - 2.9GB 磁盘,3.9GB 内存
如果设备内存紧张,可以通过整数量化技术进一步减小模型体积。比如将 base.en 量化为 q5_0 格式:
./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0
./build/bin/whisper-cli -m models/ggml-base.en-q5_0.bin ./samples/gb0.wav
实时流处理与硬件加速
想要实现实时语音输入?stream 工具可以帮你搞定,这特别适合开发语音助手或实时字幕等应用场景:
./build/bin/stream -m ./models/ggml-base.en.bin -t 8 --step 500 --length 5000
根据你的硬件环境,开启不同的加速选项能显著提升速度。在配置 CMake 时加上对应参数即可:
苹果设备(CoreML):
cmake -B build -DWHISPER_COREML=1
NVIDIA 显卡(CUDA):
cmake -B build -DGGML_CUDA=1
Vulkan 支持:
cmake -B build -DGGML_VULKAN=1

