faster-whisper 语音转文字实战:4 倍速推理与低内存占用的上手指南
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
转写同一段 13 分钟的音频,openai/whisper 在 GPU 上要 4 分 30 秒,faster-whisper 只要 54 秒,精度不变,显存还少了一半多。faster-whisper 是用 CTranslate2 推理引擎重写的 Whisper 语音转文字库,面向需要批量处理音频、生成字幕、或者想在普通硬件上跑大模型的 Python 开发者。
先跑起来:装好 faster-whisper 并转出第一段文字
第 1 步:确认你的环境
- Python 3.8 或更高版本
- 不用手动安装 FFmpeg。音频解码由 PyAV 库完成,FFmpeg 已经打包在 PyAV 里
- GPU 可选。启用 GPU 需要先装 NVIDIA 的 cuBLAS(CUDA 12 版)和 cuDNN 8
- 注意:最新版 ctranslate2 只支持 CUDA 12。你的机器是 CUDA 11 的话,先执行降级:
pip install --force-reinstall ctranslate2==3.24.0第 2 步:安装
pip install faster-whisper第 3 步:最小可运行代码
from faster_whisper import WhisperModel model = WhisperModel("large-v3", device="cuda", compute_type="float16") segments, info = model.transcribe("audio.mp3", beam_size=5) print(f"语言: {info.language} (概率 {info.language_probability:.2f})") for segment in segments: print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")没有 GPU?把构造参数换成这一行即可:
model = WhisperModel("large-v3", device="cpu", compute_type="int8")💡 一个提醒:segments是生成器,调用transcribe后并不会马上开始转写,真正迭代它时才启动。想立刻跑完全部转写,先执行segments = list(segments)。
凭什么更快:CTranslate2 与 int8 量化
推理引擎换成了 CTranslate2
Whisper 原本靠 PyTorch 运行,而 PyTorch 是为训练设计的大而全框架,纯推理时会拖着一堆用不上的开销。CTranslate2 是专门做 Transformer 推理的引擎:权重按更紧凑的格式存储,计算图提前编译,对 CUDA 内核和 CPU 向量化指令的利用率更高。打个比方:原版像是把模型按"训练用"的散装形态搬上 GPU,CTranslate2 则给模型压缩打包、重新码好仓再发货。
int8 量化再砍掉一半内存
量化是把权重从 16 位浮点数压成 8 位整数,类似图片压缩:体积减半,画质略损,但对语音识别这种任务精度几乎不掉。GPU 上推荐int8_float16(权重 int8、关键计算回 fp16),CPU 上直接用int8。
基准数据
官方基准:转写 13 分钟音频,波束大小 5。
| 环境 | 实现 | 精度 | 耗时 | 显存/内存 |
|---|---|---|---|---|
| GPU(Tesla V100S,CUDA 11.7.1),large-v2 | openai/whisper | fp16 | 4分30秒 | 11325 MB |
| 同上 | faster-whisper | fp16 | 54秒 | 4755 MB |
| 同上 | faster-whisper | int8 | 59秒 | 3091 MB |
| CPU(Xeon Gold 6226R,8 线程),small | openai/whisper | fp32 | 10分31秒 | 3101 MB |
| 同上 | faster-whisper | fp32 | 2分44秒 | 1675 MB |
| 同上 | faster-whisper | int8 | 2分04秒 | 995 MB |
综合看:GPU 上快约 5 倍,CPU 上快约 4 倍,内存占用下降 60% 以上。参照项 whisper.cpp 在 CPU fp32 下要 17 分 42 秒、占 1581 MB。
进阶玩法:按需求选参数
需要逐字时间戳(逐字字幕)?
遇到每个词都要精确起止时间的字幕需求 → 打开word_timestamps:
segments, _ = model.transcribe("audio.mp3", word_timestamps=True) for segment in segments: for word in segment.words: print(f"[{word.start:.2f}s -> {word.end:.2f}s] {word.word}")长录音里静音太多,想省算力?
遇到会议、播客这类夹杂大段静默的音频 → 打开 VAD 过滤:
segments, _ = model.transcribe( "audio.mp3", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=500), )VAD(语音活动检测)由内置的 Silero VAD 模型完成,先找出有人说话的时间段,再只把说话段送进识别模型。默认行为比较保守,只去掉超过 2 秒的静音;其余可调参数见 faster_whisper/vad.py。
显存不够用,或还想再快点?
遇到 GPU 显存吃紧 →compute_type换成int8_float16;遇到追求速度 → 把beam_size调小(默认 5,最小 1;它是波束搜索的候选路径数,越小越快、精度略降);temperature在 0–1 之间调整输出的确定性。另外,用批处理接口(batch_size参数,参见BatchedInferencePipeline)对同一条音频并行推理,能进一步提高 GPU 利用率。
模型尺寸怎么选?
- tiny / base:最快,适合实时场景
- small:速度与精度均衡,大多数场景够用
- medium:精度更高
- large-v3:精度最高,多语言支持最全
- distil-large-v3:蒸馏版,精度接近 large-v3,速度更快
想用自己微调的模型?
遇到基于 Transformers 库微调的 Whisper 模型 → 先转成 CTranslate2 格式:
pip install transformers[torch]>=4.23 ct2-transformers-converter --model openai/whisper-large-v3 --output_dir whisper-large-v3-ct2 \ --copy_files tokenizer.json preprocessor_config.json --quantization float16之后直接按本地目录加载:
model = faster_whisper.WhisperModel("whisper-large-v3-ct2")--model既接受模型名,也接受本地模型目录路径,所以把它换成你的微调模型目录即可。
工程与生态:核心模块与社区集成
核心模块各一句话:
- faster_whisper/transcribe.py:
WhisperModel所在的主转录逻辑,含语言检测、波束搜索、词级对齐 - faster_whisper/audio.py:音频文件解码,重采样到 16kHz 波形
- faster_whisper/feature_extractor.py:波形转 80 维梅尔频谱特征
- faster_whisper/tokenizer.py:分词与转写/翻译特殊 token 的处理
- faster_whisper/vad.py:Silero VAD 的封装与参数定义
社区集成项目(不列链接,按名字检索即可):
- faster-whisper-server:OpenAI 兼容的 API 服务器,支持流式转写
- WhisperX:提供说话人分离和更精确的词级时间戳
- whisper-ctranslate2:命令行客户端,参数与原版 Whisper CLI 兼容
- WhisperLive:近实时的流式转写实现
faster-whisper 用推理引擎替换加量化的组合,把 Whisper 的时间和内存开销压到原来的几分之一,是当前 Python 音频转文字链路里最省事的 GPU 语音识别加速方案。想继续读源码,直接执行:git clone https://gitcode.com/GitHub_Trending/fa/faster-whisper
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考