离线语音识别 | 本地跑通 Whisper.cpp 只需 5 分钟
【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp
Whisper.cpp 是 OpenAI Whisper 语音识别模型的 C/C++ 移植版,一个完全无网络的推理引擎:不依赖云端、不收费、音频数据不出本机。三条命令就能跑起本地语音转文字。
为什么要把语音识别放到本地
把音频交给云端 API 有三个实际问题:数据落在第三方服务器,医疗、法务、企业内部等敏感场景无法过隐私这一关;车机、工厂、断网会议这类无网络环境,云端服务直接失效;API 按音频时长计费,批量转写时成本不可控。
Whisper.cpp 的定位一句话讲清:纯 C/C++、零第三方依赖,同一份代码能在 macOS、Linux、Windows、Android 上编译运行,甚至可以通过 WebAssembly 跑在浏览器里,让任意设备都能做离线语音识别。
🚀 5 分钟跑通第一个离线语音识别
第一步:环境准备
只需要一个编译器和 CMake(3.14 以上),不用安装任何额外依赖。克隆仓库:
git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp第二步:拉取与编译
Makefile 已经把「下载模型 + 编译 + 运行」的流程打包好了,一行命令全部完成:
make base.en它会下载 base.en 模型(约 142 MiB),编译整个项目,并对samples/里的示例音频跑一次推理。如果打算开启 CUDA、Vulkan 等加速,改用cmake -B build && cmake --build build --config Release手动编译,模型单独用 models/download-ggml-model.sh 脚本下载。
第三步:跑第一个样例
对仓库自带的肯尼迪演讲片段做转写:
./build/bin/whisper-cli -f samples/jfk.wav -m models/ggml-base.en.bin输出是一段 11 秒的经典台词,带时间戳逐行打印:"And so my fellow Americans, ask not what your country can do for you, ask what you can do for your country."
⚙️ 它凭什么快和稳
核心推理只有两个文件。模型逻辑全部在include/whisper.h和src/whisper.cpp里,张量层是自研的 ggml 库:权重、mel 滤波器、词表打包进一个.bin文件,推理过程零内存分配。相当于开会前把座位一次分好,会中不用排队、没有碎片,延迟稳定。
按架构做 SIMD 与 GPU 卸载。ggml 自带针对不同芯片的手写内核:Apple Silicon 走 NEON、Accelerate 和 Metal,x86 走 AVX/AVX2/AVX512,Android 有完整的 ARM 优化。Apple Silicon 上推理可以完全在 GPU 上跑,再配合 Core ML 放到神经引擎,官方标注比纯 CPU 快 3 倍以上。
整数量化。支持 q4_0、q5_0 等量化档,模型体积缩 60%~70%——large-v3 从 2.9 GiB 压到 1.1 GiB——部分硬件上计算量变小,推理速度也随之提升。
📦 按设备选模型档位
| 模型 | 磁盘体积 | 运行内存 | 适用场景 |
|---|---|---|---|
| tiny.en | 75 MiB | ~273 MB | 树莓派、嵌入式,实时优先 |
| base.en | 142 MiB | ~388 MB | 通用均衡,上手首选 |
| medium | 1.5 GiB | ~2.1 GB | 桌面/服务器,高精度多语种转写 |
带.en的模型只支持英语,需要多语种就用对应不带.en的版本(如medium)。追求更高精度还有 2.9 GiB 的large-v3,空间紧张可换 1.1 GiB 的large-v3-q5_0量化版。
🛠️ 踩坑记录与下一步
音频格式不对直接报错。whisper-cli只认 16 位、16kHz、单声道 WAV,其他格式先转一下:
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav线程数与硬件不匹配。用-t设成物理核数即可;树莓派这类弱硬件建议-t 3配 tiny 模型,甚至-t 1,比开满线程更稳。
模型太大装不下。编译完执行./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0做量化,运行时用-m指定量化后的文件即可。
跑通之后别只停留在命令行:examples 目录里 examples/stream 是麦克风实时转写,examples/command 是能执行语音指令的助手;想集成进自己的项目,Go、Java、Ruby 等语言绑定在 bindings/go 等目录里都有现成实现。
clone 下来跑一遍make base.en,5 分钟后你就有一条完全离线、无网络依赖的语音转写流水线。
【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考