La détection se trompe encore : épinglez votre langue

La dictée sort dans la mauvaise langue ? Par conception, l’autodétection oscille en discours bilingue. Épinglez votre langue une fois, elle le reste.

Teodor Deleanu10 juillet 20268 min de lecture

Si vous dictez dans plus d’une langue, vous avez déjà vu la panne. Vous dites une phrase en roumain et la transcription revient en anglais phonétiquement massacré — de vrais mots, aucun des vôtres. Ou bien elle bascule en milieu de phrase : la première moitié dans la bonne langue, la seconde dans celle vers laquelle le modèle a décidé que vous aviez changé. Ou, ma préférée, la soupe d’alphabets mélangés — des caractères latins avec quelques cyrilliques parsemés, comme si le modèle avait couvert ses paris lettre par lettre.

Ce n’est pas une plainte au sujet d’un produit. C’est un mode de défaillance prévisible de la détection automatique de la langue, y compris celle du moteur par défaut de Keebye réglé pour l’anglais. Elle frappe les locuteurs à l’anglais accentué et tous ceux qui alternent les langues au fil de la journée. Un développeur bilingue dont le Slack est en polonais et les messages de commit en anglais donne à la détection automatique exactement les signaux mixtes qu’elle gère le plus mal.

La seconde moitié de la plainte est plus discrète mais tout aussi réelle : quand un réglage de langue existe, il est souvent enterré. Trois menus plus bas, derrière un sélecteur de moteur, après une bascule dont le nom ne mentionne pas la langue du tout. Si vous changez de langue vingt fois par jour, un réglage enterré n’est en pratique pas un réglage.

Je veux expliquer pourquoi ces oscillations se produisent — en utilisant l’anecdote de guerre de mon propre produit, parce que Keebye a eu ce problème avant d’avoir le correctif — puis montrer à quoi ressemble une vraie solution.

Pourquoi la détection automatique oscille (et pourquoi ce n’est pas exactement un bug)

Voici la mécanique honnête. Les modèles vocaux modernes font de l’identification de langue en silence, dans le cadre du décodage. Le modèle écoute, se forme une supposition interne sur la langue qu’il entend, et décode selon cette supposition. Quand l’audio est propre, sans accent et monolingue, cela marche si bien que vous n’y pensez jamais.

Maintenant, donnez-lui de la vraie parole. Un accent déplace les voyelles vers les phonèmes d’une autre langue. Une phrase contient trois emprunts anglais — c’est le cas de toutes les conversations techniques. Il y a un enfant en arrière-plan, ou vous êtes sur le micro d’un portable. Chacun de ces éléments rend la supposition interne de langue du modèle moins sûre, et une supposition peu sûre peut basculer d’une trame à l’autre. Quand elle bascule, le décodage bascule avec elle, et vous obtenez une transcription qui change de langue en pleine pensée.

Le point crucial : dans la plupart des outils, rien n’ancre cette supposition. Le modèle décide, silencieusement, par énoncé, et vous n’avez aucun moyen de le contredire. Ce n’est pas un bug d’une app en particulier — c’est ce qu’est la détection automatique silencieuse. Un modèle qui rend un jugement que vous ne pouvez pas corriger.

Je le sais intimement parce que le moteur par défaut de Keebye a exactement cette propriété. Parakeet, notre modèle par défaut réglé pour l’anglais, ignore toute indication de langue au niveau du décodage — vous ne pouvez pas lui dire ce que vous allez dire. Sur de l’anglais clair, il est excellent, et c’est pour ça qu’il est par défaut. Sur de l’audio peu clair, il peut osciller entre les langues comme tout le reste de la catégorie. Je vous dis cela de mon propre produit d’abord, parce que le correctif n’a de sens qu’une fois accepté que le problème vit dans l’architecture, pas dans la négligence d’un concurrent.

Que fait concrètement l’épinglage d’une langue ?

Le correctif consiste à cesser de demander au modèle de deviner. Keebye livre un second moteur sur l’appareil — Canary 1B v2 de NVIDIA, quantifié en int8 — qui couvre exactement 25 langues : bulgare, croate, tchèque, danois, néerlandais, anglais, estonien, finnois, français, allemand, grec, hongrois, italien, letton, lituanien, maltais, polonais, portugais, roumain, slovaque, slovène, espagnol, suédois, russe et ukrainien. Contrairement au moteur par défaut, Canary accepte une instruction de langue et la respecte.

Keebye expose cela sous forme d’épinglage : un réglage de langue explicite transmis au moteur Canary pour chaque énoncé. Épinglez le roumain et le décodeur utilise le roumain au lieu de faire un choix de langue automatique. La reconnaissance peut encore se tromper, surtout autour des emprunts et sur un audio bruyant, mais le choix de la langue n’est plus une supposition non vérifiée.

Le réglage est lu à chaud, à chaque dictée. Changez-le et la prochaine dictée en maintien utilise la nouvelle langue sans redémarrer l’app. Cela compte plus qu’il n’y paraît : un contrôle de langue est bien plus utile quand en changer n’interrompt pas le travail.

