speech-to-text に関するセッション。段階的に音声を追いながら精度を高めているというところが興味深かった。タイムコードをもとに、音声再生とテキストとを表示の上で対応づけられる点も面白い。
0:00 – Introduction
- 新しい speech-to-text API
SpeechAnalyzerを紹介 SpeechAnalyzerは Notes, Voice Memos, Journal など多くのシステムアプリで採用- Apple Intelligence と組み合わせることで通話要約などの強力な機能を実現
- iOS 10 でで導入された
SFSpeechRecognizer:音声テキスト変換モデルを提供 - 短い音声入力で高い精度、Apple のサーバー活用
- 一部ユースケースで期待に満たなかった
- このセッションでは API の概要、新モデルの機能、実装デモを解説
- iOS 26 で導入された
SpeechAnalyzer - 高速かつ柔軟な新しい speech-to-text モデルを採用し
- 長文や遠距離の音声(会議、会話など)に強い
2:41 – SpeechAnalyzer API
SpeechAnalyzerは分析セッションを管理し、SpeechTranscriberなどの用途に応じたモジュールを追加して使用- 音声バッファは非同期で処理され、入力と結果は
AsyncSequenceで処理を分離 - タイムコードを使って音声と結果を正確に関連付け
- すべての API 操作はタイムコードでスケジュールされ、処理順序が予測可能に
- モジュールの処理範囲が順番かつ重複せず、オーディオ全体を網羅
- オプションで 暫定結果を有効にし、段階的な結果表示が可能
- 発話と同時のリアルタイムで推測結果をおおまかに表示(Volatile results)
- 音声とコンテクストを追加してあとから精度を上げて更新する(Finalized results)
7:03 – SpeechTranscriber model
SpeechTranscriberは Apple が設計した新しいオンデバイスモデルを採用- マイクから遠い話者がいる会議など、長文や会話のユースケースをサポート
- 低遅延、高精度、高い可読性を実現し、ユーザーのプライバシーを保護
AssetInventoryAPI を介して必要なモデルアセットをオンデマンドでインストール- モデルはシステムストレージに保持され、アプリのダウンロードサイズやメモリ使用量を圧迫しない
- アップデートは自動的にインストール
- 多くの言語に対応し、watchOS を除く全プラットフォームで利用可能
- 未対応の言語やデバイス向けに、従来の
SFSpeechRecognizerと同等の機能を持つDictationTranscriberも提供
9:06 – Build a speech-to-text feature
SpeechAnalyzerを使ってライブ文字起こし機能を実装するデモを紹介- 音声を再生すると再生中に対応するテキストセグメントが自動でハイライト
- 3つのステップで実装:
SpeechTranscriberの設定、モデルの存在確認、結果のハンドリング SpeechTranscriberを初期化し、volatile results や finalized results などのオプションを設定AssetInventoryを使って、文字起こしに必要な言語モデルがダウンロードされているか確認し、なければリクエストAsyncStreamを介して返される結果オブジェクトには、AttributedString形式のテキストと、isFinalプロパティが含まれるvolatileTranscriptとfinalizedTranscriptを個別に管理し、UIに反映audioTimeRange属性(CMTimeRange)を使って、音声再生とテキストのハイライトを同期AVAudioEngineを使って音声入力ストリームを処理し、SpeechTranscriberに渡す- 録音停止時は、
finalizeを呼び出して volatile results を確定させることが重要 FoundationModelsAPI と連携して、文字起こし結果からタイトルを生成するような応用も可能