尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

用 CUDA 把 whisper.cpp 语音转录提速 8 倍:从 1 小时录音等 40 分钟到 5 分钟

用 CUDA 把 whisper.cpp 语音转录提速 8 倍:从 1 小时录音等 40 分钟到 5 分钟 用 CUDA 把 whisper.cpp 语音转录提速 8 倍从 1 小时录音等 40 分钟到 5 分钟【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp一份 1 小时的会议录音纯 CPU 转录要等 40 分钟。whisper.cpp 把 OpenAI Whisper 语音识别模型移植到 C/C配合 CUDA 加速后能把计算全部丢到 NVIDIA GPU 上同样这台机器时间能压到 5 分钟左右。这篇文章带你 10 分钟跑通第一个 GPU 推理再讲清怎么把性能拉满。 先搞清楚你到底需不需要 GPU这一节帮你 30 秒判断文章值不值得看不相关的可以直接走。你的机器上有 NVIDIA 独立显卡吗有 4GB 以上显存的 N 卡GTX 1650 及以后都可以才谈得上 CUDA 加速纯核显或 AMD 卡请换 Vulkan 方案本文不适用。你要处理的音频量超过 10 分钟吗转录一两段几秒的语音CPU 也就多等几秒开 GPU 没意义。你是在做批量或准实时转录吗播客、讲座、客服录音这类一次跑几十上百个文件的场景8 倍提速是实打实省下的机器时间和电费。你愿意装一次 CUDA 工具链吗整个配置过程只需要编译时加一个参数但前提是本机能访问 CUDA Toolkit。四个问题全是是往下看。 最小路径10 分钟跑通第一个 CUDA 语音识别推理这一节只做一件事让终端打印出转录结果。先克隆仓库git clone完成后目录下能看到CMakeLists.txt就对了git clone https://gitcode.com/GitHub_Trending/wh/whisper.cpp cd whisper.cpp编译时加上-DGGML_CUDA1这一个参数就是和纯 CPU 版的全部区别编译成功的标志是终端最后不再报错且build/bin/下生成了whisper-cli等可执行文件cmake -B build -DGGML_CUDA1 cmake --build build --config Release -j用仓库自带的脚本下载 base.en 模型下载完成会在当前目录看到ggml-base.en.bin文件sh ./models/download-ggml-model.sh base.en跑仓库自带的 JFK 音频样本。成功的标志是终端打印出 And so my fellow Americans... 这段文字且最后一行nvidia-smi显示显卡占用不为 0./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav 选模型显存决定你能跑什么模型越大识别越准但显存占用也越高。下面这张表是各档位的实际占用含推理开销按单条音频估模型档位显存占用约适用场景tiny1 GB快速验证管线精度最差base1.5 GB英语短语音、预算有限small3 GB中英混合日常转录性价比最高medium5 GB专业场景精度明显提升large10 GB多语种、低质量音频结论直接给显存 ≤ 6GB直接选 small别纠结显存 ≤ 4GB 选 base.en只支持英语时8GB 以上再考虑 medium。large 除非你有多语种或重度口音需求否则速度差太多不划算。⚡ 性能压榨量化模型与推理参数调优这一节解决已经能跑但还想更快更省显存的问题。量化模型一条命令换回一半显存不优化的代价fp16 全精度模型白白占用约 1 倍显存显存紧张时还容易直接爆掉。怎么优化用仓库编译出的 quantize 工具把模型转成 Q5_0 格式模型体积缩小约 60%推理速度提升约 20%转录质量几乎无感./build/bin/quantize models/ggml-base.en.bin models/ggml-base.en-q5_0.bin q5_0验证方式跑量化后的模型对比显存占用./build/bin/whisper-cli -m models/ggml-base.en-q5_0.bin -f samples/jfk.wav另开终端watch -n 1 nvidia-smi显存占用应从约 1.5GB 降到 1GB 以内。推理参数只改一个就够不优化的代价默认线程数可能和 CPU 核心数不匹配解码阶段白白等待。怎么优化GPU 跑时 CPU 只负责预处理和拷贝-t 4把 CPU 线程固定到 4 个是多数机器的甜点能省掉约 10% 的尾部延迟。验证方式同一份长音频分别跑-t 4和不加参数两次看输出里的real时间time命令即可测差值就是收益。️ 文档不会告诉你的两个坑坑一编译时漏了 CUDA 参数运行却毫无报错症状whisper-cli正常跑出了结果你以为是 GPU 在干活nvidia-smi一看显存占用是 0MB。根因whisper.cpp 找不到 CUDA 时会静默回退到 CPU不报错也不警告编译时必须显式带-DGGML_CUDA1老参数-DWHISPER_CUDA1会直接触发 FATAL_ERROR 失败见 CMakeLists.txt 里的废弃选项定义。解法删掉 build 目录重新配置一行命令cmake -B build -DGGML_CUDA1坑二音频格式不对报 failed to load audio data症状failed to load audio data from file: input.mp3根因whisper-cli目前只吃 16 位单声道 WAVmp3、44.1kHz 立体声 wav 都会在这里被拒掉README 里一句带过但第一次跑的人十个有八个栽在这。解法先用 ffmpeg 转成 16kHz 单声道 16 位再喂给它这条命令可以直接存进脚本ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le input.wav 从 Demo 到生产容器化与设备绑定这一节只讲生产环境真正会咬人的两件事篇幅很短。环境一致性别在服务器上裸装 CUDA 工具链用官方镜像FROM nvidia/cuda:11.8-devel-ubuntu22.04进去后只做三件事clone 仓库、cmake -B build -DGGML_CUDA1 cmake --build build、跑一次下载脚本把模型带进镜像。这样镜像构建一次任何机器上行为完全一致。GPU 设备绑定多卡机器上不想被调度到错误的卡启动前设一个环境变量就行CUDA_VISIBLE_DEVICES0 ./build/bin/whisper-cli -m models/ggml-base.en.bin -f samples/jfk.wav它的作用是只让进程看见 0 号卡绑错卡的问题从此消失。监控方面一条watch -n 1 nvidia-smi足够日志让程序自带统计行重定向到文件即可不需要额外搭东西。如果你能在这台机器上用nvidia-smi亲眼看到 whisper 运行时显卡占用超过 50%、且 1 小时录音 5 分钟内跑完说明 CUDA 链路已全部打通。接下来可以看看 CUDA 内核实现 里 fattn 和 mmv 是怎么写 CUDA 核的或者翻一翻 scripts/bench-all.sh 给所有模型档位跑一轮完整基准。【免费下载链接】whisper.cppPort of OpenAIs Whisper model in C/C项目地址: https://gitcode.com/GitHub_Trending/wh/whisper.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表