Faster-Whisper 本地部署完整指南:4倍提速,内存减半
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
faster-whisper 本地部署:Whisper 模型跑在 CTranslate2 推理引擎上,13 分钟音频在 RTX 3070 Ti 上从 2 分 23 秒压到 16 秒,显存从 4708MB 降到 2926MB。
一次自测:你要不要它
先回答三个问题。答"是"超过两个,继续往下看。
- 音频有隐私或合规风险,不能传云 API?
- 要批量产字幕,或常处理长音频?
- 你愿意为省时间和显存,动手对比数字?
三个都是"否",留在原版 Whisper 或用云 API 就够。
核心原理与 5 个收益
一句话原理:faster-whisper 把同一套 Whisper 权重放到 CTranslate2 推理引擎上重跑。模型参数没动,换的是执行框架。
换框架换来 5 个直接收益:
- 同精度最高 4 倍提速:2 分 23 秒的转录任务变成 59 秒,批量模式 16 秒
- int8 量化显存省约四成:4708MB 降到 2926MB,中端 8GB 卡也装得下 large
- 支持 99 种语言且自动检测:多语种访谈素材不用预先猜语言
- 免装系统级 FFmpeg:PyAV 在包内解码,新机器少一步环境配置
- CPU 也能跑:small 模型 + int8 + 8 线程,13 分钟音频 1 分 42 秒
装前自查清单
先看右侧两个前置条件,再按左侧硬件挑模型。
| 硬件档位 | 推荐模型 | compute_type | 说明 |
|---|---|---|---|
| 高端 GPU(RTX 3090/4090,显存 ≥8GB) | large-v3 或 turbo | float16 | 可开批量,batch_size 往上加 |
| 中端 GPU(RTX 3060/3070,8GB) | medium 或 large-v3 | int8_float16 | 混合量化压显存 |
| 纯 CPU | small 或 base | int8 | 开 8 线程,设 OMP_NUM_THREADS=8 |
前置条件:Python 3.9+;用 GPU 还需 CUDA 12 + cuDNN 9。
拿不准就先用这个默认值:GPU 选 medium + int8_float16,CPU 选 small + int8。
三步跑通:装、载、验
第一步,一条命令装。依赖里的 CTranslate2 会自动带上,不需要 FFmpeg:
pip install faster-whisper装完即可导入使用,无额外系统包要配。
第二步,跑最小转录。中端 GPU 的配置如下,7 行代码:
from faster_whisper import WhisperModel model = WhisperModel("medium", device="cuda", compute_type="int8_float16") segments, info = model.transcribe("audio.mp3", beam_size=5) 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的那一刻。不遍历,GPU 就完全没跑。
⚡ 实测数据
以下数字来自仓库官方基准:13 分钟音频、large-v2 模型、RTX 3070 Ti 8GB、CUDA 12.4。
| 实现 | 精度 | 耗时 | 显存 |
|---|---|---|---|
| openai/whisper | fp16 | 2m23s | 4708MB |
| faster-whisper | int8 | 59s | 2926MB |
| faster-whisper(batch_size=8) | int8 | 16s | 4500MB |
CPU 侧(small 模型、i7-12700K、8 线程):faster-whisper int8 耗时 1m42s、内存 1477MB;batch_size=8 时 51s、3608MB。
想自己复现,benchmark/ 里有可直接跑的速度、内存与 WER 脚本。
🔧 三个开关
批量推理——何时开:字幕批量生产、一次排队多份音频。怎么改:把model.transcribe换成BatchedInferencePipeline(model=model).transcribe("audio.mp3", batch_size=16)。注意什么:batch_size 直接决定显存占用,上面表里 16 批量要 4500MB,吃紧就减半。
词级时间戳——何时开:做字幕、按关键词检索、逐词校对。怎么改:transcribe加word_timestamps=True,然后遍历segment.words拿每个词的起止。注意什么:比段级输出慢一点,确实要词级精度才值得开。
VAD 静音过滤——何时开:长音频、静音占比高、底噪大。怎么改:transcribe加vad_filter=True,可用vad_parameters=dict(min_silence_duration_ms=500)调灵敏度。注意什么:默认只剔除超过 2 秒的静音,完整默认值见 faster_whisper/vad.py。
问题速查
| 现象 | 常见原因 | 解法 |
|---|---|---|
| 加载或转录时 OOM | fp16 占位大,或 batch_size 过大 | 换 int8 / int8_float16;模型降一档;batch_size 从 16 减到 8 |
| 识别率不理想 | 未指定语言,或音频噪声大 | 显式传language;保持默认 beam_size=5;先开 vad_filter |
| CUDA 版本冲突 | 新版 ctranslate2 只认 CUDA 12 + cuDNN 9 | CUDA 11 环境执行pip install --force-reinstall ctranslate2==3.24.0 |
| 长音频太慢 | 单流串行跑,静音没被跳过 | 换批量管线,或先按说话停顿切片 |
谁适合,谁别碰
| 适合它的场景 | 更合适的替代 |
|---|---|
| 音频不能出本机,有隐私合规要求 | 偶尔用、量很小 → 云 ASR API |
| 批量字幕、长音频,要压时间和显存 | 研究需要改模型内部 → openai/whisper |
| 边缘设备做近实时转录 | 企业级大规模并发 → 专用 ASR 服务 |
典型落地组合:本地搭一台字幕服务器,批量管线 + VAD + 词级时间戳三件套,把会议录音批量转成带词级时间戳的文本,按关键词直接回查原句。
今天就用「三步跑通」那段代码配上你的硬件,拿真实音频测一次耗时。想再往前走,看 WhisperX,它在上面提供说话人分离和更精细的时间戳对齐。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考