レイテンシ
別名:キーを離してからのレイテンシ
更新日:
定義
音声入力におけるレイテンシとは、話し終えてから、完成したテキストがカーソル位置に表示されるまでの時間です。ツールが即座に感じられるか、待たされると感じられるかを決める数値です。
キーを離した瞬間から測ってください。待ち始めるのはその瞬間だからです。キーを離したあとに起こることはすべて含まれます。最後の数百ミリ秒の音声の認識を終えること、整形の処理、そしてアプリへの挿入です。認識をストリーミングするツールは最後の部分だけを終えればよいのですが、バッチで処理するツールは発話全体の処理が残っているので、話した秒数が増えるほどレイテンシが長くなります。
約1秒未満なら、ほとんどの人は待ち時間を意識しなくなります。2、3秒になると、画面を見て、それからツールに目をやるようになります。それ以上になると、音声入力は文章を書く手段ではなくなり、録音して結果を待つ手段になってしまいます。
時間はどこで使われるのか
認識の残り:キーを離した時点でまだ処理されていない音声の量です。ストリーミングによってほぼゼロにできます。整形:文字起こし結果に言語モデルをかける処理です。ローカルのツールでは通常これが単独で最大のコストで、速いツールがこのモデルを小さく保ち、厳しい時間制限を設けるのはそのためです。挿入:アクセシビリティ機能を通じて、フォーカスのあるアプリに結果を入力する処理です。通常は数十ミリ秒です。ネットワーク(クラウドツールの場合):往復の通信に加え、自分では管理できないサーバ上での順番待ちがかかります。クラウドのレイテンシが時間帯によって速かったり使い物にならなかったりするのはこのためです。
レイテンシと品質は、実際にトレードオフになる
整形パスには時間がかかり、これを省けば最速のツールになります。ただしそれは、手で直さなければならない文字起こし結果を渡してくるツールでもあり、直す手間は節約した時間より大きくなります。正しい設計は選択肢を用意することです。ほぼ即座に入力される「そのまま」モードや軽いクリーンアップのモードと、少し時間はかかっても修正の要らない完全な整形モードです。ツールが決してしてはいけないのは、遅いモデルにテキストを人質に取らせることです。整形パスが遅れても、プレーンな文字起こし結果はそのまま入力されるべきです。
Macで音声入力のレイテンシを測る方法
特別なツールは要りません。マイクの音も一緒に録る画面収録なら、声と画面が同じタイムラインに乗るので、再生しながら遅れをそのまま読み取れます。
長さの違う音声入力を何回か測ってください。1回の計測ではほとんど何もわかりません。短い音声入力と長い音声入力の差を見れば、話す長さに応じて待ち時間が伸びるかどうかがわかります。
- ふだん音声入力に使うアプリを開き、テキストフィールドにカーソルを置きます。
- Shift-⌘-5を押して「スクリーンショット」を開き、画面全体または選択部分の収録を選びます。
- 「オプション」をクリックしてマイクを選び、収録に声が入るようにします。
- 収録を開始し、短い文を1つと長い文を1つ、数秒空けて音声入力します。
- メニューバーの停止ボタンをクリックします。収録は、名前が「画面収録」で始まる.movファイルとして保存されます。
- ファイルを再生し、それぞれの音声入力について2つの時点をメモします。声が止まった時点と、仕上がったテキストが画面に表示された時点です。その間隔がレイテンシです。
- 短い音声入力と長い音声入力を比べます。長いほうの待ち時間がはっきり長ければ、そのツールはバッチ処理をしています。
モデルが大きいほど待ち時間が長くなる理由
モデルのサイズは、精度と速度のもっとも直接的なトレードオフです。Whisperプロジェクトは自社モデルの相対速度を公開しており、largeモデルを1xとすると、tinyは約10x、baseは約7x、smallは約4x、mediumは約2x、turboは約8xです。これはモデル同士の相対的な数値で、実際の速度はハードウェアによって変わります。
速いだけでは、モデルはリアルタイムにはなりません。Whisperは30秒のスライディングウインドウで音声を読み込み、モデルカードには、そのままではリアルタイムの文字起こしに使えないと書かれています。こうしたモデルを使う音声入力ツールは、独自にストリーミングや分割処理を加える必要があり、その出来が体感する遅れを左右します。
ターミナルで音声認識モデルの処理時間を測る方法
アプリを介さずに認識そのものの負荷を知りたい場合は、自分の声の録音を使ってオープンソースのWhisperコマンドラインツールの処理時間を測れます。測れるのはMac上のモデルの処理だけです。整形も、テキストの挿入も、ネットワークも含まれません。
この数値は、どの音声入力アプリのレイテンシでもありません。アプリは話している間に音声を処理するからです。自分のハードウェアでモデルのサイズを比べるのに役立ちます。
- 次のコマンドでオーディオ用の依存ツールをインストールします:brew install ffmpeg
- Whisperをインストールします:pip install -U openai-whisper
- 自分が話す声を10秒ほど録音し、たとえばclip.wavとして保存します。
- time whisper clip.wav --model tinyを実行し、ターミナルに表示されるrealの時間をメモします。
- time whisper clip.wav --model turboを実行し、もう一度時間をメモします。
- それぞれのコマンドをもう一度実行して、2回目の時間を比べます。初回だけの準備にかかる時間を含めないためです。
よくある質問。
音声入力では、どのくらいのレイテンシなら十分ですか?
キーを離してから完成したテキストが出るまで1秒未満なら、即座に感じられます。1~2秒なら許容範囲です。それを超えると、待ち時間そのものが体験になってしまいます。ローカルのツールが1秒を切るには、ストリーミング認識と、時間制限付きの小さな整形モデルを使います。
長く話すほど音声入力ツールが遅くなるのはなぜですか?
バッチ方式で認識しているからです。話し終えるまで何も処理されないため、録音が長いほど待ち時間も長くなります。ストリーミング方式のツールは話している間に処理を進めるので、遅延は一定に保たれます。
クラウドの音声入力はローカルより遅いですか?
多くの場合は遅く、予測もしにくくなります。サーバとの往復は音声入力のたびに時間を加え、その時間は回線の状態や相手側の負荷によって変わります。ローカルのツールのコストは一定で、Macの性能だけで決まります。
音声入力アプリの速さはどうやって確かめればよいですか?
Shift-⌘-5でマイクをオンにして画面を収録し、文を1つ音声入力してから収録を再生します。声が止まってから仕上がったテキストが表示されるまでの時間がレイテンシです。
Whisperはリアルタイムで書き起こせますか?
単体ではできません。Whisperのモデルカードには、そのままではリアルタイムの文字起こしに使えないと書かれており、標準のコードは30秒のウインドウ単位で音声を処理します。Whisperを使っていてもリアルタイムに感じられるアプリは、独自のストリーミング層を加えています。
小さい音声認識モデルを使えば音声入力は速くなりますか?
はい。ただし精度と引き換えです。Whisperプロジェクトによると、tinyモデルはlargeモデルより約10倍、turboモデルは約8倍速く動きます。