Et comme Canary s’exécute sur l’appareil comme tout le reste dans Keebye, l’épinglage ne vous coûte pas l’argument de la confidentialité. Le modèle fait environ 1,3 Go, téléchargé une fois ; ensuite votre roumain, votre polonais, votre ukrainien ne quittent jamais la machine. (Les raisons pour lesquelles nous pensons que la dictée multilingue locale compte font l’objet d’un article à part — la dictée pour les développeurs ne devrait pas être réservée à l’anglais. Celui-ci en est la suite pratique : cet article-là plaide pour les langues, celui-ci parle de les rendre réellement utilisables.)

Deux clics, pas trois menus de profondeur

Un épinglage que vous ne pouvez pas atteindre est un épinglage que vous n’utiliserez pas : le sélecteur vit donc dans la barre des menus. L’icône de barre de menus de Keebye a un menu « Langue de dictée » avec une liste courte et sélectionnée de 11 langues — anglais, roumain, français, allemand, espagnol, italien, portugais, néerlandais, polonais, russe, ukrainien. Deux clics depuis n’importe quelle app : cliquez sur l’icône, cliquez sur la langue. Vous n’ouvrez pas les Réglages, vous ne quittez pas la fenêtre dans laquelle vous travailliez.

La liste complète des 25 langues vit dans les Réglages, pour celles qui sont hors de la liste courte. Mais la liste courte couvre la réalité quotidienne de la plupart du travail bilingue : vous écrivez à votre équipe dans une langue et à un client ou à un agent IA dans une autre, et il faut que la bascule ne coûte rien.

Il y a une option de plus à connaître, parce qu’elle change complètement la façon dont certains utilisent l’épinglage : une bascule de traduction vers l’anglais. Parlez votre langue, l’anglais atterrit au curseur — même moteur, même exécution sur l’appareil. Si votre monologue intérieur tourne en roumain mais que votre sortie doit être en anglais (messages de commit, prompts pour un agent de code, réponses à une équipe internationale), cela supprime l’étape de traduction que vous faisiez dans votre tête. Je l’utilise plus que je ne l’aurais cru.

Ce que l’épinglage vous coûte

25 langues, c’est 25 langues. Les outils de dictée cloud en listent bien plus, parce qu’envoyer l’audio vers un gros modèle côté serveur est la façon peu coûteuse d’ajouter des langues. C’est le vrai compromis du sur-appareil : un modèle qui tient sur votre Mac couvre moins du monde qu’un modèle qui remplit un centre de données. Si votre langue n’est pas dans la liste des 25, le moteur multilingue de Keebye ne vous couvre pas aujourd’hui, et je préfère le dire plutôt que d’arrondir.

Un épinglage est un épinglage. C’est le revers du déterminisme, et je veux être clair : si vous épinglez le roumain puis parlez anglais, Keebye décodera fidèlement votre anglais comme du roumain jusqu’à ce que vous changiez. Le moteur fait exactement ce que vous lui avez dit. Tout l’attrait de la détection automatique était que vous n’auriez jamais à y penser — l’épinglage échange cette commodité contre la prévisibilité. D’expérience, l’échange en vaut la peine, parce qu’une mauvaise supposition que vous ne pouvez pas contrôler est pire qu’un mauvais réglage que vous pouvez corriger en deux clics. Mais c’est un échange, pas un repas gratuit.

La liste courte de la barre des menus fait 11 langues, pas 25. Si votre paire quotidienne inclut, disons, le finnois ou le grec, vous passerez par les Réglages pour l’un des deux côtés. Sélectionner veut dire que la langue de quelqu’un n’a pas eu sa place dans le menu rapide.

Où cela laisse la plainte

La plainte au niveau de la catégorie — « ma dictée sort sans cesse dans la mauvaise langue » — est en réalité une plainte au sujet de décisions silencieuses. Le modèle a deviné, la supposition était fausse, et il n’y avait aucun moyen de lui dire autre chose. Tout correctif qui conserve la devinette (meilleure détection, fenêtres audio plus longues, seuils de confiance) rend simplement la panne plus rare et plus étrange. Le correctif qui met vraiment fin à la plainte, c’est de rendre la décision à l’utilisateur.

Si vous vivez cela en ce moment avec un autre outil, nos pages de comparaison sont honnêtes sur ce à quoi chaque outil convient — Keebye vs Superwhisper et Keebye vs Wispr Flow traitent tous deux la question des langues parmi d’autres. Pour essayer l’épinglage lui-même, lancez votre essai gratuit ci-dessous, rejouez la phrase en roumain ou en polonais du début de cet article, et voyez quelle part des oscillations venait d’une supposition non vérifiée plutôt que de votre accent.

Épinglez la langue que vous utilisez vraiment

Lancez votre essai gratuit et rejouez une réponse dans votre langue maternelle que la détection automatique avait massacrée.

Start free trial

Early access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.

Continuez à lire