Whisper e Gemma 3 conectados com aprendizado contrastivo para entrada de voz de baixo custo em LLMs
Adicionar voz a um LLM de forma econômica se mostrou mais difícil do que os papers sugerem. O autor conectou Whisper Medium e Gemma 3 4B por meio de um projetor MLP, testou teacher forcing, LoRA, quantização e um conjunto de regularizações, mas o progresso útil só veio com InfoNCE contrastivo. A primeira execução bem-sucedida terminou com WER de 35%: ainda longe de um ASR de produção, mas o modelo já reconhece fala e erra de forma foneticamente plausível.
Processado por IA de Habr AI; editado por Hamidun News
Adicionar entrada de voz em um LLM de forma econômica mostrou-se mais complexo do que prometem os artigos sobre multimodalidade. O autor do experimento tentou conectar o codificador de áudio Whisper e o modelo de linguagem Gemma 3 através de um projetor compacto e, após uma série de falhas, chegou a uma configuração funcional usando aprendizado contrastivo.
Como a Pilha Foi Construída
A ideia era simples: em vez de treinar um sistema multimodal caro do zero, pegar um codificador de áudio pronto, um LLM pronto e conectá-los com um "tradutor" entre espaços de embedding. Whisper Medium foi escolhido como o codificador porque suas representações internas são melhor adaptadas para reconhecimento de fala do que alternativas auto-supervisionadas. No lado do texto, usaram Gemma 3 4B, e um projetor MLP de duas camadas serviu como ponte, comprimindo e traduzindo vetores de áudio para o espaço de embedding do LLM.
Para evitar treinar o modelo apenas em inglês limpo de estúdio, o fluxo de treinamento foi montado a partir de múltiplos datasets e misturado dinamicamente. Isso permitiu ao sistema lidar imediatamente com diferentes falas em qualidade, idioma e estilo de pronúncia. O artigo enfatiza separadamente que essa mistura é necessária não para belas estatísticas, mas para que o sistema não se acostumasse a um único ambiente acústico e um único idioma desde as primeiras épocas. Caso contrário, qualquer desvio — ruído, pausa ou fragmento em russo — imediatamente quebraria o reconhecimento.
- LibriSpeech train.360 como base do corpus
- LibriSpeech train.100 como inglês limpo adicional
- Russian LibriSpeech para fala russa
- DisfluencySpeech com pausas, tropeços e gagueira
Por Que Tudo Quebrava
A primeira tentativa confiava na receita mais óbvia: teacher forcing e cross-entropy padrão em transcrições. O LLM recebia como entrada uma instrução, vetores de áudio e o texto correto, com perda computada apenas nos tokens de resposta. Na prática, o esquema quase não ouvia a gravação: o modelo produzia fragmentos incoerentes e WER podia ficar preso em torno de 300%. Mesmo depois de adicionar LoRA, ficou claro que o problema era mais profundo — o projetor não estava trazendo o sinal de áudio para onde o modelo de linguagem podia lê-lo. Gemma mantinha um prior demasiado forte na geometria familiar dos tokens de texto.
Depois veio uma série de correções direcionadas. O autor adicionou uma fase zero onde Gemma primeiro aprendeu simplesmente a reescrever texto seguindo instruções, já que uma versão não instruction-tuned estava sendo usada. Depois vieram experimentos com quantização e regularizações: commitment loss deveria manter saídas do projetor próximas a embeddings conhecidos, SWD alinhar distribuições de vetores de áudio e texto, entropy loss forçar o sistema a usar mais códigos, e VICReg impedir que coordenadas individuais entrassem em colapso.
Visualizações t-SNE ajudaram a identificar dois problemas principais: colapso de representação e uma lacuna geométrica entre espaços de áudio e texto. Mas cada novo ajuste tratava apenas um sintoma. SWD melhorou a forma da distribuição sem melhorar o conteúdo. Entropy loss expandiu o uso de códigos mas fez isso arbitrariamente. VICReg aumentou a variância, mas os vetores se espalharam caoticamente. O sistema repetidamente encontrava uma alternativa onde as métricas pareciam localmente melhores enquanto o reconhecimento real não emergia.
Isso se tornou a lição principal da fase de regularização: com um sinal primário fraco, o modelo otimiza a matemática em vez do significado.
O Que Realmente Funcionou
O ponto de virada foi abandonar a ideia de que o alinhamento poderia ser alcançado apenas através de penalidades indiretas. O autor fez do aprendizado contrastivo o sinal primário e mudou para InfoNCE simétrico: um vetor de áudio deve estar mais próximo de sua transcrição do que de todos os outros textos no lote, e vice-versa. Diferentemente dos regularizadores anteriores, essa perda especifica não estatísticas gerais mas relações específicas de pares.
Com um lote grande isso funcionou notavelmente melhor: a curva de perda caiu suavemente sem saltos bruscos, e WER caiu para 35%. O resultado ainda não corresponde aos sistemas ASR comerciais, mas não é mais ruído aleatório. Nos logs, o modelo começou a cometer erros foneticamente plausíveis: captava sons de palavras e as confundia mais como uma pessoa com audição deficiente do que como um gerador de texto quebrado. Para uma primeira passagem, isso importa mais do que o número absoluto de WER: o sistema parou de simular respostas e começou genuinamente a usar som.
Isso é o que o autor considera o principal sinal de progresso.
"Mas o principal é que ela já está ouvindo."
O Que Isso Significa
Este caso demonstra bem que modalidade de áudio barata para LLMs locais é possível, mas não através do projetor MLP "mágico" de artigos. Um simples pareamento de um codificador pronto e um LLM começa a funcionar apenas quando um sinal de alinhamento forte aparece entre eles. Para desenvolvedores, essa é uma conclusão importante: se você quer adicionar voz ao seu próprio modelo sem treinamento caro do zero, um estágio contrastivo pode se mostrar não uma opção mas um fundamento obrigatório.
Perguntas frequentes sobre a notícia
Como a Pilha Foi Construída?
A ideia era simples: em vez de treinar um sistema multimodal caro do zero, pegar um codificador de áudio pronto, um LLM pronto e conectá-los com um "tradutor" entre espaços de embedding. Whisper Medium foi escolhido como o codificador porque suas representações internas são melhor adaptadas para reconhecimento de fala do que alternativas auto-supervisionadas. No lado do texto, usaram Gemma 3 4B, e um projetor MLP de duas camadas serviu como ponte, comprimindo e traduzindo vetores de áudio para o espaço de embedding do LLM. Para evitar treinar o modelo apenas em inglês limpo
Por Que Tudo Quebrava?
A primeira tentativa confiava na receita mais óbvia: teacher forcing e cross-entropy padrão em transcrições. O LLM recebia como entrada uma instrução, vetores de áudio e o texto correto, com perda computada apenas nos tokens de resposta. Na prática, o esquema quase não ouvia a gravação: o modelo produzia fragmentos incoerentes e WER podia ficar preso em torno de 300%. Mesmo depois de adicionar LoRA, ficou claro que o problema era mais profundo — o projetor não estava trazendo o sinal de áudio para onde o modelo de linguagem podia lê-lo. Gemma mantinha um prior demasiado for
O Que Realmente Funcionou?
O ponto de virada foi abandonar a ideia de que o alinhamento poderia ser alcançado apenas através de penalidades indiretas. O autor fez do aprendizado contrastivo o sinal primário e mudou para InfoNCE simétrico: um vetor de áudio deve estar mais próximo de sua transcrição do que de todos os outros textos no lote, e vice-versa. Diferentemente dos regularizadores anteriores, essa perda especifica não estatísticas gerais mas relações específicas de pares. Com um lote grande isso funcionou notavelmente melhor: a curva de perda caiu suavemente sem saltos bruscos, e WER caiu para
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
O essencial da IA — uma vez por semana
Sete histórias que realmente importaram, escolhidas a dedo. Sem ruído nem releases.
Pronto! Verifique seu e-mail para a confirmação.