Le WER compte de la même façon un nom faux, un chiffre faux, un « pas » oublié et un « le » omis. Jugez un système de transcription à ses erreurs détectées et à la visibilité de ses corrections, pas à son chiffre annoncé.
Le taux d’erreur de mots (word error rate, WER) est la référence standard de la reconnaissance vocale. On prend une transcription de référence vérifiée par une personne, on aligne mot à mot la sortie de la machine sur cette référence, et on compte trois types de fautes : les substitutions (un mot faux), les insertions (un mot jamais prononcé) et les suppressions (un mot manquant). On additionne le tout et on divise par le nombre de mots de la référence.
WER = (substitutions + insertions + suppressions) / nombre de mots dans la référence
L’alignement ne se fait pas à l’œil. Les deux textes sont alignés par distance d’édition minimale (la distance de Levenshtein, appliquée aux mots et non aux lettres) : parmi toutes les façons d’apparier la sortie à la référence, le calcul retient celle qui exige le moins de modifications et compte ces modifications. Comme les insertions sont comptées et que le dénominateur est la longueur de la référence, le WER peut dépasser 100 % : un modèle qui remplit une minute de silence avec du texte obtient un score pire que celui qui n’écrit rien.
Supposons que la référence soit « nous verrons le Dr Okafor à neuf heures jeudi », soit neuf mots, et que la machine écrive « nous verrons le docteur Dupont à neuf heures mardi ». Cela fait trois substitutions (Dr, Okafor et jeudi) sur neuf mots : un WER de 33 %. Les deux tiers des mots sont justes, et vous voilà pourtant au mauvais rendez-vous, le mauvais jour. Si seul « jeudi » était faux, le score serait de 11 %. Une version où chaque mot est juste, mais avec un « euh » ajouté que personne n’a prononcé, obtient aussi 11 %, car une insertion compte autant qu’une substitution.
Avant le décompte, les deux textes sont généralement normalisés, et les choix faits à cette étape font bouger le score autant que le modèle. « Dr » est-il le même mot que « docteur » ? « neuf » est-il le même mot que « 9 » ? La casse et la ponctuation comptent-elles ? Un calcul strict compterait « Dr » face à « docteur » comme une substitution. La plupart des scores publiés passent tout en minuscules, retirent la ponctuation et écrivent chaque nombre d’une seule façon, en lettres ou en chiffres, avant de comparer. Le chiffre d’un fournisseur dépend donc discrètement d’un normaliseur que vous ne voyez pas. Les langues qui s’écrivent sans espaces entre les mots, comme le chinois, le japonais et le thaï, n’ont pas de frontière de mot claire à compter : on les évalue donc par taux d’erreur de caractères (CER, character error rate), c’est-à-dire la même formule appliquée aux caractères.
Deux conséquences en découlent. D’abord, un WER de 5 % représente un mot sur vingt, soit plusieurs centaines de mots pour une heure de parole. À titre de comparaison, les transcripteurs humains sont souvent cités autour de 4 à 5 % sur la parole conversationnelle, et un résultat très cité de 2017, sur le corpus téléphonique Switchboard, plaçait une machine à environ 5,1 %, même si ces chiffres dépendent de l’audio et des règles de notation. Ensuite, le résultat dépend entièrement de l’audio de test : une lecture à voix claire ne donne pas le même chiffre qu’un panel bruyant, avec des accents et des voix qui se chevauchent. Un WER annoncé décrit autant le jeu de test du fournisseur que son système.
C’est là le décompte. Ce qu’il laisse de côté, c’est le coût de chaque erreur pour la personne qui lit.
Le WER traite chaque mot à égalité. Les lecteurs, eux, non :
Chacune de ces erreurs ne compte qu’une ou deux fautes dans la colonne WER. Dans la colonne du lecteur, elles vont de rien à une autre réunion, un autre jour. La question n’est donc pas seulement « quel est le taux d’erreur ? », mais « quelles erreurs, et qu’est-ce qui les attrape ? »
Plusieurs couches attrapent ce que la reconnaissance rate, et chaque modification est enregistrée pour pouvoir être inspectée et annulée. En transcription en direct, cela se produit pendant que le texte arrive : chaque ligne apparaît d’abord comme un brouillon susceptible encore de changer, puis devient définitive (Latence de la traduction en direct : où passent les secondes explique pourquoi).
Certaines erreurs collent au son mais pas à la phrase : « ces » là où la phrase attend « ses ». Ces erreurs peuvent être corrigées à partir du contexte, et une correction parvient aux lecteurs sous forme de mise à jour visible (transcript.amended dans l’API), pas comme une réécriture silencieuse. Le contexte est efficace pour les mots que la phrase permet de prévoir. Il ne sert à rien pour ceux qu’elle ne permet pas de prévoir.
Les noms et termes techniques sont les erreurs que le contexte ne peut pas corriger, car un nom n’apparaît souvent qu’une fois, sans rien autour pour le prédire. Un script de référence résout ce problème : vous donnez au système la parole, les diapositives ou une liste de noms et de termes avant de commencer, et ses mots l’emportent sur ce que le moteur a mal entendu. Pendant l’enregistrement, le script suit la transcription comme un téléprompteur, si bien que l’animateur voit où en est le moteur. Un script couvre les mots que l’on peut prévoir ; un audio bruyant et des accents produisent ceux que l’on ne peut pas prévoir.
Certaines erreurs, seule une personne présente dans la salle peut les voir. Les corrections manuelles permettent à l’animateur de réécrire n’importe quel mot ou toute ligne pendant que la transcription est encore en direct, et chaque auditeur de la diffusion voit le changement. Le système indique à l’animateur les candidats probables : les mots dont le moteur doutait peuvent être colorés et soulignés, et l’animateur peut parcourir les segments incertains un à un, plutôt que de relire toute la transcription. Par l’API, GET /v1/recordings/{id}/corrections liste les corrections d’un enregistrement et POST /v1/corrections/{id}/revert en annule une ; voir la référence de l’API. Même une personne présente dans la salle, toutefois, ne peut pas corriger une ligne que personne n’a pu entendre.
La dernière couche accepte qu’un passage de l’audio soit irrécupérable. Quand une ligne obtient un score inférieur au seuil de confiance de la transcription (confidence.hideBelow, 0.60 par défaut), les auditeurs voient « Audio peu clair » à sa place plutôt qu’une supposition, et la ligne n’est jamais lue à voix haute. Le lecteur perd une ligne ; il n’en gagne pas une fausse.
Les mêmes questions qui ont façonné ces couches s’appliquent à n’importe quelle affirmation de précision d’un fournisseur, y compris la nôtre.
Une courte liste de contrôle pour lire n’importe quelle affirmation de précision :
VocalStack ne publie pas de chiffre de WER interne, pour la première raison évoquée plus haut : il décrirait notre jeu de test, pas votre audio. Nous mesurons la précision en continu. Lorsque nous comparons d’autres systèmes, nous nous appuyons sur des benchmarks indépendants publiés et sur les chiffres publiés par les fournisseurs, jamais sur des tests privés. Pour le reste, c’est à votre propre audio de trancher.