ggml-org/whisper.cpp · 上手攻略
- 仓库:ggml-org/whisper.cpp
- 链接:https://github.com/ggml-org/whisper.cpp
- 分类:ai
- 作者:Jay
- 更新:2026-07-12
这是什么
whisper.cpp 是 OpenAI Whisper 自动语音识别(ASR)模型的纯 C/C++ 实现,不依赖任何第三方 ML 框架。相比 Python 原版,它可以脱离 Python 环境、在各类硬件上高效运行,从树莓派、手机到 GPU 服务器都能部署。截至 2026 年 7 月最新稳定版为 v1.9.1,Stars 超过 5.1 万,是目前最流行的本地语音识别方案之一。
解决什么问题
- 隐私安全:音频不上云,完全本地处理,适合医疗、法务、金融等敏感场景
- 硬件普适:支持 Mac(Apple Silicon Metal)、NVIDIA GPU(CUDA)、AMD GPU(ROCm)、x86(AVX)、ARM、CPU 等几乎所有主流硬件
- 高性能推理:整数量化支持(4-bit、5-bit 等),大幅降低内存占用
- 轻量嵌入:无外部依赖,可内嵌到各类应用(iOS App、Android 应用、物联网设备)
快速安装
方式一:源码编译(macOS / Linux / Windows 均适用)
# 克隆仓库
git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
# 下载 Whisper 模型(ggml 格式)
# 可选:tiny.en / base.en / small.en / medium.en / large-v3 等
bash ./models/download-ggml-model.sh base.en
# CMake 编译
cmake -B build
cmake --build build -j --config Release
# 转写示例音频
./build/bin/whisper-cli -f samples/jfk.wav
⚠️ 注意:whisper-cli 目前仅支持 16-bit WAV 文件。输入为 MP3、FLAC 等格式时需先转换:
bash ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav
方式二:macOS 一键上手
# 自动下载 base.en 模型并运行所有 samples/*.wav 示例文件
make base.en
方式三:Python bindings( pip 安装)
pip install whisper.cpp
核心用法
命令行转写
# 使用默认模型(需提前下载到 models/ 目录)
./build/bin/whisper-cli -m models/ggml-base.en.bin -f your_audio.wav
# 查看所有可用参数
./build/bin/whisper-cli -h
# 指定线程数(默认自动检测)
./build/bin/whisper-cli -m models/ggml-base.en.bin -f audio.wav -t 4
# 输出带时间戳的逐句字幕(SRT 格式)
./build/bin/whisper-cli -m models/ggml-base.en.bin -f audio.wav --output-srt
支持的模型规格与内存占用
| 模型 | 文件大小 | 内存占用 |
|---|---|---|
| tiny | 75 MiB | ~273 MB |
| base | 142 MiB | ~388 MB |
| small | 466 MiB | ~852 MB |
| medium | 1.5 GiB | ~2.1 GB |
| large-v3 | 2.9 GiB | ~3.9 GB |
💡 推荐起步:先用
base.en(英文模型,体积小、速度快),熟悉后再换small或medium提升准确率。
整数量化(减少内存占用)
# 编译量化工具
cmake -B build
cmake --build build -j --config Release
# 将已有 ggml 模型量化(以 base.en 为例)
./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 -f audio.wav
Apple Silicon(Mac)Metal GPU 加速
macOS 上默认通过 Metal 调用 GPU,无需特殊编译选项:
cmake -B build
cmake --build build -j --config Release
# 直接运行即可自动使用 Metal GPU
./build/bin/whisper-cli -m models/ggml-base.en.bin -f audio.wav
如需 Core ML 加速编码器(需 macOS 14+):
# 安装依赖
pip install ane_transformers openai-whisper coremltools
# 生成 Core ML 模型
bash ./models/generate-coreml-model.sh base.en
# 重新编译(启用 Core ML 支持)
cmake -B build -DWHISPER_COREML=1
cmake --build build -j --config Release
NVIDIA GPU 加速(CUDA)
cmake -B build -DGGML_CUDA=1
cmake --build build -j --config Release
./build/bin/whisper-cli -m models/ggml-base.en.bin -f audio.wav
Vulkan(跨厂商 GPU 支持)
cmake -B build -DGGML_VULKAN=1
cmake --build build -j --config Release
Docker 部署
# 使用官方容器镜像(已包含 CUDA 支持)
docker run --gpus all -v $(pwd):/workspace ghcr.io/ggml-org/whisper.cpp \
./build/bin/whisper-cli -m models/ggml-base.en.bin -f /workspace/audio.wav
典型适用场景
| 场景 | 推荐配置 |
|---|---|
| 实时语音转字幕(Mac / 手机) | base + Metal/Core ML,省电低温 |
| 服务器批量转写(长音频) | small/medium + CUDA,多线程 |
| 边缘设备 / 树莓派 | tiny + 量化,内存受限 |
| 隐私敏感录音处理 | 纯 CPU 运行,不走网络 |
| 视频字幕批量生成 | ffmpeg 预处理 + whisper-cli 批量脚本 |
坑与注意
- 输入格式限制:whisper-cli 只能读 16-bit WAV,必须先用 ffmpeg 转换
- 语言模型选择:英文音频用
*.en模型(体积更小、准确率更高),中文或 multilingual 场景用无后缀模型 - Core ML 首轮慢:ANE 编译模型到设备特定格式需要数分钟,之后正常运行
- CUDA 架构:RTX 5000 系列需加
-DCMAKE_CUDA_ARCHITECTURES="86"参数编译 - 中文支持:Whisper 本身支持近百种语言(含中文),但
base.en等英文模型无法识别中文,需下载 multilingual 模型如large-v3 - 量化精度损失:Q5_0 量化精度损失较小,但 Q4_0/Q4_1 可能导致少量读音相近字错误
与同类对比
| 方案 | 语言 | 依赖 | GPU 支持 | 量化支持 | 适合场景 |
|---|---|---|---|---|---|
| whisper.cpp(本文) | C/C++ | 无 | CUDA/Metal/Vulkan/ROCm | 完整 | 本地嵌入、跨平台 |
| faster-whisper | Python | PyTorch | CUDA | INT8/FP16 | 服务器快速部署 |
| whisper (OpenAI 原版) | Python | PyTorch/TensorFlow | CUDA | 有限 | 研究和快速原型 |
| Vosk | C++/Java | 无 | CPU only | 是 | 极致轻量嵌入式 |
一句话推荐结论
whisper.cpp 是目前最值得推荐的本地语音识别方案:纯 C/C++ 实现无需 Python 环境、主流硬件全覆盖(Mac/NVIDIA/AMD/Intel/ARM)、完整整数量化生态,隐私敏感场景和边缘部署的首选。