20分钟跑通 faster-whisper 的 Windows CUDA 加速:从驱动到第一句转写
2026/9/5 17:09:59 网站建设 项目流程

20分钟跑通 faster-whisper 的 Windows CUDA 加速:从驱动到第一句转写

【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper

一份两小时的会议录音,下班前要出文字稿;第二天还有十段访谈音频排队等着转写,而原版 Whisper 跑在 CPU 上根本等不起。faster-whisper 就是为这种场景做的——它用 CTranslate2 推理引擎重新实现了 Whisper 模型,在 Windows 上配合 CUDA 加速,同样精度下速度最高可到 4 倍,占用的显存反而更小。这篇文章带你完整走一遍 faster-whisper 的 Windows 部署路线:先把显卡驱动、CUDA 12 和 cuDNN 9 一次装对;再装上 faster-whisper,PyAV 这个音频解码依赖不需要你手动编译;最后几行代码跑出第一句转写,并用 compute_type 把速度调到最快。

整篇文章四步走:先让显卡跑起来;再把依赖装干净;然后跑通第一个转写脚本;最后看一张表把配置调到位。

让显卡跑起来:驱动、CUDA 12 与 cuDNN 9 一次装对

faster-whisper 底层是 ctranslate2 推理引擎,它的最新版只支持 CUDA 12,并且要求系统里能找到 cuBLAS 和 cuDNN 9 这两套 NVIDIA 库。Windows 上要做的其实只有三件事:驱动要新、CUDA 12 要装、cuDNN 9 要复制到 CUDA 目录。

先升级驱动

cuDNN 9 对驱动版本有硬性要求,老驱动会直接被拦在门外。用一条命令看版本:

# 右上角显示的版本号即驱动版本,545 以后与 cuDNN 9 完全兼容 nvidia-smi

版本太旧就先去 NVIDIA 官网把驱动升到最新,再往下走。

安装 CUDA 12 与 cuDNN 9

到 NVIDIA 官网下载 CUDA 12 的 Windows 安装包(注册账号即可),安装时选"自定义",只勾 CUDA 与 cuBLAS 相关条目,Visual Studio 集成等一律不勾。cuDNN 9 单独下载后解压,把binincludelib64三个目录里的文件分别拷进 CUDA 安装目录的对应目录:

# 将 cuDNN 9 的 DLL 与头文件拷入 CUDA 12 安装目录(路径按实际安装位置调整) $cuda = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.4" Copy-Item "$env:USERPROFILE\Downloads\cudnn-windows-x64-v9*\cuda\bin\*" "$cuda\bin\" -Recurse Copy-Item "$env:USERPROFILE\Downloads\cudnn-windows-x64-v9*\cuda\include\*" "$cuda\include\" -Recurse Copy-Item "$env:USERPROFILE\Downloads\cudnn-windows-x64-v9*\cuda\lib\x64\*" "$cuda\lib\x64\" -Recurse

拷完后,把$cuda\bin$cuda\libnvvp加进系统 PATH,重开一个终端让设置生效。

⚠️ 踩坑提示:后面加载模型时若报错提示找不到 cuBLAS 或 cuDNN,99% 是这两步没做干净。用where cudnn64_9.dll验证一下 DLL 是否真的能被找到。

跳过编译坑:PyAV 预编译包随 pip 一起落地

faster-whisper 解码音频不依赖系统里的 FFmpeg,而是用 Python 库 PyAV——它的 wheel 包里已经捆绑好了 FFmpeg 库。Windows 上 PyPI 提供的就是预编译 wheel,绝大多数情况下你什么都不用做,pip 会自动挑好匹配你 Python 版本的版本。

让 pip 一次装到位

python -m venv venv venv\Scripts\Activate.ps1 pip install -U pip pip install faster-whisper

这段命令创建独立虚拟环境并安装 faster-whisper,PyAV(包名 av)会作为依赖自动装好。装完用一行代码确认它真的能 import:

import av print(av.__version__) # 能打印版本号,说明 PyAV 免编译安装成功

⚠️ 踩坑提示:如果你看到 pip 开始下载源码现场编译 av,通常是 Python 版本过老、PyPI 上没有对应 wheel,把 Python 换成 3.10 或 3.11 再装即可(faster-whisper 要求 3.9 及以上)。若 import 时报DLL load failed,装一次 Microsoft VC++ 运行库就能解决。

五步跑通第一句转写

