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分間の音声転写のパフォーマンス比較:
実装方法 | 精度 | ビームサイズ | 時間 | VRAM使用量 |
---|---|---|---|---|
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)
実装方法 | 精度 | ビームサイズ | 時間 | メモリ使用量 |
---|---|---|---|---|
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フィルタリングを有効にする
- ビームサイズとバッチサイズを適切に設定する
スレッド設定
# 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を通じて効率的な音声処理アプリケーションを迅速に構築できます。