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 快速建構高效的語音處理應用。