Whisper.cpp 离线语音识别实战指南
Whisper.cpp 作为 OpenAI Whisper 模型的 C/C++ 移植版本,提供了一套高性能的离线语音识别解决方案。其核心优势在于纯 C/C++ 实现,无外部依赖,能在多种平台上高效运行。
技术特点
在实际项目中,我们通常关注以下几点:
- 跨平台能力:从 macOS、iOS 到 Android、Linux,甚至 WebAssembly 和 Windows 均支持良好。树莓派和 Docker 容器也能稳定运行。
- 硬件加速:针对 Apple Silicon 深度优化,支持 ARM NEON、Accelerate、Metal 和 Core ML。NVIDIA GPU 可通过 CUDA 加速,Vulkan 接口也得到支持。
- 资源效率:运行时零内存分配,适合嵌入式设备和移动端集成。
构建与部署
本地搭建环境并不复杂,但需注意依赖管理。首先克隆仓库并下载模型文件:
git clone https://github.com/ggerganov/whisper.cpp
cd whisper.cpp
sh ./models/download-ggml-model.sh base.en
编译时根据目标平台调整参数。例如在 Release 模式下构建:
cmake -B build
cmake --build build --config Release
执行命令行工具进行识别:
./build/bin/whisper-cli -f samples/jfk.wav
模型选择与量化
不同场景对精度和体积有不同要求。官方提供了从 tiny 到 large 的多种规格:
| 模型规格 | 磁盘占用 | 内存需求 |
|---|---|---|
| tiny.en | 75MB | 273MB |
| base.en | 142MB | 388MB |
| small.en | 466MB | 852MB |
| medium | 1.5GB | 2.1GB |
| large | 2.9GB | 3.9GB |
若需进一步压缩体积,可使用整数量化技术。将模型转换为 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

