Guide
Pourquoi votre transcription répète la même phrase en boucle
Ce n'est pas votre enregistrement, et ce n'est pas un téléchargement défectueux. C'est ce que fait Whisper quand personne ne parle — et il existe des moyens précis d'y mettre fin.
Vous transcrivez un long enregistrement, vous ouvrez la transcription, et quelque part au milieu elle se transforme en ceci :
[ Silence ]
[ Silence ]
[ Silence ]
[ Silence ]
Ou pire, elle reprend une vraie phrase du début du fichier et la répète quarante fois, avec des horodatages plausibles, comme si quelqu'un avait réellement dit « merci d'avoir regardé » une fois par seconde pendant une minute.
C'est la plainte la plus fréquente au sujet de la transcription automatique, et presque tous les outils bâtis sur Whisper d'OpenAI en connaissent une variante. Il vaut la peine d'en comprendre la cause, parce que la solution n'est pas « prendre un modèle plus gros ».
Ce qui se passe réellement #
Whisper est un modèle de langage. Il n'« entend pas des mots pour les écrire » — il prédit le prochain morceau de texte le plus probable étant donné l'audio et tout ce qu'il a déjà écrit.
Cette description explique le bug. Quand l'audio contient de la parole, le texte suivant le plus probable est constitué des mots prononcés. Quand l'audio ne contient aucune parole — une pause, le bruit de fond de la pièce, une musique d'attente, des applaudissements, un enseignant qui marche vers le tableau — le modèle doit tout de même produire quelque chose. Il n'existe pas de jeton pour « il ne s'est rien passé ici ».
Alors il se rabat sur ce que font les modèles de langage en l'absence de signal : il se répète. Il vient d'écrire une phrase, la suite statistiquement la plus probable de cette phrase est une phrase semblable, et comme rien dans l'audio ne contredit cette supposition, il tourne en boucle. Whisper traite l'audio par fenêtres de 30 secondes : dès qu'une fenêtre s'enferme dans une boucle, vous obtenez la même ligne pour toute la fenêtre, puis la fenêtre suivante repart de zéro et recommence souvent.
C'est pourquoi le problème apparaît selon un schéma très précis :
- Les longs enregistrements, parce qu'ils contiennent plus de silence.
- Le milieu et la fin des fichiers, une fois la partie intéressante terminée mais l'enregistreur encore en marche.
- La musique et les applaudissements, qui sont un audio dense sans mots.
- Les enregistrements avec un intervenant peu audible et une pièce bruyante, où le modèle ne peut pas séparer les deux.
Un entretien de cinq minutes mené près du microphone ne fait presque jamais cela. Une réunion de deux heures où l'enregistreur a tourné vingt minutes après le départ de tout le monde le fait presque toujours.
Pourquoi « [ Silence ] » et « [BLANK_AUDIO] » sont un symptôme distinct de la même cause #
Les données d'entraînement de Whisper comprenaient des transcriptions avec des annotations entre crochets — [ Silence ], [BLANK_AUDIO], (music), ♪♪♪. Ainsi, quand il rencontre de l'audio sans parole, l'une de ses sorties probables est l'un de ces marqueurs, encore et encore.
C'est la version la plus bénigne : au moins la transcription est honnête sur le fait qu'il n'y a rien. Cela remplit tout de même votre document de centaines de lignes inutiles, et cela signifie toujours que l'outil passe un temps réel à décoder du silence.
Quatre façons d'y remédier #
À peu près par ordre d'efficacité.
1. La détection d'activité vocale (la vraie solution) #
La détection d'activité vocale — VAD — est un petit modèle distinct qui s'exécute avant la transcription et repère quelles parties de l'audio contiennent de la parole humaine. Seules ces parties sont ensuite transmises au transcripteur.
Cela résout le problème à la source, parce que la boucle ne se produit que lorsqu'on donne à Whisper de l'audio sans parole. Si le silence n'atteint jamais le modèle, il n'y a rien sur quoi halluciner. Cela accélère aussi les fichiers longs, puisque vous ne payez plus le décodage de vingt minutes de pièce vide.
Le plus largement utilisé est Silero VAD, et les versions récentes de whisper.cpp le prennent en charge directement. Si votre application propose une option VAD ou « ignorer les silences », activez-la. Sinon, c'est une demande raisonnable à adresser au développeur.
2. Coupez les silences vous-même #
Si votre outil n'a pas d'option VAD, vous pouvez en faire une version rudimentaire à la main : rognez le début et la fin de l'enregistrement avant de le transcrire, pour que les vingt minutes de bruits de rangement ne soient jamais traitées.
N'importe quel éditeur audio le fera. C'est fastidieux, et cela ne règle rien pour les silences au milieu d'un fichier, mais pour le cas très courant du « l'enregistreur a tourné trop longtemps à la fin », cela prend trente secondes et supprime le pire.
3. Filtrez les marqueurs après coup #
Si votre transcription est pleine de [ Silence ] et de ♪♪♪, ils sont faciles à supprimer par rechercher-remplacer, parce que ce sont des lignes entières à la forme reconnaissable.
Attention à un point : ne supprimez que les lignes qui sont entièrement un marqueur. Une ligne comme « et puis — (rires) — nous l'avons livré » est de la vraie parole et vous voulez la conserver. C'est exactement la règle qu'une bonne application devrait appliquer à votre place.
4. Découpez le fichier #
Comme la boucle est bornée par la fenêtre de Whisper, découper un long enregistrement en morceaux plus courts limite les dégâts — une mauvaise fenêtre gâche une minute au lieu de se fondre dans un mur de répétitions. Certaines applications le font en interne.
C'est un contournement plutôt qu'une solution. Cela réduit le rayon d'impact ; cela n'empêche pas le modèle d'halluciner sur le silence.
Ce qui n'y remédie pas #
Un modèle plus gros. Passer de Base à Large vous coûte beaucoup de temps et d'espace disque et ne supprime pas la boucle, parce que la cause n'est pas un manque de capacité — c'est qu'on lui demande de transcrire quelque chose qui ne contient pas de parole. Les grands modèles bouclent aussi. (Plus de détails sur le compromis de taille.)
Un service en ligne. Les bons outils en ligne appliquent une VAD et un post-traitement dans leur chaîne, c'est pourquoi ils rencontrent cela moins souvent. Le mécanisme sous-jacent est le même, et beaucoup d'entre eux produisent encore « merci » cinquante fois sur un fichier calme. Payer à la minute ne vous achète pas un décodeur différent.
Relancer. L'échantillonnage de Whisper n'est pas totalement déterministe : une seconde tentative peut boucler à un autre endroit. Ce n'est pas une solution, c'est un tirage à pile ou face.
Ce que nous faisons #
Soyons précis, car une réponse vague serait inutile ici.
Offline Transcription exécute Silero VAD avant la transcription, de sorte que les passages silencieux et sans parole n'atteignent jamais le décodeur. Par-dessus cela, les marqueurs occupant tout un segment comme [ Silence ] et les simples symboles de musique sont filtrés du résultat, tandis que les lignes qui contiennent seulement une incise entre parenthèses sont conservées, parce qu'il s'agit de vraie parole.
Pour les fichiers longs, l'application transcrit également par fenêtres et coupe chaque fenêtre au point le plus calme de l'audio, de sorte qu'une limite tombe entre deux phrases plutôt qu'au milieu de l'une d'elles.
La réserve honnête : cela rend le problème de la répétition très rare, pas impossible. Tout outil fondé sur Whisper, le nôtre compris, est un modèle de langage qui fait des prédictions, et un modèle qui prédit peut se tromper. Si vous transcrivez quelque chose où la précision compte, relisez la transcription face à l'audio pour les passages sur lesquels vous comptez vous appuyer — notre guide sur les entretiens présente une façon rapide de le faire.
En bref #
La boucle, c'est Whisper qui prédit du texte pour de l'audio sans parole. La détection d'activité vocale supprime la cause en ne lui montrant jamais cet audio. Couper les silences et filtrer les marqueurs aide si votre outil n'a pas de VAD. Un modèle plus gros n'aide en rien.
Obtenir Offline Transcription
Transcrivez vos fichiers audio et vidéo entièrement sur votre Mac. Rien n'est envoyé en ligne, aucun compte n'est requis et il n'y a pas de compteur à la minute.