4 倍速跑通 faster-whisper:CTranslate2 重写版 Whisper 语音转写指南
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
18:00,你手里有一段 40 分钟的会议录音,想晚饭前拿到一份带时间戳的逐字稿。faster-whisper 就是干这个的:用 CTranslate2(≈ 给模型换一台更省油的推理引擎)重写的 OpenAI Whisper 语音转写,同等精度下最高快 4 倍,还更省内存。
10 分钟装好并跑通第一条转写
- 装 GPU 运行库(有 N 卡才做):ctranslate2 推理要调 cuBLAS 和 cuDNN,缺了模型起不来。Linux 下
pip install nvidia-cublas-cublas-cu12 nvidia-cudnn-cu12==9.*后,把这两个库目录加进LD_LIBRARY_PATH再启动 Python。 - 装本体:只要 Python 3.9+。音频解码走 PyAV(
av>=11),它把 FFmpeg 的库打进了自己的 wheel,≈ 省去系统再装一遍 FFmpeg,装完直接读 mp3 / wav / m4a,一行pip install faster-whisper带齐 ctranslate2、tokenizers、onnxruntime。 - 跑第一条转写:
WhisperModel按模型名自动下载对应 CTranslate2 权重;下面选small档,是 CPU / 低显存下能拿到带时间戳结果的最快选择。beam_size=5是库的默认解码精度,vad_filter=True(也是默认)先用内置 Silero VAD 剪掉长静音,模型不用白算空段。注意segments是生成器,真正跑转写发生在遍历它的那一刻:
from faster_whisper import WhisperModel model = WhisperModel("small", device="cpu", compute_type="int8") segments, info = model.transcribe("meeting.mp3", beam_size=5, vad_filter=True) print(f"语言 {info.language} 置信度 {info.language_probability:.2f}") for seg in segments: print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")按硬件和延迟选档位 🔧
这些数字来自仓库基准:13 分钟音频、NVIDIA RTX 3070 Ti(CUDA 12.4)与 Intel Core i7-12700K(8 线程)。
| 你的硬件 | 推荐配置 | 13 分钟 large-v2 实测 | 内存占用 |
|---|---|---|---|
| N 卡 | device="cuda"+float16 | 1 分 03 秒 | ≈4.5GB 显存 |
| N 卡,要更快 | 同上 +batch_size=8 | 17 秒 | ≈6.1GB 显存 |
| N 卡,显存紧 | int8_float16量化 | 59 秒 | ≈2.9GB 显存 |
| 纯 CPU | device="cpu"+int8(small 档) | 1 分 42 秒 | ≈1.5GB 内存 |
batch_size会多占一部分显存/内存,但批量转写提速明显(1 分 03 秒压到 17 秒)。int8 量化在 CPU 和 GPU 上都进一步降内存,精度损失很小。
报错时先查这张表
- 如果
import faster_whisper报 ctranslate2 版本冲突,说明机器上已有不兼容的旧版,回到安装步用pip install --force-reinstall ctranslate2==4.4.0之类锁版本核对(CUDA 11 + cuDNN 8 的老环境锁3.24.0)。 - 如果加载时看到
cuDNN not found或 CUDA 报错,说明库没进环境变量或版本对不上 CUDA 12,回到第 1 步核对LD_LIBRARY_PATH路径;懒得折腾可以直接用nvidia/cuda:12.3.2-cudnn9-runtime这类 Docker 镜像。 - 如果 PyAV 触发本地编译失败,说明 pip 拉到了源码包而非 wheel,换官方预编译包重装,别在 Windows 上硬编译。
- 如果转写"卡住"没有输出,说明
segments还是生成器没被遍历,segments = list(segments)或写for循环才会真正跑完。
再往前走一步
- 要词级时间戳做字幕:加
word_timestamps=True,每个seg.words里都有起止时刻,解码细节见 faster_whisper/transcribe.py。 - 音频长、说话占比低时收紧静音切分省算力:
vad_parameters=dict(min_silence_duration_ms=500),各参数默认值见 faster_whisper/vad.py。 - 长音频上量:
BatchedInferencePipeline把片段攒成批一次喂给模型,13 分钟音频 fp16 从 1 分 03 秒压到 17 秒,用法见 README.md 的 Batched Transcription 一节。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考