13 分钟音频 59 秒转完:faster-whisper 快速上手与模型选型指南
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
一段 13 分钟的会议录音,原版 Whisper 要转 2 分 23 秒,faster-whisper 只需 59 秒,显存从 4.7GB 降到 2.9GB。同一个 Whisper 模型,同样的准确率,速度最高快 4 倍。
🧭 一句话定位:Whisper 的极速推理引擎
faster-whisper 是 OpenAI Whisper 的 Python 重写版。它用 CTranslate2(一个专门加速 Transformer 推理的 C++ 引擎)替换了原版 PyTorch 推理路径,识别逻辑不变,只是跑得更快、更省内存。
你不需要换模型,也不需要重新训练,装完直接替换原来的 Whisper 调用即可。
🚀 2 分钟跑通:一条命令装完,3 行代码出结果
环境要求只有一条:Python 3.9 或更高。不用装 FFmpeg,音频解码由打包好的 PyAV 库完成。
pip install faster-whisper装好后,用下面 3 行代码转一段录音。compute_type控制精度:有显卡选 float16,没显卡选 int8:
from faster_whisper import WhisperModel model = WhisperModel("medium", device="cuda", compute_type="float16") segments, info = model.transcribe("audio.mp3") for seg in segments: print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")首次运行会自动下载模型权重,之后走缓存。跑完你会看到逐句带时间戳的文本,并打印检测到的语言,例如Detected language 'zh' with probability 0.96。
⚙️ 4 个最影响体验的能力
1. INT8 量化:显存和内存近乎减半
8 位量化是用更少的位数存储模型权重,精度损失很小。加载时改一个参数即可:
model = WhisperModel("large-v3", device="cuda", compute_type="int8_float16") # GPU model = WhisperModel("small", device="cpu", compute_type="int8") # CPU实测 13 分钟音频:GPU int8 用 59 秒、2.9GB 显存;CPU int8 用 1 分 42 秒、1.5GB 内存(原版要 6 分 58 秒)。
2. 字级时间戳:定位到每个词
做字幕、跟读、关键词高亮都要用。加一个参数:
segments, _ = model.transcribe("audio.mp3", word_timestamps=True)每个segment.words里都有单词级的起止秒数。
3. VAD 静音过滤:跳过没人说话的片段
VAD(语音活动检测)先找出"真正有人声"的区间,再送去识别。长录音里的大段静音、背景音乐直接被跳过,省时间也少幻觉:
segments, _ = model.transcribe("audio.mp3", vad_filter=True)默认只剔除超过 2 秒的静音,可用vad_parameters=dict(min_silence_duration_ms=500)收紧。
4. 批量推理:GPU 利用率拉满
BatchedInferencePipeline把音频切片打包成批处理。官方数据里,13 分钟音频从 1 分 03 秒压到 17 秒:
from faster_whisper import WhisperModel, BatchedInferencePipeline model = WhisperModel("turbo", device="cuda", compute_type="float16") pipeline = BatchedInferencePipeline(model=model) segments, _ = pipeline.transcribe("audio.mp3", batch_size=16)注意segments是生成器,不遍历就不会真正开始转录。
🎬 场景走一遍:10 分钟会议录音变带时间轴字幕
输入:meeting.mp3,10 分钟多人讨论,含停顿和杂音。
操作:开启 VAD 过滤静音 + 字级时间戳:
segments, _ = model.transcribe( "meeting.mp3", vad_filter=True, word_timestamps=True ) with open("meeting.srt", "w") as f: for i, seg in enumerate(segments, 1): fmt = lambda t: f"{int(t//3600):02d}:{int(t%3600//60):02d}:{int(t%60):02d},{int(t%1*1000):03d}" f.write(f"{i}\n{fmt(seg.start)} --> {fmt(seg.end)}\n{seg.text}\n\n")产出:meeting.srt标准字幕文件,可直接拖进播放器或剪映。因为开了 VAD,静音段不会生成空字幕条,每条都对应真实发言。
📊 模型与配置怎么选:对号入座表
| 你的情况 | model | device / compute_type | 预期(13 分钟音频) |
|---|---|---|---|
| 有独显,日常使用 | medium 或 large-v3 | cuda / float16 | 约 1 分钟 |
| 显存紧张(8GB 内跑大模型) | large-v3 | cuda / int8_float16 | 59 秒,显存约 2.9GB |
| 只有 CPU | small | cpu / int8 | 1 分 42 秒,内存约 1.5GB |
| 追求极速、GPU 显存够 | turbo / large-v3 + 批量推理 | cuda / float16,batch_size=16 | 17~25 秒 |
| 只要英文、精度优先 | distil-large-v3 | cuda / float16 | 比 large 快数倍 |
补充两点:beam_size默认 5,调到 1 更快但略降精度;distil-large-v3建议显式指定language="en"并加condition_on_previous_text=False。
🕳️ 5 个最常踩的坑
- GPU 报错找不到 CUDA/cuDNN:ctranslate2 4.x 只支持 CUDA 12 + cuDNN 9。只有 cuDNN 8 就
pip install --force-reinstall ctranslate2==4.4.0;CUDA 11 则降到 3.24.0。 - transcribe 调用后像卡住了:返回的
segments是生成器,必须用for循环或list(segments)遍历才会真正执行。 - 第一次运行特别慢:在自动下载模型。把模型加载放在服务启动时预热,后续调用才是极速状态。
- 长音频出现重复、幻觉文字:尝试
condition_on_previous_text=False,或给initial_prompt提供主题提示;专业术语可写进hotwords参数提命中率。 - 装不上或依赖冲突:确认 Python ≥ 3.9,优先用干净的虚拟环境
pip install faster-whisper,避免和旧版 torch 环境混装。
下一步
装好faster-whisper后,拿一段自己的录音跑一遍上面的 3 行代码。想深入看参数细节,可以读 转录主逻辑 和 VAD 实现;想复现速度数据,仓库里带了 speed_benchmark.py。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考