SYSTRAN/faster-whisper

Faster Whisper transcription with CTranslate2

これは何か

faster-whisper は、OpenAI の Whisper 音声認識モデルを実行する Python ライブラリですが、高性能な推論エンジン CTranslate2 を使用します。CTranslate2 上でモデルを再実装することで、元の openai/whisper コードよりも最大 4 倍高速に文字起こしでき、メモリ使用量はほぼ同じです。このパッケージは CPU、GPU で動作し、さらに速度を引き出すための 8 ビット量子化にも対応しています。

なぜ重要なのか

Whisper は音声をテキストに変換する人気の高品質なモデルですが、リファレンス実装は比較的遅く、特に大きなモデルサイズではメモリを多く消費します。Faster-whisper は、最新の GPU や高性能なマルチコア CPU 以外の特別なハードウェアを必要とせずに、リアルタイムまたはそれに近いシナリオ(ライブキャプション、長時間録音のバッチ処理など)で同じ精度を実現可能にします。高速化により、大規模な文字起こしパイプラインのクラウドコンピューティングコストも削減されます。

始め方

  1. インストール – ライブラリは PyPI にあります:
    pip install faster-whisper
    
    (オプション:README に示されている URL を使用して、特定のコミットまたは master ブランチをインストールします。)
  2. モデルサイズを選択 – 例:"large-v3"、"distil-large-v3"、または Hugging Face Hub でサポートされている任意の Whisper サイズ。
  3. デバイスと精度を指定してモデルを作成:
    from faster_whisper import WhisperModel
    model = WhisperModel("large-v3", device="cuda", compute_type="float16")
    
  4. オーディオファイルを文字起こし:
    segments, info = model.transcribe("audio.mp3", beam_size=5)
    print(info.language, info.language_probability)
    for s in segments:
        print(f"[{s.start:.2f}s -> {s.end:.2f}s] {s.text}")
    
    segments はジェネレータなので、反復処理したときに文字起こしが実行されます。
  5. オプションの追加機能 – 単語レベルのタイムスタンプ、VAD ベースの無音除去、またはスループット向上のためのバッチ文字起こしを有効にします(正確な引数は README を参照)。

いつ使うか

  • ライブまたはリアルタイムに近いキャプション – GPU バッチモードでは、13 分の動画を約 16 秒で処理できます。
  • 大規模なオーディオコレクションのバッチ処理 – CPU int8 モードは、速度とメモリのバランスが優れています。
  • Whisper 互換の出力が必要だが、元のランタイムを許容できないプロジェクト – 例:Web サービス、デスクトップアプリ、研究パイプライン。
  • 蒸留された Whisper モデルを試したい場合 – ライブラリは distil-large-v3 チェックポイントを直接サポートしています。

制限と注意点

  • GPU の要件 – CUDA 12、cuBLAS、cuDNN 9 が必要です(または古い CUDA バージョン用に ctranslate2 をダウングレード)。Windows ではこれらのライブラリのインストールが難しい場合があります。
  • メモリ使用量 – 最速のバッチモードでは VRAM が増加します(3070 Ti でバッチサイズ 8 の場合、最大約 6 GB)。それに応じて GPU リソースを計画してください。
  • デフォルトのビームサイズ – ライブラリのデフォルトのビームサイズは 5 で、openai/whisper のデフォルトよりも大きくなっています。ビームが大きいと精度は向上しますが、遅延が増加します。
  • モデル変換 – カスタムまたはファインチューニングされた Whisper チェックポイントを実行する場合は、提供されている ct2-transformers-converter スクリプトを使用して CTranslate2 形式に変換する必要があります。
  • Silero VAD – VAD フィルタリングはバッチ文字起こしでデフォルトで有効になっています。一部のアプリケーションで音声と見なされる非常に短いポーズが削除される場合があります。

TL;DR: Faster-whisper は、CTranslate2 を活用した、Whisper のドロップインで高速・低メモリな Python ラッパーです。pip でインストールし、モデルを選択し、model.transcribe を呼び出します。リアルタイムまたは大規模な文字起こしに最適ですが、GPU を使用するには互換性のある CUDA ライブラリが必要で、カスタムモデルの変換が必要な場合があります。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト