Whisper.cpp C++语音识别:四步跑通本地离线语音转文字
【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp
Whisper.cpp 语音识别是 OpenAI Whisper 语音模型的纯 C/C++ 移植。卖点就一个字:本地。模型下载后全程不联网,音频与结果不出机器。跨平台:Mac、Linux、Windows、Android 都能直接用。
为什么选这个 C++ 移植
- 纯 C/C++ 实现、零依赖,不用配 Python 环境,编译完直接跑
- 完全离线推理:音频不上传任何云服务,隐私合规场景首选
- 多语言支持:一个模型覆盖多种语言,
-l参数切换 - 格式兼容广:配合 ffmpeg 可把 mp3、flac、ogg 都转成 whisper-cli 需要的 16k 单声道 WAV
🎒 开工前环境自检
| 项目 | 要求 |
|---|---|
| 编译器标准 | C++11(GCC / Clang / MSVC) |
| 内存 | 至少 2GB 空闲;medium 档约需 2.1GB |
| 音频格式 | 16-bit WAV,其它格式用 ffmpeg 转换 |
从克隆到首次转录,四步走完
- 克隆仓库并进入目录:
git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp && cd whisper.cpp- 拉一个最小的模型验证:
bash models/download-ggml-model.sh tiny.en- 一条 make 完成编译:
make- 跑仓库自带的 JFK 示例音频:
./build/bin/whisper-cli -m models/ggml-tiny.en.bin -f samples/jfk.wav屏幕上打出 "I ASKED FOR A CUP OF COFFEE",就成了。
🧭 模型档位怎么选
档位越大精度越高但越慢,先看磁盘和内存再定(数据来自官方 README):
| 档位 | 磁盘 | 内存 | 精度 | 速度 | 适用场景 |
|---|---|---|---|---|---|
| tiny | 75 MiB | ~273 MB | 基础 | 最快 | 快速验证、低配机器 |
| base | 142 MiB | ~388 MB | 中等 | 快 | 日常转录 |
| small | 466 MiB | ~852 MB | 较好 | 中 | 多语言内容 |
| medium | 1.5 GiB | ~2.1 GB | 高 | 慢 | 专业场景 |
| large | 2.9 GiB | ~3.9 GB | 最高 | 最慢 | 追求极致准确率 |
🛠 三个实战场景
- 单文件转录:whisper-cli 只吃 16-bit WAV,先转 mp3:
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav- 批量处理:把一堆 wav 用 for 循环逐个喂给 whisper-cli,加
-otxt,每个音频各生成一个文本文件。 - 性能调优:
-t <线程数>拉满并行;Apple Silicon 上可开 Metal 后端把推理丢给 GPU;NVIDIA 卡走 CUDA 构建。
⚠️ 避坑清单
- 编译报链接错误 → 工具链不全,Linux 先装 build-essential 和 cmake
- 模型下载超时 → 手动拿到 ggml 模型文件,放进
models/目录 - 转写不准 → 换更大档位(如 medium),或检查音频清晰度
- 音频不是 16-bit WAV → 用 ffmpeg 转 16k 单声道 pcm_s16le
- 运行提示找不到文件 → 核对
-m传的路径是否真实存在
从 CLI 开始
主入口是 whisper-cli 示例,核心接口定义在 include/whisper.h;想多要几个音频样本,make samples一次拉齐。
【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考