Découvrez comment la reconnaissance vocale hors ligne fonctionne réellement.

Modèle acoustique, modèle linguistique, et pourquoi les petits modèles locaux interprètent mal les mots qu'ils interprètent mal.

Deux problèmes distincts, une seule solution

Un moteur de reconnaissance vocale (ASR) résout deux problèmes différents de manière séquentielle, et mélanger ces deux problèmes est la principale source de confusion quant à ce que ces systèmes peuvent et ne peuvent pas faire.

Le premier est acoustique, le second est linguistique. Ils sont entraînés sur des données différentes et échouent de manières différentes.

Le modèle acoustique

Répond à la question : à quels phonèmes cette forme d’onde ressemble-t-elle le plus ? Il n’a jamais lu une phrase de sa vie.

Il a été entraîné sur des paires de (audio, séquence de phonèmes) et a appris une correspondance acoustique pure — le son brut d’un « t » par rapport à un « d », indépendamment de toute signification.

Le modèle de langage

Répond à une question complètement différente : étant donné ces séquences de phonèmes ou de mots candidates, laquelle constitue une phrase réelle de la langue ?

Il a été entraîné sur du texte, et non sur de l’audio. Il sait que « two points » est beaucoup plus susceptible de suivre « add » que « de points », dans un contexte de ponctuation, même si les deux se prononcent presque de la même manière.

Vosk est basé sur Kaldi, une boîte à outils qui combine exactement ces deux composants : un modèle acoustique neuronal et un modèle linguistique statistique.

Ils sont reliés par un graphe de décodage pondéré qui recherche la séquence de mots la plus probable étant donné à la fois le son et la grammaire.

Pourquoi le petit modèle interprète-t-il mal « deux points » ?

La partie acoustique d’un petit modèle n’est pas significativement moins performante pour la reconnaissance des phonèmes ; le problème réside dans le modèle linguistique qui l’accompagne.

vosk-cli-dictation est fourni avec les modèles petits de Vosk (environ 50 Mo par langue) plutôt qu’avec les modèles volumineux (plus d’un gigaoctet). Ce modèle linguistique est un modèle statistique beaucoup plus petit et moins contextualisé de la langue :

  • Un grand modèle de langage, entraîné sur un grand nombre de phrases réelles, préfère fortement « deux points » à « de points » dans une phrase concernant la mise en forme, car il a déjà rencontré ce schéma auparavant.
  • Un modèle plus petit a été entraîné sur beaucoup moins de données : lorsqu’il y a deux séquences de mots candidates qui sonnent presque identiques — un homophone parfait ou un quasi-homophone selon une prononciation familière —, il dispose de beaucoup moins d’informations pour trancher correctement.

C’est exactement pour cela que le config.yaml de vosk-cli-dictation a une table recognition_aliases : ce n’est pas une solution de contournement à un bug, mais la réponse pratique à une propriété réelle et structurelle de la disambiguation basée uniquement sur l’acoustique.

Vous corrigez les homophones spécifiques que votre propre voix et votre vocabulaire déclenchent, une seule fois, et l’outil cesse de faire cette erreur particulière pour vous.

Ce que vous gagnez concrètement avec un modèle plus performant

Une meilleure disambiguation contextuelle se traduit par une charge de calcul accrue, à chaque prononciation, pendant toute la durée du processus. Il n’y a pas d’amélioration gratuite ici.

Le petit modèle — par défaut

Environ 50 Mo par langue. Il conserve le même principe acoustique et fonctionne sans problème en arrière-plan sur du matériel ordinaire.

Un modèle volumineux

Remplacer le petit modèle français par vosk-model-fr-0.22 représente environ 1,5 Go au lieu de ~50 Mo. Le modèle linguistique dispose d’un contexte beaucoup plus large, mais au prix d’une plus grande consommation de CPU et de RAM au moment de l’exécution, car un graphe plus important est exploré à chaque résultat partiel.

Le compromis que ce projet implique, explicitement

Par défaut, vosk-cli-dictation utilise les modèles les plus petits, précisément pour qu’il puisse fonctionner sans problème en arrière-plan sur du matériel ordinaire.

Il considère les erreurs d’homophones inévitables comme un problème de configuration, résolu une fois par erreur récurrente, dans un fichier YAML que vous pouvez lire et modifier, plutôt que comme un problème de modèle nécessitant plus de puissance de calcul.

Si ce compromis vous convient dépend entièrement de votre machine et de votre vocabulaire.

Consultez le guide d’installation et de configuration →