Windows 环境下 faster-whisper 部署:CUDA 加速与 PyAV 依赖配置
前言:为什么选择 faster-whisper?
作为 OpenAI Whisper 的优化版本,faster-whisper 借助 CTranslate2 实现了 2-4 倍的速度提升,同时降低了 40% 的内存占用。本指南专为 Windows 用户打造,从 CUDA 环境配置到 PyAV 依赖解决,全程实操,帮你在 15 分钟内搭建生产级语音转写系统。
介绍在 Windows 系统下部署 faster-whisper 语音转写工具的完整流程。内容包括 CUDA 12 环境配置、cuDNN 设置、环境变量调整,以及解决 PyAV 依赖编译问题的预编译包安装方案。提供了命令行与 Python API 调用示例,涵盖模型下载、批量处理及性能调优策略,帮助开发者快速搭建生产级语音转写系统。
作为 OpenAI Whisper 的优化版本,faster-whisper 借助 CTranslate2 实现了 2-4 倍的速度提升,同时降低了 40% 的内存占用。本指南专为 Windows 用户打造,从 CUDA 环境配置到 PyAV 依赖解决,全程实操,帮你在 15 分钟内搭建生产级语音转写系统。
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| GPU | NVIDIA GTX 1050Ti (4GB) | NVIDIA RTX 3060 (6GB) |
| CPU | Intel i5-8 代 | Intel i7-12 代/Ryzen 7 |
| 内存 | 8GB | 16GB |
| 存储 | 10GB 空闲空间 | SSD 20GB 空闲空间 |
faster-whisper 最新版本仅支持 CUDA 12,需严格按照以下步骤操作:
验证安装:
nvcc -V # 应显示 V12.0.0
下载 CUDA 12.0.0 官方安装包:
# 使用 winget 快速安装(推荐)
winget install --id NVIDIA.CUDAToolkit.12.0
解压后复制文件到 CUDA 目录:
# 假设 CUDA 安装在默认路径
xcopy cudnn-*-windows-x64-v8.9.0.*\cuda\bin\* "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\bin\" /Y
xcopy cudnn-*-windows-x64-v8.9.0.*\cuda\include\* "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\include\" /Y
xcopy cudnn-*-windows-x64-v8.9.0.*\cuda\lib\x64\* "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\lib\x64\" /Y
确保以下路径已添加到系统 PATH:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\libnvvp
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\extras\CUPTI\lib64
faster-whisper 使用 PyAV 替代系统 FFmpeg,但 Windows 下直接 pip install av 会触发编译错误。原因是:
安装 PyAV:
pip install PyAV-12.1.0-cp310-cp310-win_amd64.whl
下载对应 Python 版本的 PyAV wheel 文件:
# 创建依赖目录
mkdir -p D:\faster-whisper\deps && cd D:\faster-whisper\deps
# 下载预编译包(以 Python 3.10 为例)
Invoke-WebRequest -Uri "https://download.lfd.uci.edu/pythonlibs/w6hxc6ad/PyAV-12.1.0-cp310-cp310-win_amd64.whl" -OutFile "PyAV-12.1.0-cp310-cp310-win_amd64.whl"
预编译包下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyav 选择对应 Python 版本(cp310=3.10)和系统架构(win_amd64)
# 创建虚拟环境
python -m venv venv
venv\Scripts\activate
# 安装核心依赖
pip install --upgrade pip
pip install faster-whisper==1.0.3 ctranslate2==4.0.0
# 验证安装
python -c "from faster_whisper import WhisperModel; print('安装成功')"
faster-whisper 支持自动下载模型,但建议手动下载提速:
# 创建模型目录
mkdir -p D:\faster-whisper\models
# 下载 base 模型(439MB)
Invoke-WebRequest -Uri "https://huggingface.co/Systran/faster-whisper-base/resolve/main/model.bin" -OutFile "D:\faster-whisper\models\model.bin"
支持的模型列表:
# 基础转写
faster-whisper transcribe --model base --language zh --output_format txt audio.wav
# 批量处理
for %f in (*.wav) do faster-whisper transcribe --model base "%f"
from faster_whisper import WhisperModel
# 加载模型(GPU 模式)
model = WhisperModel(
"base",
device="cuda",
compute_type="float16",
model_dir="D:\\faster-whisper\\models"
)
# 语音转写
segments, info = model.transcribe(
"audio.wav",
language="zh",
beam_size=5,
vad_filter=True
)
# 输出结果
print(f"检测到语言:{info.language} (置信度:{info.language_probability:.2f})")
for segment in segments:
print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")
| 模型 | 音频长度 | CPU 耗时 | GPU 耗时 | 加速比 |
|---|---|---|---|---|
| base | 60 秒 | 45 秒 | 12 秒 | 3.75x |
| small | 60 秒 | 98 秒 | 28 秒 | 3.5x |
| medium | 60 秒 | 210 秒 | 55 秒 | 3.8x |
"cuDNN not found"
dir "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\bin\cudnn*"
"CUDA out of memory"
# 修改 batch_size
segments, info = model.transcribe("audio.wav", batch_size=8)
"Could not find audio stream"
# 使用 ffmpeg 转换(需单独安装 ffmpeg)
ffmpeg -i input.mp3 -ac 1 -ar 16000 output.wav
"ImportError: DLL load failed"
winget install --id Microsoft.VC++2015-2022Redist-x64
| 计算类型 | 精度 | 速度 | 内存占用 |
|---|---|---|---|
| float32 | 最高 | 较慢 | 最大 |
| float16 | 高 | 快 | 中等 |
| int8 | 一般 | 最快 | 最小 |
# 根据 GPU 选择计算类型
model = WhisperModel("base", device="cuda", compute_type="float16") # RTX 20 系以上
model = WhisperModel("base", device="cuda", compute_type="int8_float16") # 低端 GPU
from faster_whisper import WhisperModel
import os
model = WhisperModel("small", device="cuda", compute_type="float16")
audio_dir = "D:\\audio_files"
output_dir = "D:\\transcriptions"
os.makedirs(output_dir, exist_ok=True)
# 批量处理所有 WAV 文件
for filename in os.listdir(audio_dir):
if filename.endswith(".wav"):
audio_path = os.path.join(audio_dir, filename)
output_path = os.path.join(output_dir, f"{os.path.splitext(filename)[0]}.txt")
segments, _ = model.transcribe(audio_path, language="zh")
with open(output_path, "w", encoding="utf-8") as f:
for segment in segments:
f.write(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}\n")
| 功能 | 命令 |
|---|---|
| 创建虚拟环境 | python -m venv venv |
| 激活环境 | venv\Scripts\activate |
| 安装依赖 | pip install faster-whisper==1.0.3 |
| 基础转写 | faster-whisper transcribe --model base audio.wav |
| 查看 GPU 信息 | nvidia-smi |
| 清理缓存 | pip cache purge |

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online