iOS 26 で新たに追加された SpeechAnalyzer フレームワークを実機でベンチマーク。従来の SFSpeechRecognizer との比較結果は驚異的でした。
SpeechAnalyzer とは
Apple が iOS 26 / WWDC25 で発表した新しい音声認識フレームワーク。公式ドキュメント
参考: Bring Advanced Speech-to-Text to Your App (WWDC25)
テスト環境
| 項目 | 値 |
|---|---|
| デバイス | iPhone 16 Pro Max |
| iOS | 26.3.1(a) |
| 言語 | 日本語 (ja_JP) |
| 音声形式 | m4a (AAC, 44.1kHz, mono) |
| SpeechAnalyzer preset | .transcription |
ベンチマーク結果
テスト1: テックカンファレンス講演(109分)
52.1MB / 109分32秒の講演録音。
| SFSpeechRecognizer | SpeechAnalyzer | |
|---|---|---|
| 処理時間 | 38.6秒 | 59.2秒 |
| 認識文字数 | 0(エラー) | 34,998文字 |
| 実時間比 | — | 0.9% |
| 結果 | ❌ error 1107 | ✅ 完全な文字起こし |
109分の音声をわずか59秒で処理。SFSpeechRecognizer はサーバー側でタイムアウト。
テスト2: プレゼンテーション短縮版(2分12秒)
1.1MB / 2分12秒のプレゼン冒頭。
| SFSpeechRecognizer | SpeechAnalyzer | |
|---|---|---|
| 処理時間 | 2.3秒 | 1.4秒 |
| 認識文字数 | 12文字 | 697文字 |
| 実時間比 | 1.7% | 1.1% |
| 結果 | 最初の一文のみ | ✅ 完全な文字起こし |
短い音声でも精度の差は歴然。SFSpeechRecognizer は「よろしくお願いいたします」の12文字のみ。
テスト3: ビジネスプレゼン(45分24秒)
73.2MB / 45分24秒のプレゼンテーション。
| SFSpeechRecognizer | SpeechAnalyzer | |
|---|---|---|
| 処理時間 | 41.3秒 | 18.1秒 |
| 認識文字数 | 0(エラー) | 7,874文字 |
| 実時間比 | — | 0.7% |
| 結果 | ❌ error 1107 | ✅ 完全な文字起こし |
45分の音声を18秒で処理。実時間のわずか0.7%。
処理速度の整理
SpeechAnalyzer 処理速度:
109分 → 59秒 (実時間の 0.9%)
45分 → 18秒 (実時間の 0.7%)
2分 → 1.4秒 (実時間の 1.1%)
→ 概算: 1時間の会議 ≈ 約36秒で文字起こし完了
Whisper との比較(参考値)
Apple は WWDC25 で SpeechAnalyzer が OpenAI Whisper Large V3 の2.2倍高速 と発表しています。
| モデル | 処理方式 | 相対速度 |
|---|---|---|
| Whisper Large V3 | クラウド or ローカル GPU | 1.0x (基準) |
| SpeechAnalyzer | 完全オンデバイス (Neural Engine) | 2.2x |
| SFSpeechRecognizer | Apple サーバー送信 | 長時間ファイル不可 |
SFSpeechRecognizer の問題点
SFSpeechRecognizer の「SF」は Speech Framework の略です。
requiresOnDeviceRecognition = true で回避可能だが精度低下)開発者向けメモ
セットアップ
SpeechAnalyzer のオンデバイスモデルは初回ダウンロードが必要(設定アプリにはない):
let transcriber = SpeechTranscriber(
locale: Locale(identifier: "ja_JP"),
preset: .transcription
)
try await AssetInventory.reserve(locale: Locale(identifier: "ja_JP"))
if let req = try await AssetInventory.assetInstallationRequest(
supporting: [transcriber]
) {
try await req.downloadAndInstall() // 約100-300MB
}
文字起こし実行
let audioFile = try AVAudioFile(forReading: url)
let analyzer = try await SpeechAnalyzer(
inputAudioFile: audioFile,
modules: [transcriber],
finishAfterFile: true
)
for try await result in transcriber.results {
print(String(result.text.characters))
}
まとめ
SpeechAnalyzer は音声認識の世界を変えるフレームワークです。
iOS 26 対応アプリを開発中の方は、SFSpeechRecognizer からの移行を強くお勧めします。
Nehan.AI — 睡眠やヘルスケアを見やすく管理。毎日の日記をプライバシーに配慮しながらAIが自動生成。