十分钟把语音识别搬上显卡:whisper.cpp CUDA 加速教程

发布时间:2026/8/30 13:42:23
十分钟把语音识别搬上显卡:whisper.cpp CUDA 加速教程 十分钟把语音识别搬上显卡whisper.cpp CUDA 加速教程【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp昨晚试着转录一段两小时的播客纯 CPU 跑 whisper-cli第二天早上起来还没跑完。转折其实很简单whisper.cpp 是 OpenAI Whisper 语音识别模型的 C/C 移植它对 NVIDIA GPU 有一等公民级别的支持开启 CUDA 做 GPU 加速后同样的音频几分钟就能转完精度也基本不掉。这篇就是带你从零走到看到显卡真的在干活的那一步。三步编译出 CUDA 版本动手前先花一分钟确认环境终端里跑一下nvidia-smi能看到显卡型号和显存就说明驱动正常再跑nvcc --version能看到 CUDA 工具链的版本说明编译器也装好了。两样齐了编译本身只有两行cmake -B build -DGGML_CUDA1 cmake --build build -j --config Release第一个参数就是全部关键-DGGML_CUDA1告诉构建系统把计算卸载到 GPU缺了它编译出来的就是纯 CPU 版本。如果没有仓库代码先克隆下来git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp跑通第一条最小命令模型不用自己训练或转换仓库带了现成的下载脚本一行拿到 ggml 格式的 base 英语模型./models/download-ggml-model.sh base.en然后用仓库自带的示例音频跑一条最小命令./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav几秒后终端会输出Ask not what your country can do for you...这段转录结果。想确认 GPU 真的参与了计算最简单的办法是换一段长一点的音频跑起来的同时另开一个终端看nvidia-smi你能看到 whisper-cli 进程挂在进程列表里显存占用和 GPU 利用率都会动。如果跑完了显存纹丝不动别急着怀疑显卡先往下翻到排查那节九成是编译时 CUDA 没开。模型按显存档位选whisper.cpp 的模型从 tiny 到 large 一共五档精度和速度大致正相关选哪个基本由你的显存决定。下表是实践中的粗档位供你直接对号入座模型显存档位适合的卡一句话点评tiny / tiny.en约 1 GB2 GB 以上随便跑通流程、快速验证首选base / base.en约 2 GB4 GB 卡速度和精度的平衡点small / small.en约 4 GB6 GB 以上日常转录够用推荐起步medium / medium.en约 6 GB8 GB 卡专业级精度large-v38 GB 以上12 GB 以上精度最高速度最慢两点小提醒一是带.en后缀的模型只支持英语如果你的音频是中文或混合语言选不带后缀的版本二是下载脚本的模型列表里本身就有一批量化版比如base.en-q5_1、small.en-q5_1显存紧张时可以直接下载量化版省去自己量化的步骤。显存不够时先翻这三个开关如果你的卡比表格推荐的档位小一圈或者报CUDA out of memory按这个顺序试每个开关都很便宜第一个开关是量化。把 fp16 的原始模型压成 q5_0 或 q8_0显存占用能明显下降q8_0 的精度损失几乎无感q5_0 能省得更多、偶尔会掉一点字./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0第二个开关是 flash attention。命令行加一个-fa参数即可开启注意力部分的显存开销会降下来长音频上尤其明显代价是可以忽略的耗时变化。第三个开关是把长音频切成小段。whisper-cli 支持偏移和时长两个参数-ot和-od你可以把两小时的音频按 10 分钟一段循环处理每段处理完显存就释放掉代价是需要自己写个循环拼结果但这是最稳的兜底方案。跑挂了两类高频问题按顺序排查编译了但 CUDA 其实没生效。先看运行时的nvidia-smi显存和利用率纹丝不动就是信号。再往下查两件事一是有没有装 CUDA 工具链nvcc --version给不出版本就要先装二是构建缓存里GGML_CUDA到底是不是 ON——去build/CMakeCache.txt里搜一下这个关键字就知道。确认没开后用-DGGML_CUDA1重新 configure 并完整重编一遍注意别复用旧的 build 目录删掉重来最省心。显存爆掉了CUDA out of memory。先看nvidia-smi里还剩多少空闲、被谁占着有时候只是浏览器或别的推理进程把显存吃光了关掉就好。空间确实不够再改换小一档或量化后的模型、开-fa、把音频切片分批跑就是上一节三个开关的顺序基本都能救回来。继续深挖的三个方向跑通之后想理解 GPU 上到底发生了什么可以直接读 ggml/src/ggml-cuda/ 里的 CUDA 内核实现注意力、矩阵乘都有对应的.cu文件配合编译选项比如 FP16 计算、cuBLAS 与自研内核的取舍看很有意思。想要完整应用而不是命令行examples/ 目录下有流式识别、HTTP 服务端、基准测试等现成示例每个都带自己的说明。想对照不同硬件的性能预期scripts/bench-all-gg.txt 里沉淀了历次的基准数据。社区层面仓库的 Discussions 和 issue 区是 CUDA 相关问题反馈最集中的地方遇到奇怪的现象先去搜一遍大概率有人踩过。【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考