faster-whisper 本地部署:同精度提速 4 倍实战指南
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
两小时客服录音,走云 API 大概要 50 元加一小时等待;放到本地一张 4GB 显存的显卡上,faster-whisper 的 int8 模式只需 1 分 42 秒、1.5GB 内存。它是 OpenAI Whisper 的 CTranslate2 推理引擎重写版,官方基准显示同等精度下比原版快 4 倍、少用近一半显存。下面是一份从安装到调参的本地部署指南。
先说结论:适合谁、不适合谁
- 适合:隐私敏感、必须本地部署的转录业务
- 适合:一次跑几百个音频文件的批量任务
- 适合:显存 4GB 上下、想靠 int8 量化省一半显存的机器
- 适合:有 NVIDIA GPU,想用批量推理把 1 分多钟压进 17 秒的场景
- 不适合:手里只有 2 核 CPU 还要单文件转录(whisper.cpp 更快)
- 不适合:已有微调好的 Whisper 模型,需要先转成 CTranslate2 格式
三步跑起来:从安装到第一条结果
环境要求就一行:Python 3.9+。不需要系统级 FFmpeg,音频解码由 PyAV 自带,省掉一堆依赖。
安装:
pip install faster-whisper最短可运行示例:
from faster_whisper import WhisperModel model = WhisperModel("small", device="cpu", compute_type="int8") segments, info = model.transcribe("tests/data/jfk.flac") print(f"检测语言: {info.language},置信度: {info.language_probability:.2f}") for seg in segments: print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")两点注意:transcribe返回的segments是生成器,不遍历就不会真正转录;模型首次加载会从 Hugging Face Hub 自动下载对应的 CTranslate2 权重,tests/data/目录里有现成的测试音频可以直接用。预期输出形如:
检测语言: en,置信度: 0.99... [00.00s -> 03.68s] And so my fellow Americans...实测数据:跟谁比、差多少
官方基准用 13 分钟同一段音频对比(GPU:NVIDIA RTX 3070 Ti 8GB,large-v2,beam_size=5;CPU:Intel Core i7-12700K 8 线程,small):
| 实现 | 精度 / 模式 | 耗时 | 显存 / 内存 |
|---|---|---|---|
| OpenAI Whisper | fp16 | 2 分 23 秒 | 4708MB |
| whisper.cpp(Flash Attention) | fp16 | 1 分 05 秒 | 4127MB |
| faster-whisper | fp16 | 1 分 03 秒 | 4525MB |
| faster-whisper | int8 | 59 秒 | 2926MB |
| faster-whisper(batch_size=8) | int8 | 16 秒 | 4500MB |
CPU 侧同一口径:
| 实现 | 精度 / 模式 | 耗时 | 内存 |
|---|---|---|---|
| OpenAI Whisper | fp32 | 6 分 58 秒 | 2335MB |
| whisper.cpp | fp32 | 2 分 05 秒 | 1049MB |
| faster-whisper | int8 | 1 分 42 秒 | 1477MB |
| faster-whisper(batch_size=8) | int8 | 51 秒 | 3608MB |
怎么读这两张表:优势最明显的是「GPU + int8」这一档,比原版快 2.4 倍、显存只有 62%;把 batch 拉满后 16 秒完成 13 分钟音频,约为原版的 1/9,transformers 实现则在 batch>1 时直接 OOM。CPU 单线程对比里 whisper.cpp 占优,faster-whisper 要开批量推理才能反超。
让它更好用的 3 个技巧
批量推理管线:处理多路音频、或想把单文件也榨干 GPU 时,用BatchedInferencePipeline替换原方法即可:
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)基准里 fp16 下 13 分钟音频从 1 分 03 秒压到 17 秒(batch_size=8,6GB 显存)。批量模式下 VAD 默认开启,自动跳过静音。
int8 量化:显存只有一半、但精度不想让步时的开关:
model = WhisperModel("large-v3", device="cuda", compute_type="int8_float16")同一张大卡上 VRAM 从 4525MB 降到 2926MB,耗时 59 秒对 1 分 03 秒,精度差距在误差范围内。
VAD 静音过滤:默认只砍掉超过 2 秒的静音(min_silence_duration_ms=2000),对话间隙短时可收紧;完整参数在 faster_whisper/vad.py 的VadOptions里:
segments, _ = model.transcribe( "audio.mp3", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=500), )注意threshold默认 0.5,背景音乐重的素材别乱调低,否则伴奏会被当人声切进来。
按硬件抄作业:一张表选配置
| 硬件档位 | 推荐模型 | compute_type | 说明 |
|---|---|---|---|
| 8GB+ 显存(3070 Ti / 4090) | large-v3 或 turbo | float16 | 配合 batched 管线,13 分钟音频 17 秒 |
| 4~6GB 显存 | large-v3 | int8_float16 | 约 2.9GB 显存,59 秒跑完 13 分钟 |
| 纯 CPU(8 核+) | small | int8 | 1.5GB 内存;内存富余时开 batched |
| CUDA 11 老显卡 | small / medium | int8_float16 | 先pip install --force-reinstall ctranslate2==3.24.0 |
CPU 上建议显式控制线程,例如OMP_NUM_THREADS=8 python script.py;基准就是在 8 线程下测的,线程翻倍收益递减,先按物理核数设。
不 work 时按这个顺序排查
- 症状:
cannot find CUDA library之类报错 → 原因:新版 ctranslate2 只支持 CUDA 12 + cuDNN 9,旧环境不匹配 → 一行解决:pip install --force-reinstall ctranslate2==3.24.0(CUDA 11 / cuDNN 8)。 - 症状:CUDA out of memory → 原因:fp16 大模型显存不够 → 一行解决:
compute_type换成int8_float16;batched 场景再降batch_size,仍不够就换 medium 或拆短音频。 - 症状:感觉「比原版快不了多少」 → 原因:
segments是生成器,没遍历就等于没转录;或未用批量推理 → 一行解决:segments = list(segments),并改用BatchedInferencePipeline。 - 症状:静音处输出重复文本(幻觉) → 原因:解码器在无语音段瞎猜 → 一行解决:加
vad_filter=True,必要时调高no_speech_threshold(默认 0.6)。 - 症状:首次加载模型下载失败 → 原因:模型权重默认从 Hugging Face Hub 拉取 → 一行解决:手动下载
Systran/faster-whisper-<model>后,把本地目录路径直接传给WhisperModel()。
faster-whisper 的定位就一句话:把 Whisper 塞进 CTranslate2,用量化和批量换速度,让本地部署成本可控。下一步动作:对照上面「按硬件抄作业」的档位表配好参数,复跑一遍 benchmark/ 目录里的速度、内存与 WER 基准脚本验证收益。如果文中数据和你的实测有出入,欢迎把机器型号、模型档位和耗时发回评论区,帮后面抄作业的人避坑。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考