faster-whisper:Whisper 推理提速 4 倍、显存砍半的 CTranslate2 实现
在 AI 语音识别(ASR)领域,OpenAI 的Whisper模型无疑是武林盟主级别的。
但是,只要在生产环境或者本地机器上跑过 Whisper 的朋友,都能发现它推理太慢、显存占用大、幻觉严重等问题。
今天我要按头安利给大家的这个开源项目 —faster-whisper,绝对是对于 whisper 来说是无脑升级的选项。
它在保持了 Whisper 惊人准确率的同时,把推理速度提升了4倍,显存占用降低了38%。
今天,我们就来扒一扒这个 GitHub 上的「ASR性能怪兽」。
开源简介
faster-whisper是一个基于 OpenAI Whisper 的高性能实现版本。
它利用CTranslate2进行推理优化。该库的转录速度比原始 OpenAI 实现快达 4 倍,同时保持相同的准确度水平,并显著降低内存消耗。
OpenAI 官方的 Whisper 是基于PyTorch实现的。PyTorch 虽然灵活性高,适合训练,但在“推理(Inference)”阶段,它的效率其实并不是极致的,而且带着很多训练时的冗余开销。
该项目底层推理引擎从 PyTorch 换成了 CTranslate2,虽然识别效果没变,但速度、显存、吞吐量全线提升。
什么是 CTranslate2?
CTranslate2 是一个专门为 Transformer 模型(Whisper 就是基于 Transformer 架构)设计的快速推理引擎。
它做了两件关键的事:
•权重优化:它对模型权重进行了重新编排,去掉了所有推理不需要的累赘。
•量化技术:这是性能提升的核心。它支持 Int8(8位整数)量化。
简单来说,原本的模型在计算时用的是 32 位浮点数(FP32)或 16 位浮点数(FP16)。
faster-whisper 通过 Int8 量化,把计算精度稍微降低了一丢丢(人耳几乎听不出区别),但让计算量和内存传输量大幅减少。
这就是为什么它能实现快 4 倍且省一半显存的「超能力」。
核心功能
除了快和省,faster-whisper 还引入了几个官方版没有的实用功能,解决了实际落地中的痛点。
1、内置 Silero VAD(自动静音过滤)
官方 Whisper 有个著名的 Bug:遇到长时间的静音,模型会“产生幻觉”,开始胡言乱语(比如重复输出无意义的词)。
faster-whisper 内置了**Silero VAD (Voice Activity Detection)**模型。
• 原理:在识别前,先快速扫描音频,把没有人说话的“静音段”直接切掉,只把有效语音喂给 Whisper。
• 效果:不仅防止了幻觉,提升了准确率,还因为少处理了很多无效音频,进一步提升了速度。
2、批量处理
如果你有几百个小时的录音要转写,批量处理是刚需。
它允许同时并行处理多个音频片段,充分榨干 GPU 的算力,让显卡满载运行,拒绝“一核有难,八核围观”。
3、极低的迁移成本
作者非常贴心,API 的设计逻辑几乎和官方版一模一样。你不需要重写整个项目的逻辑,只需要改几行代码,就能完成迁移。
使用指南
安装:
pip install faster-whisper
OpenAI 官方 Whisper 写法:
import whisper
model = whisper.load_model("large")
result = model.transcribe("audio.mp3")
print(result["text"])
faster-whisper 写法:
from faster_whisper import WhisperModel
model_size = "large-v3"
# 这里的 device="cuda" 表示用显卡,compute_type="int8" 表示开启量化加速
model = WhisperModel(model_size, device="cuda", compute_type="int8")
segments, info = model.transcribe("audio.mp3", beam_size=5)
print("检测到语言 '%s',概率 %f" % (info.language, info.language_probability))
for segment in segments:
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
你看,核心逻辑几乎没变。只是faster-whisper返回的是一个生成器(Generator),这使得它可以流式输出,识别出一句就打印一句,不用等整个文件跑完。
更多 API 功能调用及参数可参考项目文档了解。
实测数据
光说不练假把式。根据 GitHub 上的实测数据,在处理一段 13 分钟的音频时,使用 large-v2 模型,对比结果如下:
- 速度对比(越快越好)
• Whisper:耗时 2分 23秒。
• faster-whisper:耗时 59秒。
• faster-whisper (批量模式):耗时 16秒! - 显存占用(越低越好)
• Whisper:占用 4708 MB。
• faster-whisper:占用 2926 MB。
这意味着原本只有 24G 显存的 3090/4090 才能跑得舒服的任务,现在普通的 8G/12G 显存的甜品级显卡也能轻松驾驭 large 模型了。
避坑指南
•对于短音频(< 10秒): faster-whisper 在初始化模型和 VAD 加载时有一点点开销。如果你只是用来识别一句 "Hey Siri" 这种短指令,它可能反而比官方版慢一丢丢(体感不明显)。
•对于长音频(> 30秒): 这就是它的主场了!优势极其明显,音频越长,省下的时间越多。
写在最后
faster-whisper 是开源社区对 OpenAI 原始模型进行工程化优化的典范。
它告诉我们:模型本身的强大多么重要,但推理引擎的优化同样决定了落地的生死。
只要你不是极端短音频场景,faster-whisper 都可以无脑升级进行使用。
GitHub: