Whisper.cpp 本地语音识别实战指南
OpenAI 的 Whisper 模型在 C/C++ 中的移植版本,为本地环境提供了高性能、低延迟的语音转文字能力。相比 Python 原版,C/C++ 实现显著降低了资源占用,特别适合 CPU 环境下的离线部署。
核心优势
- 完全离线运行:所有处理都在本地完成,无需联网
- 隐私安全保障:音频数据不会上传到云端服务器
- 多平台支持:Windows、macOS、Linux 全面兼容
- 丰富绑定接口:支持 Go、Java、JavaScript、Ruby 等多种语言调用
- 高效性能表现:优化后的底层代码带来更快的处理速度
环境搭建与编译
首先从官方仓库克隆项目源码。注意命令需要分步执行,确保目录结构正确。
git clone https://github.com/ggerganov/whisper.cpp
cd whisper.cpp
下载预训练模型
项目提供了多种规模的预训练模型,根据需求选择即可:
| 模型类型 | 文件大小 | 适用场景 | 识别精度 |
|---|---|---|---|
| tiny | ~75MB | 实时应用 | 基础水平 |
| base | ~140MB | 日常使用 | 良好水平 |
| small | ~480MB | 专业需求 | 优秀水平 |
| medium | ~1.5GB | 高要求场景 | 卓越水平 |
通常 base 模型在日常使用中表现最佳,兼顾速度与精度。
编译构建项目
使用 CMake 工具进行编译。建议创建独立的 build 目录以避免污染源码。
mkdir build && cd build
cmake ..
make -j4
这里 -j4 表示开启 4 个线程并行编译,可根据 CPU 核心数调整数值以提升效率。
功能实战
基础语音识别
最简单的使用方式是通过命令行工具直接转换音频文件。确保模型路径和音频文件路径正确。
./bin/whisper-cli -m models/ggml-base.en.bin samples/jfk.wav
实时语音转录
如果需要处理麦克风输入或实时流,可以使用 stream 示例。这展示了如何实时处理音频流并输出文本。
./examples/stream/stream -m models/ggml-base.en.bin
Web 应用集成
通过 WASM 版本,你可以在浏览器中直接运行语音识别功能,为网页应用添加语音交互能力,无需后端介入。

