如何开启 whisper.cpp CUDA 加速:从编译、选模型到跑通样例的完整指南
2026/8/22 14:07:22 网站建设 项目流程

如何开启 whisper.cpp CUDA 加速:从编译、选模型到跑通样例的完整指南

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

如果你的长音频转录一直卡在 CPU 上,whisper.cpp CUDA 加速可以把识别计算交给 NVIDIA 显卡。本文讲清楚四件事:判断要不要上 GPU、编译出 GPU 版本、按显存选模型、显存不够怎么办。适合手里有一张 NVIDIA 卡、想批量或实时转写音频的用户。

先花 30 秒判断:你的场景值不值得上 GPU

结论先说:只有当 CPU 确实扛不住、且显卡是 NVIDIA 时,GPU 加速才值得折腾。对照下表自查:

检查项上 GPU不必上 GPU
单次音频时长30 分钟以上的长录音、批量文件几秒到几分钟的短音频
是否实时直播字幕、会议转写等对延迟敏感离线批处理、可排队执行
CPU 占用转录时 CPU 打满、其他任务卡顿转录时 CPU 还有余量
显卡品牌NVIDIA(CUDA 只支持 N 卡)AMD/核显(可另看 Vulkan 方案)

四项里命中三条"上 GPU",再往下读;否则 CPU 版本够用,编译还更省事。

三步跑通第一次 GPU 转录

三步走完,你能听到 GPU 参与计算的第一次转录结果。

第一步:确认环境。下面两条命令分别验证 CUDA 编译器和驱动是否正常:

nvcc --version nvidia-smi

nvidia-smi应显示你的显卡型号。若提示命令不存在,先装 CUDA Toolkit 和匹配的 NVIDIA 驱动。

第二步:带着 CUDA 开关编译。-DGGML_CUDA=1是 whisper.cpp 开启 GPU 支持的唯一必需选项:

cmake -B build -DGGML_CUDA=1 cmake --build build --config Release -j$(nproc)

编译耗时较长,取决于机器核数。成功后可查 ggml/src/ggml-cuda/ 目录确认 CUDA 内核确实参与了构建。

第三步:下载模型并转录仓库自带的样例。先用项目脚本拉一个 base.en 模型,再跑 jfk.wav:

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

输出里出现 "INFO: model loaded" 且结尾打印出 "And so my fellow Americans..." 这段文字,就说明链路通了。注意 whisper-cli 目前只收 16-bit WAV,其他格式请先转码。

按显存选模型:各档位对照表

模型大小直接决定显存下限。whisper.cpp 的模型按 tiny 到 large-v3 五档递进,下表是各档文件体积与显存建议(模型文件加载后还需额外开销,故留了余量):

档位文件体积建议显存点评
tiny / tiny.en75 MiB2 GB 起精度明显偏弱,只建议用来验证环境
base / base.en142 MiB4 GB 起速度最快的一档,英文短内容够用
small / small.en466 MiB4~6 GB精度与速度的平衡点,多语言场景的默认选择
medium / medium.en1.5 GiB8 GB 起专业级精度,会议、讲座类长音频
large-v32.9 GiB12 GB 起最高精度,显存 8 GB 的卡建议用其 q5_0 量化版(1.1 GiB)

默认推荐:base.en(纯英文)或 small(多语言)。两档在 4~6 GB 显存的卡上都能跑,精度损失对日常转写几乎无感,后面还有量化手段可补。

想要更快:三个进阶动作

动作一:量化模型。量化用更低的比特数存权重,模型变小、加载和读取都更快,代价是轻微精度下降。项目自带 quantize 工具,把 fp32 模型压成 q5_0:

./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0

以 large-v3 为例,从 2.9 GiB 压到 1.1 GiB,体积减少约 62%,速度通常有 10%~30% 提升,精度损失肉眼难辨。

动作二:调推理参数。-t控制 CPU 侧线程数,-b控制批处理大小,长音频可加大 batch 提高吞吐,代价是显存占用上升:

./build/bin/whisper-cli -m models/ggml-small.en.bin -f samples/jfk.wav -t 8 -b 512

所有参数用./build/bin/whisper-cli -h查看,不需要背。

动作三:显存不够时分级处理。顺序是:换量化版模型 → 换更小档位 → 把长音频切段逐段处理。量化优先,因为它几乎不动精度;切段是最后手段,但能救急。

卡住了:症状对照处理表

遇到报错先对号入座,多数问题出在编译开关和显存两处:

症状可能原因处理
cmake 报找不到 CUDAnvcc 不在 PATH,或未装 CUDA Toolkitwhich nvcc,缺则补环境变量
编译通过但运行报 CUDA error驱动与 CUDA 版本不匹配nvidia-smi看驱动支持的最高 CUDA 版本
CUDA out of memory模型太大-q5_0量化模型或更小档位
跑得慢、GPU 几乎没用编译时漏了 CUDA 开关-DGGML_CUDA=1重新配置再编译
模型加载失败/乱码模型文件下载不完整按 models 目录 README 里的 SHA 校验

用数据说话:基准数字意味着什么

在 RTX 2060(8 GB 显存)上对 20 秒的 jfk.wav 做基准测试,各阶段耗时(毫秒):

模型编码解码批处理后处理
tiny12.50.90.30.02
base24.11.30.40.03
small74.72.90.80.07
medium200.76.51.80.17

三个解读:一是时间几乎全在"编码"阶段,解码和后处理可以忽略,优化方向也就明确了;二是模型每上一档,编码耗时大约翻 2~4 倍,选档时要对得起你的硬件;三是 200 毫秒处理 20 秒音频,意味着 GPU 跑 medium 模型接近实时,长音频不再需要等。想要自己复现,用 examples/bench/ 目录下的 bench 工具即可,仓库里 scripts/bench-all-gg.txt 存了多卡型的完整数据可作参照。

上生产前必须落实的两件事

容器化:用带 CUDA 的官方基础镜像,把编译和模型下载都固化进去,避免换机器就踩环境坑。关键几行:

FROM nvidia/cuda:11.8.0-devel-ubuntu22.04 # 仓库克隆与 cmake -DGGML_CUDA=1 编译步骤略

监控:生产环境至少要有 GPU 利用率与显存两个指标,最简单的做法是定时采样:

watch -n 1 nvidia-smi

显存长期贴顶就该换量化模型,利用率长期低于 20% 则说明 batch 或并发没调好。

资源清单

  • CUDA 内核源码:ggml/src/ggml-cuda/,想理解加速原理从这里入手
  • 示例工具集:examples/,含 cli、bench、quantize、server 等
  • 模型下载脚本:models/download-ggml-model.sh,模型体积与 SHA 见 models/README.md
  • 多硬件基准数据:scripts/bench-all-gg.txt
  • 参数速查:直接运行./build/bin/whisper-cli -h

今天就能做的三件事:

  1. nvidia-smi,确认驱动和显存,决定你能用的模型上限
  2. 按本文第二步编译一次 GPU 版本,用 jfk.wav 验证链路
  3. 拿一段 5 分钟的真实音频,分别用 base.en 和 small 各跑一遍,自己量出速度差再定档

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

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

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

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

立即咨询