Ingénierie

Reconnaissance vocale multimodale : construire un listener qui voit ce que tu vois

Pourquoi l'ASR audio uniquement échoue encore dans les workflows réels, et comment Loqua utilise le contexte d'écran local pour désambiguïser l'intention.

TL;DR

La reconnaissance vocale multimodale est la couche manquante entre la transcription et la dictée utile. Loqua est un outil de dictée vocale natif Mac qui combine l'audio avec le contexte d'écran local, les métadonnées d'application active et l'environnement du curseur. Cela permet au même son de devenir le bon identifiant, la bonne instruction ou le bon texte formaté dans l'application de destination.

La reconnaissance vocale audio uniquement est devenue suffisamment bonne pour que ses échecs résiduels soient faciles à sous-estimer. Les benchmarks de parole propre cachent le vrai problème produit : les utilisateurs dictent à l'intérieur d'applications, autour de code visible, dans des langues mélangées, et avec des références partielles comme « cette fonction » ou « la puce ci-dessus ».

Là où l'ASR échoue encore

L'exemple classique, ce sont les homophones. « From foo import bar » et from foo import bar sonnent pareil mais appartiennent à des mondes différents. Idem pour « cache the auth client » et « cash the auth client » si le modèle ne sait pas que le curseur est dans un fichier TypeScript. L'audio seul ne peut pas inférer la destination de manière fiable.

Les identifiants de code rendent ça plus net. Un utilisateur peut dire « fetch profile », mais la fonction visible est fetchProfile. Un modèle de transcription entend des mots ; un modèle de dictée devrait préserver l'identifiant. La reconnaissance vocale multimodale traite le texte visible comme une preuve, pas une décoration.

La deixis est la troisième arête tranchante. Quand un utilisateur dit « replace this with a guard clause », le texte prononcé est techniquement une requête complète, mais son sens dépend entièrement de ce que « this » désigne. Sans conscience de la sélection ni référence stable au curseur, le système doit deviner, et toute mauvaise supposition gaspille plus de temps que retaper. L'ASR audio uniquement ne peut pas résoudre la deixis du tout ; il ne peut que transcrire le démonstratif et espérer qu'un outil en aval s'en sortira.

  • Homophones : anglais courant vs syntaxe de code.
  • Entités : noms de packages, noms de classes, chemins de fichiers et flags de commande.
  • Deixis : « this », « that », « above », « the selected part ».
  • Format : prose, puce, commentaire de code, message de commit ou prompt.

L'architecture du listener multimodal

Le listener de Loqua a trois entrées locales : les features audio en streaming, le contexte dérivé de l'écran et les métadonnées d'application. Le chemin audio propose ce qui a été dit. Le chemin de contexte résume où le texte va atterrir : application, type de champ, texte sélectionné, tokens à proximité et indices structurels visibles. Le chemin d'application ajoute des contraintes comme la pertinence des sauts de ligne, du Markdown ou de la syntaxe de code.

Le listener n'a pas besoin de comprendre l'écran entier comme le ferait un humain. Il a besoin du minimum de preuves utiles pour la dictée. Dans VS Code, cela peut être les identifiants visibles, le mode de langue et le code sélectionné. Dans Slack, cela peut être le sujet du fil et le ton récent. Dans Notes, cela peut être le niveau de titre et le contexte de liste.

Ce que nous nous interdisons délibérément

Plusieurs capacités sont hors périmètre exprès. Le listener n'effectue pas d'OCR sur des captures d'écran de contenu distant, ne résume pas les fenêtres dans lesquelles l'utilisateur ne tape pas activement, et ne construit pas d'historique visuel persistant. Il n'essaie pas non plus d'inférer une intention fine à partir d'images : un graphique, une image vidéo ou une toile de design n'est pas interprété, seul le texte environnant l'est. Chaque suppression est un choix produit délibéré qui échange de la capacité contre de la prévisibilité et une limite de confidentialité plus claire.

C'est pour ça que nous l'appelons dictée audio-visuelle uniquement au sens produit étroit : audio plus contexte visuel pour l'écriture. L'objectif n'est pas le raisonnement visuel général. L'objectif est moins de mauvais mots au curseur.

