Engineering

マルチモーダル音声認識: 画面を見るリスナーを作る

なぜ音声のみの ASR が実ワークフローでまだ失敗するのか、Loqua がローカル画面コンテキストを使って意図の曖昧性をどう解消するか。

TL;DR

マルチモーダル音声認識は書き起こしと有用なディクテーションの間の欠けているレイヤーです。Loqua は Mac 向けの音声入力ツールで、音声をローカル画面コンテキスト、アクティブアプリメタデータ、カーソル周辺と組み合わせます。これにより、同じ音が宛先アプリ内で正しい識別子、指示、フォーマットされたテキストになります。

音声のみの音声認識は、残りの失敗が過小評価されやすいほどに良くなりました。クリーンな音声ベンチマークは本当の製品問題を隠します: ユーザーはアプリ内、可視コードの周囲、混合言語、「この関数」や「上のブレット」のような部分参照でディクテーションします。

ASR がまだ失敗する場所

古典的な例は同音異義語です。「From foo import bar」と from foo import bar は似た音ですが異なる世界に属します。カーソルが TypeScript ファイルにあるとモデルが知らなければ、「cache the auth client」と「cash the auth client」も同様です。音声だけでは宛先を確実に推論できません。

コード識別子はこれを鋭くします。ユーザーが「fetch profile」と言うかもしれませんが、可視の関数は fetchProfile です。書き起こしモデルは言葉を聞きます。ディクテーションモデルは識別子を保持すべきです。マルチモーダル音声認識は可視テキストを装飾ではなく証拠として扱います。

指示詞は三つ目の鋭いエッジです。ユーザーが「これをガード句で置き換えて」と言うとき、話されたテキストは技術的には完全な要求ですが、その意味は完全に「これ」が何を指すかに依存します。選択認識や安定したカーソル参照がなければ、システムは推測しなければならず、間違った推測は再タイプより時間を無駄にします。音声のみの ASR は指示詞をまったく解決できません。指示語を書き起こして、ダウンストリームツールがそれを解明することを願うだけです。

  • 同音異義語: 平易な英語 vs コード構文。
  • エンティティ: パッケージ名、クラス名、ファイルパス、コマンドフラグ。
  • 指示詞: 「これ」「それ」「上記」「選択された部分」。
  • フォーマット: 散文、ブレット、コードコメント、コミットメッセージ、プロンプト。

マルチモーダルリスナーアーキテクチャ

Loqua のリスナーには三つのローカル入力があります: ストリーミング音声特徴、画面由来コンテキスト、アプリメタデータ。音声経路は何が言われたかを提案します。コンテキスト経路はテキストが着地する場所を要約します: アプリ、フィールドタイプ、選択テキスト、近接トークン、可視の構造的手がかり。アプリ経路は改行、Markdown、コード構文が適切かどうかなどの制約を加えます。

リスナーは画面全体を人間のように理解する必要はありません。ディクテーションに必要な最小限の有用な証拠が必要です。VS Code では、可視識別子、言語モード、選択コードかもしれません。Slack では、スレッドトピックと最近のトーン。Notes では、見出しレベルとリストコンテキスト。

意図的にしないこと

いくつかの機能は意図的にスコープ外です。リスナーはリモートコンテンツのスクリーンショットで OCR を実行せず、ユーザーが積極的にタイプしていないウィンドウを要約せず、永続的な視覚履歴を構築しません。画像から細かい意図を推論しようともしません: グラフ、ビデオフレーム、デザインキャンバスは解釈されず、周囲のテキストのみが解釈されます。それぞれの除去は、予測可能性とよりクリーンなプライバシー境界のために能力をトレードする意図的な製品選択です。

これが、私たちが狭い製品的意味でのみ audio visual dictation と呼ぶ理由です: ライティングのための音声 + 視覚コンテキスト。目標は汎用的な視覚推論ではありません。目標はカーソル位置でのより少ない間違った言葉です。

画面コンテキストが曖昧性をどう解消するか

画面コンテキストディクテーションは可能性を制約することで出力を変えます。カーソルが Python ファイル内にあり、可視行にすでに from fastapi import が含まれていれば、話された単語「router」は汎用名詞よりもシンボルである可能性が高いです。カーソルが Gmail にあれば、同じフレーズは文になるべきです。

あなたが話す
「auth client が欠落している場合は fetch profile の前にガードを追加して」
Loqua の書き込み (VS Code)
if (!authClient) return null;
const profile = await fetchProfile(authClient);
あなたが話す
「先ほどプッシュした PR を見て、リトライロジックが正しいか教えてもらえますか」
Loqua の書き込み (Slack)
先ほどプッシュした PR を見ていただけますか? リトライロジックが正しいか確認したいです。

リスナーは選択認識編集も扱います。テキストが選択されている場合、ディクテーションはユーザーが明示的に新しい散文を挿入するよう頼まない限り、そのテキストに対する指示として解釈されます。その一つの区別がアクシデンタル重複テキストのクラス全体を取り除きます。

コンテキスト競合は最強の証拠を最初に信頼することで扱われます。アクティブアプリはオペレーティングシステムによって構造的に保証されているので最も信頼できる信号です。選択テキストが次に来ます。可視近接トークンは古かったり偶然だったりするので最も柔らかい信号です。二つの信号が一致しないとき、リスナーはより硬いものを優先し、選んでコミットするのではなく信頼度を下げます。

プライバシー: 画面コンテキストはローカルに留まる

コンテキスト認識音声認識は注意深く実装されなければプライバシーコストがあります。Loqua のルールは、リスナーが必要とする画面コンテキストはデフォルトでローカルに留まるということです。コンテキストサマリーはオンデバイスで計算され、現在の発話を形作るために使われ、汎用的な画面ログとして保持されません。