驱动和依赖都齐了,下面跑最短的一条转写链路:选模型 → 建环境 → 加载 → 转写 → 打印。

先选一个模型

模型按名字加载,首次使用时自动下载。没有特别要求就从 small 开始验证流程,正式干活再上 large-v3:

模型显存占用(float16,约)适合
small2GB 上下快速验证环境是否装对
large-v35GB 上下正式转写,精度最高

最短转写脚本

from faster_whisper import WhisperModel # 加载模型:N 卡就 cuda + float16,显存吃紧可改 int8_float16 model = WhisperModel("small", device="cuda", compute_type="float16") # vad_filter 默认开启,自动裁掉静音段,长录音提速明显 segments, info = model.transcribe("meeting.mp3", language="zh", beam_size=5) print(f"语言: {info.language} (置信度 {info.language_probability:.2f})") for seg in segments: # segments 是生成器,真正开始转写是在这里 print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")

第一次运行会卡住一段时间,那是在下载模型,属于正常现象。

⚠️ 踩坑提示:中文音频不指定语言时可能识别成别的语种导致乱码,养成language="zh"的习惯。另外segments拿到手并不会自动执行,必须像上面那样迭代(或list(segments))转写才会真正开始。

实战与调优:一张表挑出最快组合

环境跑通之后,真正影响速度的是两个旋钮:compute_type(精度档位)和批量推理。

compute_type 怎么选

直接给结论:显存 6GB 以上的 N 卡用 float16,一步到位;GTX 10 系这类老卡显存紧张就用 int8_float16;完全没显卡的机器用 int8 跑 CPU。

compute_type精度显存/RAM推荐硬件
float16中等RTX 20 系及以后的 N 卡
int8_float16略降更小GTX 10 系等老显卡
int8略降最小纯 CPU 机器
float32最高最大一般不用,留给调参排查

官方 benchmark 给个直观感受:同一段 13 分钟音频、large-v2 模型、GPU 上 float16 约 1 分 03 秒;开启 batch_size=8 的批量推理后降到 17 秒;换成 int8 精度则 59 秒且显存只要 2.9GB(数据来自仓库 README.md 的 Benchmark 章节)。

一批文件怎么跑

批量脚本只需要一个循环,逐文件转写并落盘:

import os model = WhisperModel("small", device="cuda", compute_type="float16") for name in os.listdir("audio_dir"): if not name.endswith(".wav"): continue segments, _ = model.transcribe(os.path.join("audio_dir", name), language="zh") text = "".join(seg.text for seg in segments) # 迭代生成器,触发实际转写 with open(f"output_{os.path.splitext(name)[0]}.txt", "w", encoding="utf-8") as f: f.write(text)

两个再提速的开关

第一个是 VAD:vad_filter=True是默认行为,它会用内置的 Silero VAD 模型裁掉无语音片段,vad_parameters=dict(min_silence_duration_ms=500)可以收紧静音判定阈值,全部参数见 faster_whisper/vad.py。第二个是批量推理:BatchedInferencePipelineWhisperModel.transcribe的直接替换,配合batch_size=16能把 GPU 利用率吃满,用法参考 README.md。

⚠️ 踩坑提示:GPU 报 CUDA out of memory 时,先降 batch_size(8 改 4),还不行就把 compute_type 降到 int8 系,或者换一个更小的模型,三招总有一招管用。

卡住别慌:一张速查表

症状查什么怎么修
加载模型报找不到 cuBLAS / cuDNNPATH 与 cuDNN 目录cuDNN 9 的 DLL 拷进 CUDA 的 bin 并加入 PATH,重开终端
pip 编译 av 源码、装不上 PyAVPython 版本换 3.10 / 3.11,让 pip 命中官方预编译 wheel
DLL load failed(import av 时)VC++ 运行库安装 Microsoft VC++ Redist
转写比预期慢很多compute_type 与 VAD换 float16 或 int8;确认 vad_filter 处于开启状态
CUDA out of memory显存占用降 batch_size、换 int8、或换更小模型
脚本跑完却没有任何输出segments 生成器必须迭代 segments 或转成 list,转写才会执行

想再榨速度,就去研究 int8 量化与 BatchedInferencePipeline 批量推理的组合;想把转写能力变成服务,用 FastAPI 把 transcribe 调用包一层、多进程各挂一个模型,就是可用的生产部署形态。

【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper

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

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

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

立即咨询