- Avec le modèle Whisper, lorsqu’on fournit un fichier wav complètement silencieux, un phénomène se produit où il hallucine et renvoie toujours le même texte en arabe, "ترجمة نانسي قنقر" (Translation by Nancy Qunqar)
- Si l’on génère un audio silencieux avec ffmpeg puis qu’on exécute Whisper en spécifiant l’arabe et le modèle large-v3, il produit toujours exactement le même résultat
- Ce problème semble indiquer que le modèle Whisper a été entraîné à interpréter l’audio silencieux comme un texte particulier
- Sur les anciens modèles (
small, etc.), il était possible d’atténuer partiellement le problème en ajustant des paramètres comme suppress_tokens, l’invite initiale (initial prompt) ou logprob_threshold, mais cela fonctionne peu avec v3, en particulier large-v3
- L’utilisation de la VAD (Voice Activity Detection) ou le filtrage préalable des segments silencieux de l’audio est proposée comme contournement
Symptôme du problème
- Un problème a été signalé dans Whisper
large-v3 : sur un audio silencieux, il hallucine toujours la phrase arabe "ترجمة نانسي قنقر"
- Création d’un fichier wav silencieux de 30 secondes avec ffmpeg, comme ci-dessous
ffmpeg -f lavfi -i anullsrc=r=44100\:cl=stereo -t 30 silence.wav
- Exemple d’exécution de la commande Whisper
whisper ./silence.wav --language Arabic --model large-v3
- Résultat :
\[00:00.000 --> 00:29.980] ترجمة نانسي قنقر
Cause et analyse
- Les modèles Whisper récents comme
large-v3 ont tendance, au lieu d’utiliser l’ancienne approche de description audio, à générer une sortie hallucinée arbitraire face au silence
- Les anciens modèles (
small, etc.) produisent eux aussi des sorties diverses (aléatoires) sur le silence, mais plusieurs options comme suppress_tokens, l’invite initiale (initial prompt) ou logprob_threshold permettaient d’exercer un certain contrôle
- Avec v3, ces méthodes fonctionnent mal, et un résultat hallucinatoire fixe apparaît
Contournements et solutions proposées
- Appliquer la VAD (Voice Activity Detection) : ne faire passer dans Whisper que les segments où une vraie voix est présente, et ne pas lui fournir le silence
- Ajuster des paramètres comme
suppress_tokens, l’invite initiale (initial prompt) ou logprob_threshold : utile sur certains modèles, mais effet minime sur large-v3
- Pour les audios totalement silencieux ou à signal faible, un post-traitement par une autre méthode que Whisper est nécessaire
Autres discussions
- Une discussion supplémentaire a eu lieu sur l’existence éventuelle d’un meilleur modèle que
large-v3 pour l’arabe, mais aucune alternative claire n’a été proposée
1 commentaires
Commentaire Hacker News
en transcrivant de l’audio chinois avec whisper-large-v3, j’ai souvent constaté que les passages silencieux étaient rendus par des phrases absurdes comme « merci de liker, partager et mettre en favoris », ce qui me fait soupçonner que le modèle a été entraîné sur des données récupérées aléatoirement depuis YouTube sans sélection rigoureuse des contenus utiles
les LLM présentent pareillement un cas classique d’« overfitting » sur des données ambiguës, un peu comme lorsqu’on obtient en sortie la traduction brute d’un message d’absence du bureau ; voir aussi cet article https://www.theguardian.com/theguardian/2008/nov/01/5
pour faire gagner du temps à ceux qui cherchent : l’arabe « رجمة نانسي قنقر » signifie « traduction de Nancy Qanqar » ou « traduit par Nancy Qanqar » ; « رجمة » veut dire traduction et « نانسي قنقر » est un nom
Whisper hallucine tellement qu’il est inutilisable ; cela a été documenté à de nombreuses reprises. Supprimer les silences de l’audio réduit un peu le problème, mais il y a aussi des questions de correction grammaticale automatique, par exemple dans la traduction de parole bilingue. Les modèles audio les plus récents se sont améliorés, mais le problème n’est pas complètement résolu https://news.ycombinator.com/item?id=43427376
même dans la version anglaise de Whisper, quand on lui fait traiter du silence, on voit souvent apparaître « [ sub by sk cn2 ] », « Merci d’avoir regardé ! N’oubliez pas de vous abonner et de liker ! Salut ! » ou encore « Cette vidéo est terminée. Merci de votre visionnage. Si cela vous a été utile, merci de vous abonner à la chaîne. »
en russe, on voit aussi souvent apparaître à la fin l’hallucination « Субтитры сделал DimaTorzok » (sous-titres réalisés par DimaTorzok). Je me suis demandé s’il y avait vraiment beaucoup de sous-titres contenant cette mention et j’ai cherché sur YouTube, mais ça n’a pas l’air si fréquent
lorsque les 30 premières secondes d’un appel enregistré ne contiennent qu’une sonnerie ou du DTMF — ce qui arrive presque toujours lorsqu’on appelle une entreprise — Whisper choisit souvent à tort le nynorsk ou le gallois comme langue. Je n’ai pas vérifié quel texte est alors transcrit, mais j’imagine qu’il est tout aussi farfelu. Ce n’est pas un problème pratique pour moi, mais cela peut être assez gênant pour un centre d’appels bilingue, par exemple
à propos de la question « Qui est Nicolai Winther ? » : https://medium.com/@lehandreassen/who-is-nicolai-winther-985409568201
certains soutiennent qu’il faudrait renommer le titre en « OpenAI, preuve d’un entraînement sur des films piratés »
certains plaisantent en disant que « Nancy Qunqar a peut-être vraiment tout transcrit à la main », avec des encouragements du style « Courage Nancy ! Continue comme ça ! »