- Al ingresar un archivo wav completamente en silencio en el modelo Whisper, ocurre un fenómeno en el que siempre alucina y devuelve el mismo texto en árabe, "ترجمة نانسي قنقر" (Translation by Nancy Qunqar)
- Si se genera audio en silencio con ffmpeg y se ejecuta Whisper especificando el idioma árabe y el modelo large-v3, siempre produce el mismo resultado
- Parece que este problema se debe a que el modelo Whisper fue entrenado para interpretar audio en silencio como un texto específico
- En modelos anteriores (
small, etc.), se podía mitigar hasta cierto punto ajustando parámetros como suppress_tokens, initial prompt y logprob_threshold, pero en v3 (especialmente large-v3) el efecto es menor
- Como solución alternativa, se propone "usar VAD (Voice Activity Detection)" o filtrar previamente los segmentos silenciosos del audio
Síntoma del problema
- Se reportó un problema en Whisper
large-v3 donde, para audio en silencio, siempre alucina y genera la frase en árabe "ترجمة نانسي قنقر"
- Se crea un archivo wav de 30 segundos de silencio con ffmpeg de la siguiente manera
ffmpeg -f lavfi -i anullsrc=r=44100\:cl=stereo -t 30 silence.wav
- Ejemplo de ejecución del comando Whisper
whisper ./silence.wav --language Arabic --model large-v3
- Resultado:
\[00:00.000 --> 00:29.980] ترجمة نانسي قنقر
Causa y análisis
- Los modelos Whisper más recientes, como
large-v3, tienden a generar salidas alucinadas arbitrarias para el silencio, en lugar de los enfoques anteriores como describir el audio
- Los modelos anteriores (
small, etc.) también generaban salidas varias (aleatorias) en silencio, pero se podían controlar parcialmente con opciones como suppress_tokens, initial prompt y logprob_threshold
- En v3, los métodos anteriores no funcionan bien y aparece un resultado alucinado fijo
Soluciones alternativas y propuestas
- Aplicar VAD (Voice Activity Detection): ejecutar Whisper solo en los segmentos del audio donde realmente hay voz y no ingresar el silencio en absoluto
- Ajustar parámetros como
suppress_tokens, initial prompt y logprob_threshold: en algunos modelos puede ayudar, pero en large-v3 el efecto es mínimo
- Si el audio es completamente silencioso o la señal es débil, se necesita posprocesarlo con otro método en lugar de Whisper
Otras discusiones
- También hubo discusión adicional sobre si existe un modelo mejor que
large-v3 para árabe, pero no se presentó ninguna alternativa clara
1 comentarios
Comentario en Hacker News
al transcribir audio en chino con whisper-large-v3, varias veces he visto que los tramos en silencio salen como frases absurdas tipo “denle like, compartan y agréguenlo a favoritos”, lo que me hace sospechar que durante el entrenamiento recolectaron datos al azar de videos de YouTube sin curarlos bien como material útil
con los LLM pasa igual: es un caso clásico de "sobreajuste" sesgado hacia datos ambiguos, algo parecido a que te devuelva como traducción un mensaje automático de fuera de oficina tal cual; artículo relacionado https://www.theguardian.com/theguardian/2008/nov/01/5
para ahorrarles tiempo de búsqueda: el árabe "رجمة نانسي قنقر" significa "traducción de Nancy Qanqar" o "traducido por Nancy Qanqar"; "رجمة" significa traducción y "نانسي قنقر" es un nombre
Whisper alucina tanto que está en un nivel prácticamente inutilizable; esto está bien documentado muchas veces, quitar los silencios del audio ayuda un poco, pero también hay problemas como la corrección gramatical automática (por ejemplo en traducción de voz bilingüe), ha mejorado en los modelos de audio más recientes, pero no está resuelto del todo https://news.ycombinator.com/item?id=43427376
incluso en la versión en inglés de Whisper, al reproducir silencio aparecen seguido cosas como “[ sub by sk cn2 ]”, “¡de todos modos, gracias por ver! ¡suscríbanse al canal y denle like! ¡adiós!” o “este video ha terminado. gracias por verlo. si te fue útil, suscríbete al canal.”
en ruso, a menudo al final aparece la alucinación “Субтитры сделал DimaTorzok” (subtítulos hechos por: DimaTorzok); me dio curiosidad si realmente había tantos subtítulos con esa frase y busqué en YouTube, pero no parece haber tantos
si los primeros 30 segundos de una llamada grabada son tono de llamada o DTMF (algo que pasa casi siempre cuando llamas a una empresa), Whisper a veces elige mal el idioma y pone Nynorsk o galés; no revisé qué texto transcribe en esos casos, pero probablemente sea una tontería parecida, en mi caso no me afecta en lo práctico, pero para un call center bilingüe sí podría ser bastante molesto
sobre la pregunta “¿quién es Nicolai Winther?”, https://medium.com/@lehandreassen/who-is-nicolai-winther-985409568201
dicen que deberían cambiar el título a "OpenAI, expuesta por entrenar con películas pirateadas"
también hacen la broma de que tal vez “Nancy Qunqar transcribió todo manualmente una por una”, y hasta le echan porras tipo “¡vamos Nancy! ¡tú puedes, sigue así!”