- No modelo Whisper, ao inserir um arquivo wav completamente silencioso, ocorre um fenômeno em que ele sempre alucina e gera o mesmo texto em árabe, "ترجمة نانسي قنقر" (Translation by Nancy Qunqar)
- Se você gerar um áudio silencioso com
ffmpeg e executar o Whisper especificando o idioma árabe e o modelo large-v3, ele sempre produz o mesmo resultado
- Isso sugere que o modelo Whisper foi treinado de forma a interpretar áudio silencioso como um texto específico
- Em modelos anteriores (
small etc.), era possível suprimir isso até certo ponto ajustando parâmetros como suppress_tokens, initial prompt e logprob_threshold, mas no v3 (especialmente large-v3) o efeito é pequeno
- Como solução alternativa, foi proposto "usar VAD (Voice Activity Detection)" ou filtrar previamente os trechos silenciosos do áudio
Sintoma do problema
- Foi relatado um problema no Whisper
large-v3 em que, para áudio silencioso, ele sempre alucina e gera a frase em árabe "ترجمة نانسي قنقر"
- Gerar um arquivo wav de 30 segundos de silêncio com
ffmpeg da seguinte forma
ffmpeg -f lavfi -i anullsrc=r=44100\:cl=stereo -t 30 silence.wav
- Exemplo de execução do comando Whisper
whisper ./silence.wav --language Arabic --model large-v3
- Resultado:
\[00:00.000 --> 00:29.980] ترجمة نانسي قنقر
Causa e análise
- Modelos Whisper mais recentes, como o
large-v3, tendem a gerar saídas alucinatórias arbitrárias para silêncio, em vez de seguir abordagens antigas como descrição de áudio
- Modelos anteriores (
small etc.) também geram saídas variadas (aleatórias) em silêncio, mas é possível controlá-las parcialmente com várias opções como suppress_tokens, initial prompt e logprob_threshold
- No v3, os métodos acima não funcionam bem e aparece um resultado alucinatório fixo
Sugestões de contorno e solução
- Aplicar VAD (Voice Activity Detection): executar o Whisper apenas nos trechos do áudio em que realmente há voz, sem enviar o silêncio como entrada
- Ajuste de parâmetros como
suppress_tokens, initial prompt e logprob_threshold: em alguns modelos funciona, mas no large-v3 o efeito é mínimo
- Áudios completamente silenciosos ou com sinal muito fraco precisam de pós-processamento por outro método, em vez de depender do Whisper
Outras discussões
- Houve também discussão adicional sobre a existência de um modelo melhor do que o
large-v3 para árabe, mas nenhum modelo alternativo claro foi apresentado
1 comentários
Comentário no Hacker News
ao transcrever áudio em chinês com o whisper-large-v3, já vi várias vezes trechos de silêncio saírem como frases aleatórias tipo “curta, compartilhe e adicione aos favoritos”, o que levanta a suspeita de que, no treinamento do modelo, coletaram dados aleatoriamente de vídeos do YouTube sem selecionar cuidadosamente material útil
com LLM acontece a mesma coisa, é um caso clássico de "overfitting" para dados enviesados e pouco claros, parecido com devolver uma resposta automática de ausência do escritório como se fosse a tradução, artigo relacionado https://www.theguardian.com/theguardian/2008/nov/01/5
para poupar tempo de busca: o árabe "رجمة نانسي قنقر" significa "tradução de Nancy Qanqar" ou "traduzido por Nancy Qanqar", "رجمة" é tradução e "نانسي قنقر" é um nome
o Whisper alucina tanto que chega a ser inutilizável, isso já foi bem documentado várias vezes, remover o silêncio do áudio ajuda um pouco, mas ainda há problemas como correção gramatical automática (por exemplo, em tradução de fala bilíngue), melhorou nos modelos de áudio mais recentes, mas não foi resolvido por completo https://news.ycombinator.com/item?id=43427376
mesmo na versão em inglês do Whisper, ao reproduzir silêncio aparecem com frequência coisas como “[ sub by sk cn2 ]”, “de qualquer forma, obrigado por assistir! Não esqueça de se inscrever e curtir! Tchau!” ou “este vídeo terminou. Obrigado por assistir. Se foi útil, inscreva-se no canal.”
em russo, também costuma aparecer no final a alucinação “Субтитры сделал DimaTorzok” (legendas feitas por: DimaTorzok), fui até procurar no YouTube para ver se realmente havia tantas legendas com isso, mas não parece haver tantas assim
quando os primeiros 30 segundos de uma ligação gravada são toque de chamada ou DTMF (algo que quase sempre acontece ao ligar para empresas), o Whisper frequentemente escolhe o idioma errado, como nynorsk ou galês, não cheguei a verificar que texto ele transcreve nesses casos, mas provavelmente sai algo igualmente sem sentido, para mim isso não é um problema prático, mas pode ser bem inconveniente para centrais bilíngues
sobre a pergunta “quem é Nicolai Winther?”, https://medium.com/@lehandreassen/who-is-nicolai-winther-985409568201
defendem que o título deveria ser mudado para "OpenAI, prova exposta de que treinou com filmes piratas"
também há a piada de que “talvez a Nancy Qunqar tenha transcrito tudo manualmente, uma por uma”, com mensagens de apoio do tipo “força, Nancy! Continue firme!”