whisper.cpp CUDA 加速指南:3 步编译跑通 GPU 推理,提速 3~7 倍
2026/8/30 13:21:10 网站建设 项目流程

whisper.cpp CUDA 加速指南:3 步编译跑通 GPU 推理,提速 3~7 倍

【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp

whisper.cpp 是 OpenAI Whisper 的 C/C++ 移植,纯 CMake 构建、无第三方依赖,支持在 NVIDIA 显卡上用 CUDA 加速语音识别。照本指南操作,从编译到出第一条转写文本只需 3 步,识别耗时可缩短到 CPU 方案的三分之一甚至更少,一次完成 whisper.cpp 语音识别 GPU 部署。

先看结果:CPU 版和 GPU 版差多少

这一节回答"值不值得折腾"。以 base 模型转写 samples/jfk.wav(约 11 秒音频)为参照,不同配置下的实测耗时大致如下:

计算配置转写耗时相对 CPU 的速度显存占用(base 模型)
纯 CPU,-t 4约 11 秒1 倍(基线)
CUDA FP32约 3 秒3~4 倍约 400 MB
CUDA FP16,-t 4约 1.5 秒6~7 倍约 400 MB

耗时随音频时长线性放大:10 分钟会议录音在 CUDA FP16 下约 1 分半转写完,CPU 单核则接近 10 分钟。模型越大差距越明显,large 级别(约 3.9 GB 显存)上 GPU 优势可达 10 倍量级。

开工前的三个检查

这节帮你在编译前排除掉绝大多数环境问题,避免踩编译坑。

  • NVIDIA 显卡 + 驱动:敲nvidia-smi,应看到显卡型号和驱动版本号。计算能力要求 ≥ 3.5(GTX 10 系及之后全满足),Turing(RTX 20 系)及之后才建议开 FP16。
  • CUDA Toolkit:敲nvcc --version,能打印版本即可。注意 CMake 找的是 toolkit 而不是驱动;装完若提示找不到,把bin目录加进PATH
  • C++17 编译器:Linux 用g++ --version,建议 GCC 9+;MSVC 需 VS2019 及以上。

三步跑通:从克隆到出转写文本

这节只保留你必须亲手敲的命令,每步做完都有可验证的输出。

第 1 步:拿代码。

git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp

完成后目录里应能看到CMakeLists.txtsamples/jfk.wavmodels/

第 2 步:带 CUDA 编译。

cmake -B build -DGGML_CUDA=1 cmake --build build -j --config Release

构建日志末尾应出现whisper-cli等目标生成成功;编译产物在build/bin/,其中就含 examples/cli/ 对应的命令行工具。

第 3 步:下载模型并转写示例音频。

bash models/download-ggml-model.sh base.en ./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav

运行输出里,末尾的system_info行会标注CUDA = 1——看到它,说明 GPU 后端确实生效了,此时你会读到 JFK 演讲的转写文本,耗时在 base 模型上约 1~3 秒。

调参手册:常用参数与推荐值

这节把高频参数一次讲清,调参不用翻源码。

参数作用推荐值何时需要调它
-tCPU 侧线程数1~4CUDA 版只用于 Mel 特征等前后处理,开太多反而拖慢
batch-size一次送入编码器的音频块数显存 ≥ 8 GB 用 32,4~6 GB 用 16显存吃紧报 OOM 时先降它
精度编译期决定,FP32 / FP16Turing 及之后开 FP16追求极限速度且显卡支持
模型选择决定显存下限4 GB 卡跑 base.en显存装不下 medium / large 时
-p并行进程数1单卡多任务队列时再考虑

最影响提速的是 batch-size 和 FP16 精度:前者决定 GPU 算力利用率,后者让矩阵乘法走 Tensor Core,吞吐直接翻倍。两者都不改变识别准确率,只改耗时。

出错了先看这里:常见报错速查

这节覆盖编译期到运行期的高频故障,每条给"现象 → 原因 → 动作"。

  • CMake 报找不到 CUDA toolkit → 系统未装 toolkit 或路径没进 PATH → 装好 CUDA 后重跑cmake -B build -DGGML_CUDA=1
  • nvcc 报 unsupported GNU target / 架构不支持 → 卡太老,计算能力低于 toolkit 下限 → 换 Vulkan 后端或降级 toolkit
  • 运行报 out of memory → 模型加 KV 缓存超出显存 → batch-size 减半,或换 tiny.en(约 273 MB)、对 medium 以上模型做量化
  • whisper-cli 报 failed to open file → 输入不是 16-bit WAV → 先用 ffmpeg 转:ffmpeg -i in.mp3 -ar 16000 -ac 1 -c:a pcm_s16le out.wav

量化命令在build/bin/quantize,例如对 base.en 做 Q5_0:./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0,之后把-m指向新文件即可。

按显卡选方案:显存定配置

这节按三档显卡给明确配置,直接照抄。

  • 高端(RTX 4090 / A100,24 GB+):开 FP16,batch-size 32,不量化,medium / large 随便跑,追求最低延迟。
  • 中端(RTX 3060 / RTX 4070,8~12 GB):开 FP16,batch-size 16;跑 medium 时上 Q5_0 量化,显存从约 2.1 GB 降到 1.5 GB 内。
  • 入门(GTX 1650 / RTX 3050,4~6 GB):FP16 开但 batch-size 降到 8;只跑 base.en 或 tiny.en 的量化版,先保证装得下再谈速度。

量化能同时省显存和带宽,对入门卡收益最大,代价是极小的准确率损失,日常转写基本无感。

它为什么快:算力和开销各去了哪

编码器里的特征提取、矩阵乘与注意力全部由 CUDA 自定义内核和 cuBLAS 搬到 GPU 上算,源码在 ggml/src/ggml-cuda/;FP16 再让矩阵乘法走 Tensor Core,吞吐翻倍。开销侧则靠两个手段:batch-size 把一段音频切块一次性喂给编码器,摊薄内核启动次数;权重与 KV 缓存常驻显存,省去逐块在主机内存和显存之间搬运。计算集中、搬运变少,所以快。

行动清单

  1. 用一条真实音频测出 CPU 版耗时基线。
  2. 重编译开 FP16,对比同一音频的耗时差。
  3. 跑一遍完整录音,核对准确率是否达标。
  4. 显存紧张就换量化模型,用quantize工具现场生成。

下一步:挑你手头一条 5 分钟以上的真实录音,先测 CPU 基线,再开 FP16 复测,把两组秒数记下来——这个数字就是你后面调参的参照物。

【免费下载链接】whisper.cppPort of OpenAI's Whisper model in C/C++项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询