faster-whisper 语音转录加速:13分钟音频1分钟跑完,INT8再省近四成显存
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
凌晨一批三小时的会议录音要赶在早上出字幕,原版 Whisper 单卡跑完要到天亮。faster-whisper 是基于 CTranslate2 推理引擎的语音转录加速与低资源部署方案:同样的 13 分钟音频,GPU 上 1 分钟跑完,再开 INT8 量化显存还能省近四成。这里不先讲原理,先把环境跑通,再拆开看它快在哪。
5分钟跑通:faster-whisper 安装与第一次转录
环境门槛不高:Python 3.9 以上,音频解码用的 FFmpeg 库由依赖包 PyAV 自带,不用单独装 FFmpeg。依赖核心是ctranslate2>=4.0,<5,见 requirements.txt。
GPU 环境缺什么装什么(cuBLAS + cuDNN)
NVIDIA 卡需要 cuBLAS 和 cuDNN 的 CUDA 12 版本,最新 ctranslate2 只支持 CUDA 12 + cuDNN 9;老环境有降级方案,后文避坑清单里有写。docker/Dockerfile 里是一个现成的 GPU 部署镜像,可直接参考。
pip install faster-whisperfrom faster_whisper import WhisperModel model = WhisperModel("large-v3", device="cuda", compute_type="float16") # 没 GPU 就写: device="cpu", compute_type="int8" segments, info = model.transcribe("audio.mp3", beam_size=5) print(f"language: {info.language} ({info.language_probability:.2f})") for seg in segments: # 注意是生成器,开始迭代才真正跑 print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")- 直接传
"tiny"、"base"、"small"、"medium"、"large-v3"这类名字,会自动下载 Systran 官方转换好的模型;available_models()能列出可选项 - 也可以传本地路径,加载自己用
ct2-transformers-converter转出来的模型(含微调模型) device+compute_type就是全部提速开关:GPU 用float16或int8_float16,CPU 用int8
CPU 环境怎么配线程数
CPU 上跑之前先固定线程数:OMP_NUM_THREADS=8 python my_transcribe.py。速度更稳,和别的实现跑分也才有可比性。
⚡ 为什么比原版快:量化、计算图与 VAD
INT8/FP16 量化:模型瘦身,精度基本不掉
原版模型权重是 32 位浮点(FP32),量化后压成 16 位(FP16)或 8 位整数(INT8)。打个比方:仓库从一个个散箱换成压缩集装箱,取货(计算)更快、占地更小,货物(精度)基本没变。INT8 在 CPU 上收益最大,GPU 上同样有效。
计算图优化:编码器只算一遍,输出反复复用
CTranslate2 把 Transformer 推理重排成流水线:每个 30 秒窗口的编码器输出只算一次,解码阶段反复复用——中央厨房预做好酱料,档口只管出菜,不用每人现炒。批量接口更进一步,把多个窗口拼起来一起喂给 GPU:
from faster_whisper import WhisperModel, BatchedInferencePipeline model = WhisperModel("large-v3", device="cuda", compute_type="int8_float16") batched = BatchedInferencePipeline(model=model) segments, info = batched.transcribe("audio.mp3", batch_size=16)Silero VAD:先挑出人声,再让模型干活
转录前先过一遍内置的 Silero VAD(模型文件),只对人声段落跑大模型,等于先把垃圾页从书里抽掉再装订。默认策略保守,只去掉超过 2 秒的静音;想更激进可传vad_parameters=dict(min_silence_duration_ms=500),全部默认值见 faster_whisper/vad.py。批量接口默认就开着 VAD。
性能账本:13分钟音频,各家实跑对比
下表来自 README 官方基准:同为 13 分钟音频、large-v2 模型、beam_size=5,GPU 为 RTX 3070 Ti 8GB + CUDA 12.4。
| 跑法 | 精度 | 13分钟耗时 | 显存占用 |
|---|---|---|---|
| 原版 openai/whisper | fp16 | 2分23秒 | 4708MB |
| faster-whisper | fp16 | 1分03秒 | 4525MB |
| faster-whisper(batch_size=8) | fp16 | 17秒 | 6090MB |
| faster-whisper(INT8 量化) | int8 | 59秒 | 2926MB |
| faster-whisper(INT8 + batch_size=8) | int8 | 16秒 | 4500MB |
| whisper.cpp(Flash Attention) | fp16 | 1分05秒 | 4127MB |
| transformers(SDPA) | fp16 | 1分52秒 | 4960MB |
精度对齐提速约4倍,INT8省38%显存;批处理最快16秒,但显存吃紧。
CPU 侧(small 模型,i7-12700K):原版 fp32 要 6分58秒、2335MB,faster-whisper INT8 是 1分42秒、1477MB,开批处理压到 51秒。低资源环境下这组数字更有参考意义。
三类场景对号入座
长视频 / 会议录音 → 字幕批处理
- 优势:批量接口把 13 分钟压到 16 秒;
word_timestamps=True给出词级起止时间,字幕对齐省事;多语言自动检测内置 - 适用:课程字幕、会议纪要、视频审核队列
- 限制:默认 VAD 只滤超过 2 秒的静音,长停顿音频要自己调参;极嘈杂环境准确率会下降
CPU 低资源自建转录服务
- 优势:INT8 下 small 模型 CPU 只要 1分42秒、内存 1477MB;不用装 FFmpeg;GPU 部署有现成 docker/Dockerfile
- 适用:内网自建转录服务、低配服务器
- 限制:CPU 有速度上限,高并发要靠批处理和
OMP_NUM_THREADS调优
说话人分离 / 近实时字幕(生态组合)
- 优势:社区有 WhisperX(说话人分离 + 精确词级对齐)、Whisper-Streaming(近实时字幕)、speaches(OpenAI 兼容 API)等成熟集成
- 适用:客服通话质检、直播字幕展示
- 限制:需要组合第三方组件;多人同时说话易识别混乱
⚠️ 什么时候选它、什么时候别选
能勾中这些,就选 faster-whisper:
- 只有 CPU 或低显存 GPU,却要批量处理长音频
- 吞吐优先,能接受 INT8 量化带来的微小精度交换
- 需要词级时间戳、多语言自动检测、热词提示(
transcribe传hotwords参数) - 项目是 Python 3.9+,能引入 ctranslate2 依赖
- 后续想接说话人分离、近实时字幕这类生态能力
这些情况别硬上:
- 必须原封不动走 openai/whisper 的代码路径
- 环境是 CUDA 11:新版 ctranslate2 只支持 CUDA 12,得降级到
ctranslate2==3.24.0(CUDA 12 + cuDNN 8 则用4.4.0) - 显存不到 4.5GB 却想开 batch_size=8:批量模式显存会涨到 4500–6090MB
最常踩的四个坑:
segments是生成器,不迭代就不跑——新手第一坑- 默认 beam_size=5(原版是 1),跑分不对齐参数,对比无效
- VAD 默认保守,转录里静音太多就调小
min_silence_duration_ms - distil-large-v3 建议按官方示例设
condition_on_previous_text=False
模型加载与全部转录参数在 faster_whisper/transcribe.py,音频解码在 faster_whisper/audio.py,想复现基准可用 benchmark/speed_benchmark.py。
模型没变,跑法变了:faster-whisper 把 Whisper 的语音转录从"跑不跑得完"拉回到"多快跑完"。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考