Faster-Whisper 语音转录实战:快 4 倍,内存还砍半
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
跑语音转文字,最头疼的就是音频排队转不完。faster-whisper 是 OpenAI Whisper 语音识别的一个重实现版本,专门解决"慢"和"吃内存"这两个问题——它把推理引擎换成 CTranslate2,准确率不变的前提下,速度最高翻 4 倍,显存占用还能再降一截。
🚀 为什么它更快
Whisper 本质是个 Transformer 模型,原版用 PyTorch 跑推理,开销不小。faster-whisper 用为 Transformer 专门优化的 CTranslate2 推理引擎重写,并且 CPU、GPU 都支持 8-bit(INT8)量化——内存和速度一次优化到位,精度几乎不打折。
⏱️ 速度到底快多少:13 分钟音频实测
官方基准统一用同一段 13 分钟的音频,方便直接对比:
- GPU 上(large-v2,fp16):原版要 2 分 23 秒,faster-whisper 只要 1 分 03 秒;再开批量推理(
batch_size=8)直接 17 秒交卷。换 INT8 量化是 59 秒,显存从 4525MB 降到 2926MB - CPU 上(small 模型):原版 6 分 58 秒(fp32),faster-whisper INT8 只要 1 分 42 秒,批量推理 51 秒
- distil-large-v3:transformers 跑 46 分 12 秒,faster-whisper 只要 25 分 50 秒,词错误率(WER)反而更低(13.527 对比 14.801)
更快之外还更准,这是它最有说服力的一点。
🎯 跑通第一次转录:5 行代码
from faster_whisper import WhisperModel model = WhisperModel("large-v3", device="cuda", compute_type="float16") segments, info = model.transcribe("audio.mp3", beam_size=5) for segment in segments: print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")几个容易踩的坑:
segments是生成器,真正开始转录要等你开始遍历它;想让它立刻跑完就list(segments)- 模型从 tiny 到 large-v1/v2/v3,以及 distil-whisper 蒸馏系列都能直接换名字加载,对应的 CTranslate2 权重会自动从 Hub 下载
- 完整参数(热词提示、指定语言、
initial_prompt等)都在 WhisperModel 源码 里
🧰 实用特性:VAD、词级时间戳、批量推理
- VAD 过滤:
vad_filter=True会用内置的 Silero VAD 先把没语音的片段裁掉,模型只算有声音的部分。默认只裁超过 2 秒的静音,可通过vad_parameters传参微调,默认值写在 faster_whisper/vad.py - 词级时间戳:
word_timestamps=True直接拿到每个单词的起止时间 - 批量推理:
BatchedInferencePipeline是WhisperModel.transcribe的无缝替代,默认开启 VAD,长音频收益最大;distil-large-v3 建议搭配language="en"和condition_on_previous_text=False使用
⚙️ 安装与硬件避坑
pip install faster-whisper- 需要 Python 3.9+;不用单独装 FFmpeg,音频解码由内置 FFmpeg 库的 PyAV 完成
- GPU 推理要装 cuBLAS for CUDA 12 和 cuDNN 9。用 CUDA 11 的话,把 ctranslate2 降到 3.24.0;CUDA 12 配 cuDNN 8 则降到 4.4.0
- Linux 上可以直接
pip install nvidia-cublas-cublas nvidia-cudnn-cu12(注意先设置LD_LIBRARY_PATH);仓库里的 docker/Dockerfile 也提供了现成容器方案
📦 微调过的模型?转一下就能用
自带ct2-transformers-converter工具,一条命令把原版 Whisper 或你自己微调的模型转成 CTranslate2 格式,还能顺手指定 float16 量化。转完之后从本地目录加载,或者传到 Hub 按名字加载,代码零改动。
它的生态也挺热闹:WhisperX 做说话人分离,Open-Lyrics 把转录结果翻成 .lrc 歌词,Whisper-Streaming 跑近实时转录——按场景挑一个接上就行。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考