faster-whisper 快速配置:Whisper 语音识别加速,CPU 到 GPU 三步到位
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
faster-whisper 是基于 CTranslate2 推理引擎的 Whisper 语音识别加速实现,在相同准确率下转录速度最高提升至 4 倍、内存占用更低。本文覆盖从 faster-whisper 安装到 GPU 转录性能调优的完整路径,面向批量处理音频的开发者与自部署语音识别的用户。
路径选型:按硬件与目标确定 faster-whisper 配置方式
- 如果你没有 GPU、只想尽快验证转录能力 → 走纯 CPU 路径:安装后直接用
int8量化加载,无需任何 NVIDIA 库。 - 如果你有 NVIDIA 显卡、追求批量处理吞吐 → 走 GPU 全性能路径:先核对 CUDA / cuDNN 版本,再选择设备与量化组合。
- 如果你要改源码或提交 PR → 走贡献者开发环境:克隆仓库做 editable 安装,流程以 CONTRIBUTING.md 为准。
版本核对:CUDA、cuDNN 与 Python 的兼容关系
- Python 3.9 及以上→ 可安装。
setup.py声明python_requires=">=3.9",classifiers 明确列出 3.9、3.10、3.11 三个版本。 - 音频解码依赖→ 不需要系统级 FFmpeg。
requirements.txt中的av>=11(PyAV)已捆绑 FFmpeg 库。 - CUDA 12 + cuDNN 9→ ctranslate2 当前的原生支持组合,直接使用即可。
- CUDA 11 + cuDNN 8→ 需要降级:
pip install --force-reinstall ctranslate2==3.24.0 - CUDA 12 + cuDNN 8→ 需要降级:
pip install --force-reinstall ctranslate2==4.4.0 - GPU 模式→ 必须安装 cuBLAS(CUDA 12)与 cuDNN 9 两个库;仓库 docker/Dockerfile 基于的
nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04镜像已自带两者,Docker 部署是最省事的一条路。
安装到验证:从 pip install 到 4 行代码确认环境可用
先执行标准安装,一条命令拉齐全部运行时依赖——ctranslate2>=4.0,<5(推理引擎)、onnxruntime(Silero VAD 静音检测)、av(音频解码),版本约束均可在requirements.txt中查到;当前发布版本为 1.2.1(见faster_whisper/version.py):
pip install faster-whisper判断标准:pip 正常退出无报错,Python 中import faster_whisper不抛 ImportError,即完成安装。
如果你是贡献者,改为 editable 安装,-e让仓库内的代码改动即时生效,[dev]额外装入 black、flake8、isort、pytest 四个工具(见setup.py的 extras 定义):
git clone https://gitcode.com/GitHub_Trending/fa/faster-whisper cd faster-whisper pip install -e .[dev]装好之后跑pytest tests/,全部通过即环境健康。
若你只需要把 Transformers 格式的 Whisper 模型(含自己微调的)转成 CTranslate2 格式,追加安装转换依赖,随后用ct2-transformers-converter命令完成转换,官方 README 的 Model conversion 一节有完整参数示例:
pip install "transformers[torch]>=4.23"接着写一段 4 行核心逻辑的验证脚本,仓库的 docker/infer.py 里就有 cuda + 词级时间戳的同款变体可直接改写,几秒长的测试音频在 tests/data/jfk.flac:
from faster_whisper import WhisperModel model = WhisperModel("tiny", device="cpu", compute_type="int8") segments, info = model.transcribe("audio.mp3", beam_size=5) for segment in segments: print(f"[{segment.start:.2f} -> {segment.end:.2f}] {segment.text}")成功信号有两点:
✅ 首次加载时自动从 Hugging Face Hub 下载 CTranslate2 格式权重(tiny 仅几 MB),下载结束无报错即初始化成功。 ✅ 控制台逐行打印带时间戳的文本,形如[0.00 -> 4.71] And so my fellow Americans...。
⚠️ 注意惰性求值语义:segments是生成器,transcribe()返回时尚未开始转录(faster_whisper/transcribe.py 的 docstring 明确其为 generator over transcribed segments)。必须用for循环或list(segments)迭代,计算才会真正发生——否则看到的"无输出"只是没有遍历而已。
易错点速查:症状、根因与一行解法
以下条目按出现频率降序排列。
⚠️ 症状:调用transcribe()后一直无输出 根因:segments为生成器,未迭代不执行 解法:用for循环或segments = list(segments)触发实际计算
症状:GPU 模式启动时提示找不到 cuBLAS / cuDNN 根因:NVIDIA 运行库未安装或不在搜索路径中 解法:pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*,再export LD_LIBRARY_PATH指向两库的 lib 目录后启动 Python
症状:加载 CUDA 模型报版本不兼容 根因:ctranslate2 版本与本机 CUDA/cuDNN 不匹配 解法:CUDA 11 环境降到ctranslate2==3.24.0;CUDA 12 + cuDNN 8 降到ctranslate2==4.4.0
症状:CPU 转录缓慢、风扇高速运转 根因:线程数不合理或精度选择偏高 解法:OMP_NUM_THREADS=4 python3 my_script.py固定线程数至物理核心数,并改用compute_type="int8"
症状:首次加载模型极慢 根因:正在从 Hub 下载权重 解法:属正常行为,下载一次后本地缓存;也可WhisperModel("本地ct2目录")直接加载跳过网络
GPU 转录性能调优:量化、批处理与设备选型三旋钮
旋钮一(收益最大、改动最小):批量推理管道。BatchedInferencePipeline.transcribe是WhisperModel.transcribe的直接替换,且默认启用 VAD 静音过滤(官方 README 说明):
from faster_whisper import WhisperModel, BatchedInferencePipeline model = WhisperModel("turbo", device="cuda", compute_type="float16") batched = BatchedInferencePipeline(model=model) segments, _ = batched.transcribe("audio.mp3", batch_size=16)量化数据:官方 GPU 基准中,large-v2fp16 转录 13 分钟音频需 1 分 03 秒,batch_size=8时降至 17 秒(README Benchmark 表)。
旋钮二(收益显著、只改一个参数):INT8 量化。GPU 用int8_float16,纯 CPU 用int8:
model = WhisperModel("large-v3", device="cuda", compute_type="int8_float16")量化数据:large-v2在 GPU 上显存从 fp16 的 4525MB 降到 int8 的 2926MB,耗时从 1 分 03 秒降到 59 秒。
旋钮三(策略性选择):设备与模型组合。精度优先选large-v3,速度优先选turbo(即 large-v3-turbo,见faster_whisper/utils.py的模型映射表)或distil-large-v3;显存吃紧时按 float16 → int8_float16 → CPU+int8 的顺序逐级回退。其余默认参数(beam_size=5、VAD 阈值min_silence_duration_ms=2000等)直接查faster_whisper/transcribe.py与faster_whisper/vad.py的签名即可。
对比不同实现的速度时,先对齐 beam size 与 CPU 线程数(用OMP_NUM_THREADS固定),并注意本库默认 beam size 为 5、openai/whisper 默认为 1(官方 README 对比一节),否则快慢结论没有参考意义。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考