whisper.cpp 配置 CUDA 加速,长音频语音转写跑到实时以上
whisper.cpp 配置 CUDA 加速,长音频语音转写跑到实时以上
【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp
用 CPU 转写一段一小时的会议录音,你会等上比音频本身还长的时间,风扇还会先开始尖叫。whisper.cpp 是 OpenAI Whisper 语音识别模型的纯 C/C++ 移植,启用 CUDA 加速后把最重的 encoder/decoder 计算放到 NVIDIA GPU 上执行。按本文操作,你能得到一个本地转写命令行工具:对仓库自带的 11 秒样例音频输出带时间戳的文本,并掌握一套可复用的提速测量方法。
🔩 三步跑通转写
第一步,拉代码并下载 base.en 模型(约 142 MiB):
git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp sh ./models/download-ggml-model.sh base.en第二步,开启 CUDA 编译(与默认编译只差一个参数):
cmake -B build -DGGML_CUDA=1 cmake --build build -j --config Release第三步,转写仓库自带的样例音频:
./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav看到逐句时间戳文本,且末尾出现whisper_print_timings各阶段耗时,即算跑通。
对照自查环境清单
最低档(跑 base.en 够用):
- NVIDIA 显卡,显存 4GB,Compute Capability 3.5 及以上
- 已安装 CUDA Toolkit,
nvcc -V能正常输出 - CMake 3.10+,GCC 7.5+
推荐档:
- 显存 8GB 以上,跑 medium 模型不爆显存
- CMake 3.14+ / GCC 10+,Release 构建由 CMake 默认启用
关键配置项说明
| 配置项 | 作用 | 建议值 |
|---|---|---|
-DGGML_CUDA=1 | cmake 阶段开启 cuBLAS + 自定义 CUDA kernel 编译,默认关闭 | 必设,否则整篇白搭 |
-t N | CPU 线程数,默认min(4, 核心数) | 4~8,GPU 模式下调大无收益 |
-l LANG | 音频语言,默认en | 中文音频传zh |
-m | ggml 模型文件路径 | 入门用models/ggml-base.en.bin |
按显存选模型
README 给出的模型加载内存:tiny 约 273 MB、base 约 388 MB、small 约 852 MB、medium 约 2.1 GB、large 约 3.9 GB。按显存对号入座:
- 4GB:tiny / base(.en),最稳
- 8GB:small / medium
- 12GB+:large;或量化版 large-v2-q5_0(磁盘 2.9 GiB 降到 1.1 GiB,精度损失很小)
语言取舍:.en后缀模型只支持英文但准确率更高,英文内容优先选它;多语言场景选不带后缀的版本。完整列表见 models/README.md。
排坑手册
- 症状:编译时未检测到 CUDA 或报
ggml-cuda.h相关错误 → 原因:CUDA Toolkit 未安装或 CMake 未找到 → 解法:先确认nvcc -V可用,再用-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda显式指定 - 症状:whisper-cli 加载音频即报错 → 原因:输入不是 16kHz 16bit 单声道 WAV → 解法:
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le out.wav - 症状:运行中 CUDA out of memory → 原因:模型超出显存 → 解法:换更小模型或量化版
- 症状:中文音频大段幻觉、输出英文 → 原因:
-l默认是en→ 解法:加-l zh - 症状:耗时与 CPU 版几乎一样 → 原因:编译时没开 CUDA → 解法:用
-DGGML_CUDA=1重新配置并清理旧 build 目录
怎么测量加速效果
看运行末尾whisper_print_timings里的两个指标:
total time除以音频时长得到实时倍数。例如 11 秒的 jfk.wav 若 total 约 3 秒,即约 3.7 倍实时encode time per layer:encoder 是 GPU 加速收益最大的环节,它的下降幅度比总耗时更能反映加速是否生效
要更客观地对比,用仓库自带的基准工具,它用随机音频只压测 encoder(条件:small.en 模型、4 线程):
./build/bin/whisper-bench -m models/ggml-small.en.bin -t 4分别编译开、关-DGGML_CUDA的两个版本,在同一台机器上跑同一条命令,对比encode time,差值就是你这台机器的真实加速比。
收尾
这套组合适合离线长音频转写、播客归档、实时字幕等需要本地算力兜底的场景。需要 HTTP 接口接多客户端时看 examples/server,想复现本文的测量方法看 examples/bench,C API 定义在 include/whisper.h。
【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