具体的に、オンデバイスリスナーに届くのは短く一時的なコンテキストバンドルです: アクティブアプリ識別子、言語とフィールドタイプ、選択範囲、近接する可視テキストの数百文字。デフォルトでデバイスを去らないのは、より広いウィンドウコンテンツ、他のタブ、他のアプリ、上記の永続的な履歴です。オプションのクラウド機能は、ユーザーが有効化したとき、ハイブリッドプライバシーノートですでに記述された境界の下でディクテーションされた音声またはテキストを受け取ります。生のコンテキストバンドルは決して受け取りません。

この境界が重要なのは、見るものを見るリスナーがコード、メッセージ、ドラフトを観察する可能性があるからです。それを機密データとして扱います。プライバシーアーキテクチャは 私たちのハイブリッドプライバシーノートでより詳しくカバーされていますが、要約版は明確です: 画面コンテキスト経路はローカルファースト、オプションのクラウド機能は生の周囲画面コンテンツを受け取りません。

公開研究コンテキスト

研究背景には音声-言語モデリング、視覚-言語投影、マルチモーダル命令チューニングが含まれます。有用な出発点には、堅牢な ASR の Whisper、視覚命令チューニングパターンの LLaVA、モーダル間アラインメントの ImageBind が含まれます。

それらの論文は文献コンテキストです。Loqua のマルチモーダル音声認識スタックは Mac ディクテーション表面のために調整されたオリジナル業務です: ローカルコンテキスト、低レイテンシストリーミング、アプリ認識出力。分野の語彙を借りるのであって、依存チェーンではありません。

ロードマップ

次のステップはより良い不確実性報告です。コンテキストが二つの可能な識別子を示唆する場合、システムは信頼を発明するのではなく曖昧性を保持すべきです。ターミナル、スプレッドシート、IDE チャットパネル、デザインツールのためのよりきめ細かいアプリアダプタも欲しいです。そこでは有用な出力の形が劇的に異なります。

ターミナルアダプタが最も具体的な近期業務です。ターミナルはカーソル位置の単一行として構造的にありますが、コンテキスト的にはユーザーが次にタイプしようとしているものに情報を提供すべき以前のコマンドと出力の長い履歴です。スプレッドシートアダプタは反対の形です: 厳格なカラム意味を持つ小さな可視コンテキストウィンドウ。両アダプタは同じリスナーアーキテクチャを再利用します。違いは、何が証拠とみなされるか、talker がフォーマット手がかりをどこから引くかです。

長期方向は「モデルがすべてを見る」ではありません。より狭く、より安全なものです: リスナーは、意図したものを意図した場所により少ないクリーンアップで書くのに十分なローカルコンテキストを見ます。それがマルチモーダル音声認識の製品約束です。

Frequently asked questions

マルチモーダル音声認識とは何ですか?
マルチモーダル音声認識は、音声を画面コンテキストやアプリメタデータなどの別の信号と組み合わせて、意図された書かれた出力を推論します。Loqua では、システムが音声を書き起こすだけでなく、カーソルがどこにあるか、近接して何が可視かも考慮することを意味します。
音声のみの ASR はなぜコードで失敗するのですか?
コードには識別子、パッケージ名、ケーシング、句読点、構文が含まれ、音だけでは明白でない可能性があります。モデルは「fetch profile」を正しく聞いても、可視識別子が fetchProfile であることを見逃すかもしれません。画面コンテキストは音声に欠ける証拠を認識器に与えます。
Loqua は私の画面を録画しますか?
ここで記述された製品意味ではいいえ。Loqua は現在のディクテーションイベントに必要なローカルコンテキスト (アクティブアプリ、選択テキスト、近接する可視テキストなど) を読みます。継続的な画面レコーダーとして設計されておらず、コンテキスト経路はデフォルトでローカルに留まります。
これは個人辞書とどう違いますか?
個人辞書は既知のフレーズを優先綴りにマップします。マルチモーダルコンテキストは、可視証拠を見ることで、ユーザーが事前登録していないフレーズを解決できます。カーソルの隣に識別子が現れれば、Loqua は手動辞書エントリを必要とせずにそれを保持できます。
画面コンテキストは間違いを犯せますか?
はい。可視コンテキストが古い、曖昧、または無関係であれば、リスナーはそれにオーバーフィットする可能性があります。製品の挑戦はキャリブレーションです: コンテキストが強いときに使い、不確実なときに生の音声を保持し、弱い証拠から自信を持って書き直すことを避けます。
マルチモーダル音声認識は開発者だけのためですか?
いいえ。開発者は最初に痛みを感じます。コードは識別子で密だからです。同じアイデアはメール、ノート、スプレッドシート、プロジェクトツール、チャットで役立ちます。言葉が普通でも、宛先アプリは話されたフレーズが何になるべきかを変えます。
リスナーが受け取るコンテキストバンドルには正確に何が入りますか?
一時的なペイロード: アクティブアプリ識別子、フィールドタイプと言語モード、現在の選択範囲、近接する可視テキストの小さなウィンドウ — 通常数百文字。発話ごとに構築され、ディクテーション中に使われ、汎用画面ログとして保持されません。

Try Loqua today

Free to start. Mac native. Built by algorithm researchers who use it every day.

Download for Mac

More from the Loqua Blog

engineering
オムニモーダル音声入力: マルチモーダル理解、MoE、ストリーミングテキスト出力
how-to
Mac でコードをディクテーションする方法: Cursor、VS Code、Claude Code の完全ガイド
compare
Loqua vs Typeless: コンテキスト、コーディング、深さのための Mac ネイティブの Typeless 代替