SYSTRAN/faster-whisperPlease refer to the latest official releases for information GitHub Homepage
基于CTranslate2的Whisper语音识别优化实现,比原版快4倍且内存占用更少
MITPython 17.0kSYSTRANfaster-whisper Last Updated: 2025-06-02
Faster-Whisper 项目详细介绍
项目概述
Faster-Whisper是OpenAI Whisper模型的重新实现,使用CTranslate2作为快速推理引擎。相比原版openai/whisper,在保持相同精度的情况下,速度提升最多4倍,同时内存占用更少。通过8位量化技术,可以在CPU和GPU上进一步提升效率。
核心特性
🚀 性能优势
- 速度提升:比原版Whisper快4倍
- 内存优化:更低的内存占用
- 量化支持:支持8位量化进一步提升性能
- 批量处理:支持批量转录提升吞吐量
🛠️ 技术特点
- 基于CTranslate2推理引擎
- 支持GPU和CPU执行
- 兼容原版Whisper模型
- 支持多种精度模式(FP16、FP32、INT8)
- 内置音频解码(无需FFmpeg)
性能对比
GPU基准测试(NVIDIA RTX 3070 Ti 8GB)
转录13分钟音频的性能对比:
实现方案 | 精度 | Beam Size | 时间 | 显存占用 |
---|---|---|---|---|
openai/whisper | fp16 | 5 | 2m23s | 4708MB |
whisper.cpp (Flash Attention) | fp16 | 5 | 1m05s | 4127MB |
faster-whisper | fp16 | 5 | 1m47s | 3244MB |
faster-whisper | int8 | 5 | 1m33s | 2926MB |
CPU基准测试(Intel Core i7-12700K)
实现方案 | 精度 | Beam Size | 时间 | 内存占用 |
---|---|---|---|---|
openai/whisper | fp32 | 5 | 6m58s | 2335MB |
whisper.cpp | fp32 | 5 | 2m05s | 1049MB |
faster-whisper | fp32 | 5 | 2m37s | 2257MB |
faster-whisper | int8 | 5 | 1m42s | 1477MB |
安装说明
系统要求
- Python 3.9或更高版本
- GPU执行需要NVIDIA CUDA库支持
基本安装
pip install faster-whisper
GPU支持安装
需要安装NVIDIA库:
- CUDA 12.x
- cuDNN 9.x
- cuBLAS
pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*
export LD_LIBRARY_PATH=`python3 -c 'import os; import nvidia.cublas.lib; import nvidia.cudnn.lib; print(os.path.dirname(nvidia.cublas.lib.__file__) + ":" + os.path.dirname(nvidia.cudnn.lib.__file__))'`
Docker方式
# 使用官方NVIDIA CUDA镜像
docker run --gpus all -it nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04
使用指南
基本转录
from faster_whisper import WhisperModel
model_size = "large-v3"
# GPU执行(FP16)
model = WhisperModel(model_size, device="cuda", compute_type="float16")
# 或GPU执行(INT8)
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")
# 或CPU执行(INT8)
# model = WhisperModel(model_size, device="cpu", 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))
批量转录
from faster_whisper import WhisperModel, BatchedInferencePipeline
model = WhisperModel("turbo", device="cuda", compute_type="float16")
batched_model = BatchedInferencePipeline(model=model)
segments, info = batched_model.transcribe("audio.mp3", batch_size=16)
for segment in segments:
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
词级时间戳
segments, _ = model.transcribe("audio.mp3", word_timestamps=True)
for segment in segments:
for word in segment.words:
print("[%.2fs -> %.2fs] %s" % (word.start, word.end, word.word))
语音活动检测(VAD)
# 启用VAD过滤
segments, _ = model.transcribe("audio.mp3", vad_filter=True)
# 自定义VAD参数
segments, _ = model.transcribe(
"audio.mp3",
vad_filter=True,
vad_parameters=dict(min_silence_duration_ms=500),
)
Distil-Whisper支持
from faster_whisper import WhisperModel
model_size = "distil-large-v3"
model = WhisperModel(model_size, device="cuda", compute_type="float16")
segments, info = model.transcribe(
"audio.mp3",
beam_size=5,
language="en",
condition_on_previous_text=False
)
for segment in segments:
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
模型转换
从Transformers转换
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 = WhisperModel("whisper-large-v3-ct2")
# 从Hugging Face Hub加载
model = WhisperModel("username/whisper-large-v3-ct2")
应用场景
- 语音转文本
- 实时转录
- 字幕生成
- 多语言翻译
- 语音分析
- 音频内容索引
配置与优化
日志配置
import logging
logging.basicConfig()
logging.getLogger("faster_whisper").setLevel(logging.DEBUG)
性能优化建议
- 使用GPU加速获得最佳性能
- 根据硬件选择合适的精度模式
- 批量处理提升吞吐量
- 启用VAD过滤减少处理时间
- 合理设置beam size和batch size
线程配置
# 设置CPU线程数
OMP_NUM_THREADS=4 python3 my_script.py
技术架构
核心组件
- CTranslate2:快速推理引擎
- PyAV:音频解码库
- Silero VAD:语音活动检测
- Transformers:模型转换支持
支持的模型
- OpenAI Whisper系列(tiny、base、small、medium、large-v1/v2/v3)
- Distil-Whisper系列
- 自定义微调模型
社区与支持
- GitHub仓库:https://github.com/SYSTRAN/faster-whisper
- PyPI包:https://pypi.org/project/faster-whisper/
- Hugging Face模型:https://huggingface.co/Systran
总结
Faster-Whisper是一个高性能的语音识别解决方案,通过优化推理引擎实现了显著的速度提升,同时保持了与原版Whisper相同的精度。其丰富的功能特性、良好的生态支持和易用的API使其成为语音识别应用的理想选择。无论是开发者还是研究人员,都可以通过Faster-Whisper快速构建高效的语音处理应用。