Un détecteur de langue répond toujours, même à une toux. Laissez la détection activée pour un audio propre ou multilingue, et indiquez la langue lorsqu’une seule langue est parlée sur du bruit ou avec un fort accent.
Chaque transcription commence par une question que le lecteur ne voit jamais : de quelle langue s’agit-il ? Si la réponse est fausse, le reste du pipeline s’efforce de produire un texte fluide mais absurde. Cet article explique ce qu’écoute un détecteur de langue, comment la détection se comporte pour l’audio en direct et pour les fichiers, et quand il vaut mieux nommer soi-même la langue.
Un détecteur de langue ne comprend pas ce qui est dit. Il examine le son lui-même : l’inventaire des consonnes et des voyelles, l’accentuation des syllabes, le rythme des phrases et les mots courts et fréquents dont chaque langue s’appuie. L’espagnol a son propre jeu de voyelles et son propre rythme ; le néerlandais et l’allemand partagent beaucoup de choses mais se séparent sur une poignée de sons. Quelques secondes de parole claire suffisent en général à les distinguer.
Beaucoup de moteurs de reconnaissance font cela comme un sous-produit de la reconnaissance des mots. Ils décident de la langue à partir du début de l’audio, sous forme de probabilité pour chaque langue qu’ils connaissent. Ce choix de conception a deux conséquences. Les probabilités totalisent toujours un, il n’existe donc pas de réponse « aucune langue » : le silence, une toux ou un jingle musical reçoivent aussi une langue, souvent accompagnée d’un score de confiance élevé. Et la décision est prise sur le début, qui est le pire échantillon qu’on puisse choisir. Beaucoup d’enregistrements commencent par des salutations, des noms et des noms de lieux, qui portent très peu d’indices de langue : « Good morning, Maria, welcome to Berlin » ressemble presque autant à de l’allemand qu’à de l’anglais. D’autres commencent par du silence ou une toux, et un détecteur sommé de décider à partir de cela décidera quand même, avec assurance, sur du vide. Le phénomène touche aussi les vraies données : un sermon roumain qui commence par un bruit de salle et « Bună dimineața » peut très bien être entendu comme l’italien « Buona domenica », avec une certitude totale.
Le coût d’une mauvaise réponse est aussi pire qu’il n’y paraît. Un moteur qui décode dans la mauvaise langue n’orthographie pas mal : il réécrit. « For God so loved the world », décodé en roumain, donne « Forgot to love the world ». Le roumain « mândria slujește », décodé en anglais, donne « Pride serves », traduction exacte d’une phrase que personne n’avait demandé de traduire. Les mots sont fluides et la transcription ne laisse rien paraître de l’erreur, ce qui la rend coûteuse.
Cinq éléments trompent le plus souvent les détecteurs :
Lequel de ces éléments vous touche dépend du fait que l’audio arrive en direct ou qu’il se trouve déjà dans un fichier.
Pour une transcription en direct, il n’existe pas d’enregistrement complet à examiner. L’audio arrive au fur et à mesure que la parole est prononcée, et la transcription doit arriver avec lui. La langue est donc détectée pendant que l’orateur parle, et suivie s’il change de langue. C’est ce que signifie la note sous l’interrupteur Spoken language lorsque vous démarrez une transcription en direct dans le tableau de bord : la langue de l’orateur est détectée automatiquement, et il peut en changer à tout moment.
Un changement de langue est confirmé avant d’être appliqué, afin qu’un passage bruité ne fasse pas basculer la transcription dans une autre langue. Le point faible est le début : si les premiers mots sont une salutation bruitée, la première ligne peut sortir dans la mauvaise langue. Nommer la langue évite ce problème.
Les fichiers fonctionnent autrement, car l’enregistrement complet est déjà là.
Un fichier est un problème plus simple : inutile de faire confiance aux premières secondes. Pour un fichier, la langue est déterminée à partir de l’enregistrement dans son ensemble, de sorte qu’une salutation bruitée en début de fichier ne peut pas la fixer à elle seule.
La langue d’un fichier reste une hypothèse de travail, et non un verdict. Un enregistrement qui change réellement de langue en cours de route, comme un entretien qui passe de l’anglais au roumain dans sa seconde moitié, est suivi plutôt que forcé, et un enregistrement qui alterne les langues tout au long de sa durée est également pris en charge.
Un détecteur qui décide une fois pour toutes sans jamais revenir sur sa décision est sûr de lui au mauvais endroit.
Aucun détecteur n’aide beaucoup lorsque l’enregistrement entier est bruité. La détection est le réglage par défaut parce qu’elle a raison la plupart du temps et ne vous coûte rien. Pour certains enregistrements, cependant, il faut nommer la langue, et le tableau de bord indique lesquels : nommer la langue parlée améliore la précision sur les enregistrements bruités et les accents marqués.
Ce sont les cas où la détection dispose du moins d’éléments. Le bruit supprime les indices sur lesquels s’appuie un détecteur ; un accent marqué les déplace vers une autre langue ; une paire de langues proches offre peu d’indices au départ. Un locuteur anglophone avec un fort accent portugais dans une salle réverbérante est difficile à situer à partir du seul son, et si le détecteur se trompe, la transcription transforme la parole anglaise en portugais tant que l’erreur dure. Nommer la langue supprime la question : tout l’effort porte alors sur les mots.
Une courte liste de contrôle :
Nommer la langue est un réglage de la transcription, et non de votre compte : vous pouvez décider pour chaque enregistrement. Tout ce qui précède se ramène à une seule option de l’API.
spokenLanguage absent signifie détection ; session.update en cours de fluxDans l’API, spokenLanguage est un code de langue tel que en ; si vous l’omettez, la langue est détectée. Il figure dans les settings d’une transcription de fichier ou de lien, et dans les options d’une session en temps réel. La détection et le nommage couvrent les mêmes 100 langues. La traduction vers jusqu’à 10 d’entre elles est un choix distinct, qui ne dépend ni de la langue détectée ni de la langue nommée. La façon dont la traduction suit le rythme de la parole fait l’objet de La latence de la traduction en direct, expliquée.
{ "name": "Board meeting", "settings": { "spokenLanguage": "en", "speakerLabels": "auto" } }
Une session en temps réel accepte la même option lors de sa création, et vous pouvez la modifier pendant que l’audio circule. Une trame texte session.update avec un nouveau spokenLanguage s’applique à la parole à partir de ce moment ; la valeur "" ou "auto" rétablit la détection, et un code non pris en charge est ignoré. Une vue de sous-titres dotée d’un bouton de langue permet à l’opérateur de nommer la langue dès qu’il voit une première ligne erronée, sans se reconnecter.
{ "type": "session.update", "spokenLanguage": "ro" }
La liste des codes, avec leurs noms, se trouve à GET /v1/languages, qui ne nécessite aucune clé. Le déroulement complet en temps réel, de la création d’une session sur votre serveur à la lecture des brouillons et des validations, est décrit dans Transcription en temps réel sur WebSocket, et la référence interactive se trouve à {{api}}/docs. Dans le tableau de bord, le même choix correspond à l’interrupteur Spoken language lorsque vous démarrez une nouvelle transcription, et les clés de l’API se trouvent sous Developers.