Comment le contexte d'écran résout l'ambiguïté

La dictée à contexte d'écran change la sortie en restreignant les possibilités. Si le curseur est dans un fichier Python et que la ligne visible contient déjà from fastapi import, le mot prononcé « router » est plus susceptible d'être un symbole qu'un nom générique. Si le curseur est dans Gmail, la même phrase devrait devenir une phrase complète.

Tu dis
"add a guard before fetch profile if auth client is missing"
Loqua écrit (dans VS Code)
if (!authClient) return null;
const profile = await fetchProfile(authClient);
Tu dis
"can you take a look at the PR I just pushed and let me know if the retry logic looks right"
Loqua écrit (dans Slack)
Could you take a look at the PR I just pushed? Want to make sure the retry logic looks right.

Le listener gère aussi l'édition consciente de la sélection. Si du texte est sélectionné, la dictée est interprétée comme une instruction sur ce texte sauf si l'utilisateur demande explicitement d'insérer une nouvelle prose. Cette seule distinction supprime toute une classe de textes dupliqués par accident.

Les conflits de contexte sont gérés en faisant confiance d'abord à la preuve la plus forte. L'application active est le signal le plus fiable car elle est structurellement garantie par le système d'exploitation. Le texte sélectionné vient ensuite. Les tokens visibles à proximité sont le signal le plus mou car ils peuvent être obsolètes ou accidentels. Quand deux signaux divergent, le listener préfère le plus dur et baisse la confiance plutôt que d'en choisir un et de s'engager.

Confidentialité : le contexte d'écran reste local

La reconnaissance vocale consciente du contexte a un coût en confidentialité si elle est implémentée à la légère. La règle de Loqua, c'est que le contexte d'écran dont le listener a besoin reste local par défaut. Le résumé de contexte est calculé sur l'appareil ; il sert à façonner l'énoncé courant ; il n'est pas conservé comme un journal général d'écran.

Concrètement, ce qui atteint le listener sur l'appareil est un bundle de contexte court et éphémère : identifiant d'application active, langue et type de champ, plage de sélection, et quelques centaines de caractères de texte visible à proximité. Ce qui ne quitte jamais l'appareil par défaut, c'est le contenu plus large de la fenêtre, les autres onglets, les autres applications ou tout historique persistant de l'un des éléments ci-dessus. Les fonctionnalités cloud optionnelles, quand elles sont activées par l'utilisateur, reçoivent l'audio ou le texte dicté selon les limites déjà décrites dans notre note sur la confidentialité hybride ; elles ne reçoivent jamais le bundle de contexte brut.

Cette limite compte car un listener qui voit ce que tu vois peut observer du code, des messages ou des brouillons. Nous traitons cela comme des données sensibles. L'architecture de confidentialité est couverte plus en détail dans notre note sur la confidentialité hybride, mais la version courte est claire : le chemin de contexte d'écran est local-first, et les fonctionnalités cloud optionnelles ne reçoivent pas le contenu brut de l'écran environnant.

Contexte de la recherche ouverte

Le contexte de recherche inclut le modèle audio-langage, la projection visuel-langage et le multimodal instruction tuning. Des points de départ utiles incluent Whisper pour l'ASR robuste, LLaVA pour les patterns de visual instruction tuning, et ImageBind pour l'alignement entre modalités.

Ces articles sont du contexte de littérature. Le stack de reconnaissance vocale multimodale de Loqua est un travail original ajusté pour la surface de dictée Mac : contexte local, streaming à faible latence et sortie consciente de l'application. Nous empruntons le vocabulaire du domaine, pas une chaîne de dépendances.

Feuille de route

L'étape suivante est un meilleur reporting de l'incertitude. Si le contexte suggère deux identifiants possibles, le système devrait préserver l'ambiguïté au lieu d'inventer une confiance. Nous voulons aussi des adaptateurs d'application plus fins pour les terminaux, tableurs, panneaux de chat d'IDE et outils de design, où la forme de sortie utile diffère radicalement.

