MENU

M2 Pro Mac miniでWhisper.cpp(large-v3)をMetal対応で動かして文字起こしする手順

本記事は、Apple Silicon搭載のMac mini(M2 Pro)を対象とする。GPUアクセラレーションにはMetalを用い、Core MLは使用しない構成である。macOSはSonoma 14以降、XcodeとCommand Line Toolsがインストールされているものとする。

まず、開発環境を確認する。

xcode-select --install
brew install cmake ffmpeg git

ffmpeg は音声ファイルを16bit PCM WAVに変換するために必要である。

目次

Whisper.cppの取得とモデルの準備

Whisper.cppはGitHub上で公開されているC++実装である。リポジトリを取得し、作業ディレクトリに移動する。

git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp

次に、OpenAIのWhisperモデルをGGML形式に変換したファイルをダウンロードする。今回は精度を最優先とし、large-v3 モデルを使用する。

./models/download-ggml-model.sh large-v3

完了後、models/ggml-large-v3.bin が存在することを確認する。

Metal対応でビルドする

Apple GPUを活用するには、Metalバックエンドを有効にしてビルドする必要がある。

rm -rf build
cmake -B build -DGGML_METAL=1
cmake --build build -j --config Release

この設定で、GPU演算をMetal経由で行うようになる。ビルドが完了すると、build/bin/whisper-cli が生成される。

音声ファイルの変換

Whisper.cppは16bitモノラルのWAV形式を前提としているため、MP3など他の形式を使用する場合は事前に変換する。

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le test.wav

これにより、16kHz・モノラルのtest.wavが生成される。

文字起こしの実行

Metal対応ビルドでは、GPU利用は自動で行われるため追加オプションは不要である。
次のコマンドを実行する。

./build/bin/whisper-cli \
  -m models/ggml-large-v3.bin \
  -f test.wav \
  --output-txt \
  --threads 8

処理中、ログに以下のような行が出力されればMetalが正しく有効になっている。

ggml_metal_device_init: GPU name: Apple M2 Pro
whisper_backend_init_gpu: using Metal backend

METAL = 1 が確認できれば、GPUアクセラレーションが動作している。結果は test.wav.txt として同ディレクトリに出力される。

補足:Core MLとの違い

Whisper.cppではMetalとCore MLを同時に使うことはできない。MetalはGPU(Apple GPU)を直接利用する低レベルAPIであり、Core MLはApple Neural Engine(ANE)を介した高レベル実行環境である。

まとめ

M2 Pro Mac mini上でのWhisper.cpp(large-v3)実行は、Metalバックエンドを有効にするだけでGPUが自動的に検出される。Metalを利用することで、CPU実行時と比べて2〜3倍程度の速度向上が期待できる。

目次