当前位置: 首页 > news >正文

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=1cmake 阶段开启 cuBLAS + 自定义 CUDA kernel 编译,默认关闭必设,否则整篇白搭
-t NCPU 线程数,默认min(4, 核心数)4~8,GPU 模式下调大无收益
-l LANG音频语言,默认en中文音频传zh
-mggml 模型文件路径入门用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),仅供参考

http://www.cnnetsun.cn/news/4304084.html

相关文章:

  • 60G高清纹理Mod详解:黑暗之魂2画质升级与龙祭坛跑图指南
  • 无订阅AI生图与AI生视频:从模型原理到工程落地
  • ESP32上实现LLM思考过程可视化:用Brainscope调试微型语言模型
  • LlamaIndex 安装与快速上手指南:3条路线让私有文档接入大模型问答
  • 可持久化并查集:一片森林为何只需一个根?
  • trackerslist:BT 下载没节点?每天自动更新的公共 Tracker 列表配置指南
  • 网易Java实习生笔试题深度拆解:HashMap、并发与JVM实战
  • LangChain自定义工具失灵?拆解ReAct循环定位问题
  • 用Common Lisp实现LLM推理引擎:AVX2加速与多线程实战
  • 网络延迟与资源消耗的取舍
  • 软件定义汽车核心:车规级存储架构与设计实践
  • LX Music 桌面版:免费多源音乐聚合播放器完整使用指南
  • Twenty 内存持续增长时,如何用 Chrome DevTools 定位可疑对象
  • 为什么你的 YOLO11 RTSP 实时检测总是延迟飙升?从缓冲帧到容器资源的一份完整优化指南
  • STM32L4 UART DMA碰撞问题详解:原理、配置与排查实战
  • 算法服务故障复盘应留下什么
  • 如何将 Windows 容器占用从 15GB 压到 2.5GB:Windows X Lite 轻量化部署实战
  • 3 个内置技能搭起 AI 自动化测试闭环:claude-code-best-practice 使用指南
  • 树莓派5上YOLOv8人员检测实战:基于OpenCV DNN与ONNX的轻量部署
  • Fooocus 免费 AI 绘图:3 分钟出第一张图
  • Rclone 使用指南:5 分钟从安装到自动化,搞定多云存储备份与挂载
  • Nuxt 预加载优化完整指南:5 步把首屏跳转时间压到 1.5 秒内
  • Vorssaint文本片段教程:输入一个词展开完整地址,支持日期变量
  • Magisk Android 无伤 Root 与系统级定制完整指南
  • LLM长期记忆架构实验:向量检索、摘要压缩与混合记忆方案对比
  • Vibe Coding实战:用Claude Code与Codex CLI开启AI协作开发
  • LX Music 免费桌面播放器:五大音源聚合搜索,一个窗口搞定听歌到囤歌
  • 3分钟上手 RuView:不用摄像头做 WiFi 人体姿态追踪的完整指南
  • 5步用熟OBS Studio:从第一次录屏到开播的快速指南
  • 无屏AI硬件“甜甜圈”解析:从语音交互到嵌入式工程实践