在 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:
如果本文对您有帮助,也请帮忙点个 赞👍 + 在看 哈!❤️
在看你就赞赞我!
