Login

基于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系列
  • 自定义微调模型

社区与支持

总结

Faster-Whisper是一个高性能的语音识别解决方案,通过优化推理引擎实现了显著的速度提升,同时保持了与原版Whisper相同的精度。其丰富的功能特性、良好的生态支持和易用的API使其成为语音识别应用的理想选择。无论是开发者还是研究人员,都可以通过Faster-Whisper快速构建高效的语音处理应用。

Star History Chart