L'adaptateur de terminal est le travail à court terme le plus concret. Un terminal est structurellement une seule ligne au curseur, mais contextuellement c'est un long historique de commandes et sorties précédentes qui devrait informer ce que l'utilisateur s'apprête à taper. Un adaptateur de tableur est la forme opposée : une toute petite fenêtre de contexte visible avec un sens de colonne rigide. Les deux adaptateurs réutilisent la même architecture de listener ; la différence est dans ce qui compte comme preuve et où le renderer de texte puise ses indices de formatage.

La direction à long terme n'est pas « le modèle voit tout ». Elle est plus étroite et plus sûre : le listener voit suffisamment de contexte local pour écrire ce que tu voulais dire, là où tu voulais le dire, avec moins de nettoyage. C'est la promesse produit de la reconnaissance vocale multimodale.

Questions fréquentes

Qu'est-ce que la reconnaissance vocale multimodale ?
La reconnaissance vocale multimodale combine l'audio avec un autre signal, comme le contexte d'écran ou les métadonnées d'application, pour inférer la sortie écrite voulue. Dans Loqua, cela signifie que le système ne se contente pas de transcrire la parole ; il prend aussi en compte où se trouve le curseur et quel texte est visible à proximité.
Pourquoi l'ASR audio uniquement échoue-t-il sur le code ?
Le code contient des identifiants, des noms de packages, de la casse, de la ponctuation et de la syntaxe qui peuvent ne pas être évidents à partir du son seul. Un modèle peut entendre « fetch profile » correctement et manquer le fait que l'identifiant visible est fetchProfile. Le contexte d'écran donne au reconnaisseur des preuves qui manquent à l'audio.
Loqua enregistre-t-il mon écran ?
Non, au sens produit décrit ici. Loqua lit le contexte local nécessaire à l'événement de dictée en cours, comme l'application active, le texte sélectionné et le texte visible à proximité. Il n'est pas conçu comme un enregistreur d'écran continu, et le chemin de contexte reste local par défaut.
En quoi est-ce différent d'un dictionnaire personnel ?
Un dictionnaire personnel mappe des phrases connues à des orthographes préférées. Le contexte multimodal peut résoudre des phrases que l'utilisateur n'a jamais pré-enregistrées en examinant les preuves visibles. Si un identifiant apparaît à côté du curseur, Loqua peut le préserver sans nécessiter une entrée manuelle dans le dictionnaire.
Le contexte d'écran peut-il faire des erreurs ?
Oui. Si le contexte visible est obsolète, ambigu ou non pertinent, le listener peut surajuster à celui-ci. Le défi produit est la calibration : utiliser le contexte quand il est fort, préserver la parole brute quand on est incertain, et éviter de faire une réécriture confiante à partir de preuves faibles.
La reconnaissance vocale multimodale est-elle uniquement pour les développeurs ?
Non. Les développeurs ressentent la douleur en premier car le code est dense en identifiants. La même idée aide dans les e-mails, notes, tableurs, outils de projet et chat. L'application de destination change ce que la phrase prononcée devrait devenir, même quand les mots sont ordinaires.
Que contient exactement le bundle de contexte que reçoit le listener ?
Une charge utile éphémère : identifiant d'application active, type de champ et mode de langue, plage de sélection courante, et une petite fenêtre de texte visible à proximité — généralement quelques centaines de caractères. Il est construit par énoncé, utilisé pendant la dictée, et n'est pas persisté comme un journal général d'écran.

Essaie Loqua dès aujourd'hui

Gratuit pour commencer. Natif Mac. Conçu par des chercheurs en algorithmes qui l'utilisent tous les jours.

Télécharger pour Mac

Plus d'articles du Loqua Blog

ingénierie
Omni-modal voice typing: multimodal understanding, MoE, and streaming text output
tutoriel
How to dictate code on Mac: a complete guide for Cursor, VS Code, and Claude Code
comparaison
Loqua vs Typeless: a Mac-native Typeless alternative for context, coding, and depth