完全ベンチマーク表:Apple Silicon(M1–M5)上のWhisperパフォーマンス
| Chip | Tiny | Base | Small | Medium | Large-v3 |
|---|---|---|---|---|---|
| M1 | 32× | 20× | 12× | 5× | — |
| M1 Pro | 38× | 24× | 16× | 7× | — |
| M1 Max | 45× | 30× | 22× | 10× | — |
| M1 Ultra | 55× | 38× | 28× | 14× | — |
| M2 | 36× | 23× | 14× | 6× | — |
| M2 Pro | 42× | 28× | 20× | 9× | — |
| M2 Max | 50× | 35× | 26× | 12× | — |
| M2 Ultra | 60× | 42× | 32× | 17× | — |
| M3 | 40× | 26× | 16× | 7× | — |
| M3 Pro | 46× | 32× | 22× | 10× | — |
| M3 Max | 55× | 40× | 30× | 14× | — |
| M4 | 44× | 30× | 18× | 8× | — |
| M4 Pro | 50× | 36× | 26× | 12× | — |
| M4 Max | 60× | 44× | 34× | 16× | — |
| M5 (base) | 48× | 34× | 22× | 10× | — |
| M5 Pro | 55× | 40× | 30× | 14× | — |
| M5 Max | 65× | 48× | 38× | 18× | — |
×Nリアルタイム = 1秒でN秒分の音声を文字起こし。Metal加速付きwhisper.cppによるベンチマーク。M1 Pro以降のすべてのモデルでlarge-v3をリアルタイム以上で実行可能。
Whisperモデルサイズ — どれを選ぶべきか?
| モデル | パラメータ数 | ディスク容量 | RAM使用量 | 英語WER | 最適用途 |
|---|---|---|---|---|---|
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
| — | — | — | — | — | — |
WER(単語誤り率)は英語LibriSpeechテストセットによる。Large-v3-turboとdistil-large-v3はほとんどのMacでリアルタイム処理の最適バランス — large-v3品質の4–6×の速度。
Metal vs Core ML vs Apple Neural Engine:どのバックエンドを使うか?
Apple SiliconはWhisperに3つの加速経路を提供します。それぞれトレードオフがあります。
Metal(whisper.cpp経由)— 推奨:Apple Metal GPUフレームワークを使用、すべてのMシリーズチップに対応、large-v3でM5 Proにて10–12×リアルタイム、make WHISPER_METAL=1でセットアップ。最適用途:ほとんどのユーザー、最も簡単なセットアップ、実績のあるパフォーマンス。
Core ML(Apple Core MLフォーマット経由)— 上級者向け:Apple機械学習フレームワークを使用、一部の処理でNeural Engine(ANE)を活用可能、一部のワークロードで15–20%高速化、モデル変換が必要(10–15分のセットアップ)。最適用途:最高速度を求める上級ユーザー。
Apple Neural Engine(ANE)— 限定的な用途:すべてのMシリーズチップ搭載の専用AIアクセラレータ、直接アクセス不可(Core ML経由のみ)、アーキテクチャの不一致によりWhisperはANEを十分活用できず、小さいモデル(tiny、base)での使用に限る。最適用途:バッテリー駆動のラップトップでのWhisper tiny/base。
選択マトリックス:初回セットアップ → Metal(whisper.cpp)。large-v3で最高速度 → Metal。バッテリー駆動ラップトップ、baseモデル → ANE付きCore ML。本番サーバー → Metal(実績あり、信頼性高)。リアルタイム文字起こし → ストリーミングモード付きMetal。MacインスタンスへのCloudデプロイ → Metal(コンテナ化可能)。
- Metal(whisper.cpp):高速、広い互換性、最も簡単なセットアップ
- Core ML:Neural Engine最適化、一部のワークロードで15–20%の速度向上(変換が必要)
- Apple Neural Engine:大型モデルへの恩恵は限定的、tiny/baseのラップトップ使用に最適
セットアップ:Metal加速付きwhisper.cpp
- 1依存関係のインストール
Why it matters: xcode-select --install (Xcodeツール) brew install ffmpeg (音声変換) - 2Metal付きwhisper.cppのクローンとビルド
Why it matters: git clone https://github.com/ggerganov/whisper.cpp cd whisper.cpp make WHISPER_METAL=1 ./main -h | grep -i metal - 3モデルのダウンロード
Why it matters: bash ./models/download-ggml-model.sh small (466 MB、リアルタイム) bash ./models/download-ggml-model.sh large-v3 (3 GB、最高品質) bash ./models/download-ggml-model.sh large-v3-turbo (1.6 GB、バランス型) - 4音声ファイルの文字起こし
Why it matters: ./main -m models/ggml-large-v3.bin -f /path/to/audio.wav ./main -m models/ggml-large-v3.bin -f audio.wav -oj (JSON) ./main -m models/ggml-large-v3.bin -f audio.wav -l en (言語指定) - 5非WAV音声を先に変換
Why it matters: ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav ./main -m models/ggml-large-v3.bin -f output.wav
リアルタイムストリーミング文字起こし(ライブマイク)
マイクからのライブ文字起こし — 音声アシスタント、会議文字起こし、アクセシビリティツール向け。
オプション1:whisper.cppのストリームモード
./stream -m models/ggml-small.bin --step 500 --length 5000
# --step 500: 500msごとに処理
# --length 5000: 直近5秒のコンテキストを保持
オプション2:faster-whisperを使ったPython(以下のコードブロックを参照)
M5 Proでの遅延:smallモデル ~200ms、large-v3-turbo ~400–600ms、large-v3 ~800ms–1.2sのリアルタイム遅延。
import sounddevice as sd
import numpy as np
from faster_whisper import WhisperModel
model = WhisperModel("large-v3-turbo", device="cpu", compute_type="int8")
buffer = []
chunk_duration = 3
sample_rate = 16000
def callback(indata, frames, time, status):
buffer.append(indata.copy())
if len(buffer) * 1024 / sample_rate >= chunk_duration:
audio = np.concatenate(buffer).flatten().astype(np.float32)
segments, _ = model.transcribe(audio, beam_size=5)
for segment in segments:
print(segment.text)
buffer.clear()
with sd.InputStream(callback=callback, channels=1, samplerate=sample_rate):
print("Listening... (Ctrl+C to stop)")
while True:
sd.sleep(1000)音声アシスタントパイプライン:Whisper + Ollama + Piper TTS
Apple Silicon上で完全にローカル動作する音声アシスタントの完全コード。
import sounddevice as sd
import numpy as np
import requests
import subprocess
from faster_whisper import WhisperModel
WHISPER_MODEL = "large-v3-turbo"
OLLAMA_URL = "http://localhost:11434/api/chat"
LLM_MODEL = "llama3.1:8b"
SAMPLE_RATE = 16000
whisper = WhisperModel(WHISPER_MODEL, device="cpu", compute_type="int8")
def record_audio(duration=5):
print("Listening...")
audio = sd.rec(int(duration * SAMPLE_RATE),
samplerate=SAMPLE_RATE,
channels=1,
dtype=np.float32)
sd.wait()
return audio.flatten()
def transcribe(audio):
segments, _ = whisper.transcribe(audio, beam_size=5)
return " ".join([seg.text for seg in segments])
def llm_respond(user_text):
response = requests.post(OLLAMA_URL, json={
"model": LLM_MODEL,
"messages": [{"role": "user", "content": user_text}],
"stream": False
})
return response.json()["message"]["content"]
def speak(text):
subprocess.run(
["piper", "--model", "en_US-amy-medium.onnx"],
input=text.encode(),
check=True
)
while True:
audio = record_audio(duration=5)
user_text = transcribe(audio)
print(f"You: {user_text}")
if not user_text.strip():
continue
response = llm_respond(user_text)
print(f"AI: {response}")
speak(response)Macモデル別の最適Whisper設定
| Mac設定 | 推奨モデル | リアルタイム倍率 | ユースケース |
|---|---|---|---|
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
| — | — | — | — |
リアルタイム音声アシスタント向け:最低遅延のためsmallまたはlarge-v3-turboを使用。会議/ポッドキャスト文字起こし向け:最高精度のためlarge-v3を使用(1–2秒の遅延は許容範囲)。
ローカルWhisper vs クラウド音声認識サービス
| 指標 | Whisperローカル(M5 Pro) | Google Speech-to-Text | OpenAI Whisper API | AssemblyAI |
|---|---|---|---|---|
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
| — | — | — | — | — |
月額コスト(1日8時間):Whisperローカル 0円、Google 約52,000円、OpenAI 約13,000円、AssemblyAI 約23,000円。機密性の高い作業(医療、法律、ジャーナリズム)では、ローカルWhisperが唯一の選択肢。高ボリュームの文字起こし(クラウドで月10,000円以上)の場合、ローカルMacは12ヶ月で元が取れます。
WhisperはクラウドAPIより高速ですか?
M5 Proでローカル動作:10×リアルタイム(遅延100ms)。クラウドAPI:ネットワークによる100–500msの遅延。ローカルの方が高速かつ無料。
Whisperは複数の話者に対応できますか?
はい、タイムスタンプで話者を分離できます。話者のIDを特定するには後処理や話者識別(ダイアライゼーション)ツールを使用してください。
対応言語はどれくらいですか?
99言語に対応し自動検出。言語によって精度が異なります — 英語は2.5% WER、その他の言語は5–15% WER。
速度と品質のバランスが最も良いWhisperモデルはどれですか?
Large-v3-turboまたはdistil-large-v3。どちらもlarge-v3の精度の約95%を4–6×の速度で達成。ほとんどのリアルタイムユースケースで推奨。
Whisperはアクセントのある英語や非ネイティブスピーカーに対応していますか?
はい、ただしWERは上昇します。ネイティブ英語:約2.5%。強いアクセント/非ネイティブ:5–12%。Large-v3は小さいモデルよりもアクセントをより良く処理します。
Whisperはポッドキャストや音楽の文字起こしに使えますか?
ポッドキャスト:はい、音声コンテンツに優れています。歌詞付きの音楽:不向き — Whisperは音声用に学習されています。音楽には専門のモデルを使用してください。
技術用語に対するWhisperの精度はどのくらいですか?
様々です。一般的な技術用語:良好。高度に専門的な用語:誤文字起こしの可能性があります。精度向上には--promptフラグで想定語彙を指定してください。
1台のMacで複数のWhisperインスタンスを実行できますか?
はい、メモリ依存です。M5 Pro 36GB:large-v3インスタンス2つを同時実行可能。M5 Max 128GB:4–6インスタンス、またはLLM/TTSと組み合わせた1インスタンス。