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分間の音声転写のパフォーマンス比較:

実装方法 精度 ビームサイズ 時間 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シリーズ
  • カスタムファインチューニングモデル

コミュニティとサポート

まとめ

Faster-Whisperは、推論エンジンの最適化により大幅な速度向上を実現し、オリジナルのWhisperと同じ精度を維持する高性能な音声認識ソリューションです。豊富な機能、優れたエコシステムサポート、使いやすいAPIにより、音声認識アプリケーションにとって理想的な選択肢となります。開発者も研究者も、Faster-Whisperを通じて効率的な音声処理アプリケーションを迅速に構築できます。

Star History Chart