MacでWhisperを高速化する方法①:faster-whisper編(Python実装・Apple Silicon対応)

AI音声

Whisperをローカルで動かして「少し遅い」と感じたら、次に試すべきはfaster-whisper
これはOpenAI公式のopenai-whisperを高速化したCTranslate2ベースのPython実装です。
CPUでもGPUでも動作し、Apple Silicon(M1/M2/M3)では約2〜3倍の速度が出ることもあります。
本記事では、Mac上での導入から実行、モデルと精度の選び方までを最短で解説します。

faster-whisperとは(概要)

faster-whisper は Whisperを軽量化したPython実装で、
内部で CTranslate2 という高速推論エンジンを使用しています。

  • 特徴
    • CPU/GPU対応(Apple Silicon対応)
    • モデルを軽量化・最適化して高速処理
    • 量子化(int8 / float16)によりメモリ削減
    • Pythonスクリプトからそのまま呼び出し可能

オリジナルのopenai-whisperに比べ、
CPUでは約2〜3倍・GPUでは最大5倍の速度差が出ることがあります。
特に長時間音声(会議録・動画など)を扱う場合に有効です。

サンプルコードで実行する

以下のサンプルを fw_transcribe.py として保存し、
ローカルの音声ファイルを引数に渡すだけで動作します。

# fw_transcribe.py
from faster_whisper import WhisperModel
import sys

MODEL_NAME = "small"   # "tiny", "base", "small", "medium", "large-v3" など
COMPUTE_TYPE = "int8"  # "int8", "int8_float16", "float16", "float32"

def main(audio_path: str):
    model = WhisperModel(MODEL_NAME, compute_type=COMPUTE_TYPE)
    segments, info = model.transcribe(audio_path, language="ja")
    text = "".join(segment.text for segment in segments)
    print(text)

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python fw_transcribe.py <audio_file>")
        sys.exit(1)
    main(sys.argv[1])

実行例

  • 処理が完了すると、標準出力に文字起こし結果が表示されます。
  • 精度と速度のバランスを見ながら、MODEL_NAMECOMPUTE_TYPEを変更して試せます。
# smallモデル、int8で実行
$ python fw_transcribe.py sample.wav
これはウィスパーのテスト用温性サンプルです

# smallモデル、float32で実行
$ python fw_transcribe.py sample.wav
これはウィスパーのテスト用音声サンプルです

# mediumモデル、int8で実行
$ python fw_transcribe.py sample.wav
これはウィスパーのテスト用音声サンプルです

Sayコマンドで生成した音声をサンプルに使用しました。
最初のsmallモデル、int8では音の認識は正しいものの漢字の誤りが見られます。
より上位のモデル、またはfloat32の利用で、漢字や句読点の正確性が改善する傾向があります。

モデルサイズ別の目安(精度・速度)

Whisperは複数のモデルサイズが用意されています。
以下はMacBook Air M2での実測に基づく目安です(1分音声を処理)。

モデル精度処理時間(目安)用途
tiny★★☆☆☆約3〜4秒試用・短時間音声
base★★★☆☆約5〜6秒ノート・議事録の要点抽出
small★★★★☆約8〜10秒実務下書きレベル
medium★★★★★約15秒〜高精度・長時間処理

※実測はApple M2 + Python 3.11環境でのCPU実行結果。
精度は録音品質により変動します。

6. まとめ

  • 導入手順pip install faster-whisper
  • 最小実行python fw_transcribe.py sample.m4a
  • 推奨設定MODEL_NAME="small", COMPUTE_TYPE="int8"
  • メリット:公式Whisperより約2〜3倍高速、軽量・安定

Whisperを使いこなす第一歩は、「動作を軽くする」こと。faster-whisperはその最短ルートです。
このあと紹介するwhisper.cpp編(ネイティブCLI)では、さらに軽量・スクリプト不要で実行できる手法を紹介します。

リンク集

タイトルとURLをコピーしました