Lançamento do Gemini 3.1 Flash Live — e o que a Nextain estava preparando
Hoje, o Gemini 3.1 Flash Live foi lançado. Com um timing peculiar, decidimos revelar a tecnologia que estávamos preparando, embora ainda incompleta. O naia-os já suportava o Gemini Live através da conta Naia e do provedor Google, e a aplicação do Gemini 3.1 Flash Live foi imediata. Você pode conferir no vídeo abaixo.
Esses modelos são, na verdade, chamados de S2S, ou modelos Omni, e suportam conversas mais rápidas e naturais em comparação com os pipelines STT, LLM e TTS existentes.
Modelos de Conversação por Voz em Tempo Real (S2S, modelo omni) Semelhantes ao Processo de Aprendizagem da Fala Humana
O modo de voz do GPT-4o, Gemini Live e MiniCPM-o são exemplos proeminentes, sendo modelos que conversam não por texto, mas por voz, em tempo real e até com emoção. Em inglês, são geralmente chamados de Speech to Speech (S2S) ou Omni Model. Pensei que eles se assemelhavam muito mais aos humanos do que os modelos unidirecionais STT (modelos que convertem voz em texto) ou TTS (modelos que convertem texto em voz) existentes. A razão pela qual pessoas com deficiência auditiva têm dificuldade em aprender a falar é porque não conseguem ouvir a própria fala, o que dificulta o aprendizado.
Por isso, considerei que este era o futuro dos modelos de conversação por voz e que se tornaria a tendência dominante. Removi as opções de configuração individuais de STT/TTS e as integrei em um 'modelo de conversação ao vivo', adicionando a API Gemini Live e o gpt-4o-realtime-preview. No entanto, como ambas as APIs são pagas, para usuários gratuitos, as marquei como 'TTS Only' e incluí o Edge na seleção do modelo de conversação. Assim, a versão 0.1.2 foi lançada recentemente (ontem). Integrei a API Gemini Live com a conta Naia e fiz testes reais de conversação, e a resposta da conversa foi muito satisfatória em termos de feedback emocional e velocidade de resposta.
O Equívoco sobre Modelos de Conversação por Voz em Tempo Real, que eu Pensava serem Apenas Modelos STT/TTS
No entanto, havia um grande equívoco aqui. Eu havia entendido a API Gemini Live como um modelo integrado de STT/TTS de próxima geração, mas descobri mais tarde que ela tinha um modelo LLM específico embutido, o Gemini 2.5 Flash, e que o LLM não podia ser alterado.
MiniCPM-o-4.5: Um Modelo de Conversação por Voz em Tempo Real para Uso Local
A razão pela qual percebi esse equívoco foi ao procurar e aplicar um modelo de conversação por voz em tempo real que pudesse rodar em uma RTX-3090, já que a Naia visa suportar modelos locais dentro do alcance do usuário. Os primeiros candidatos foram Moshi, Qwen3-Omni-30b e MiniCPM-o-4.5. Moshi é um pioneiro neste campo no código aberto, mas o suporte de idiomas é principalmente inglês/francês e a comunidade não é ativa, então não o escolhi. Qwen3-omni-30b tem o desempenho mais recente e excelente, mas 24GB de VRAM de uma única RTX 3090 não seriam suficientes e não foi verificado, então o descartei. Finalmente, o MiniCPM-o foi o escolhido. Embora não suporte coreano atualmente, se houver um certo investimento de capital, é possível fazer um fine-tuning adicional para o idioma, e como o áudio suporta áudio de referência, julguei que seria possível implementar o TTS desejado pelo usuário.
Além disso, pensei que, por ser pequeno, se rodasse com o Qwen3-omni-30b-a3b usando a VRAM restante dos 24GB, o desempenho do LLM poderia ser significativamente aumentado mesmo em uma RTX-3090. O Qwen3-omni é um modelo de conversação por voz em tempo real (modelo Omni) como mencionado anteriormente, mas a razão pela qual não o adotei é que a saída de voz ficava distorcida ao ser quantizada, tornando-o inviável em GPUs de consumidor com 24GB. No entanto, como LLM, diz-se que o modelo quantizado mostra um bom desempenho.
Então, carreguei o MiniCPM-o em uma GPU local (RunPod RTX 3090) e criei um servidor de ponte Websocket para conectá-lo ao aplicativo Naia. O que descobri no processo foi que o modelo não 'cuspia' o que ouvia. Mas o que foi crucial aqui foi descobrir que o modelo Qwen3-8B embutido estava respondendo, e que o modelo omni foi treinado de ponta a ponta e não podia ser substituído. Ou seja, seria mais apropriado chamar o MiniCPM-o de Qwen3-8b-omni. Mais precisamente, diz-se que ele usa Whisper-medium para ouvir, Qwen3-8b como 'cérebro', CosyVoice2 para síntese de voz e SigLip2 para visão. Esses diferentes modelos são conectados e passam por um processo de retreinamento com dados multimodais. Em grande parte, é um fine-tuning, mas como a escala dos dados multimodais é tão grande, o custo pode ser de dezenas a centenas de bilhões de wons. Recentemente, houve muita discussão na Coreia sobre 'from scratch' ou não, e parece que a montanha real a ser alcançada não é apenas 'from scratch'.
(→ Registro de Experimento MiniCPM-o)
MiniCPM-o-4.5, A Odisseia do Código Claude para Suporte vLLM-omni
No entanto, como o Qwen3-8b embutido já é considerado de nível GPT-4o, não pude simplesmente ignorá-lo. Além disso, com a possibilidade de referência de voz e fine-tuning do LLM, julguei que era um modelo que a Nextain, que busca a IA soberana, deveria perseguir. Fiz um fork do vllm e o carreguei no RunPod, mas descobri que precisava de 48GB de VRAM. Rodou por quase dois dias. Só então percebi que existia um projeto separado chamado vllm-omni, e que alguém já estava trabalhando no MiniCPM-o-4.5. Então, deixamos um comentário dizendo que apoiaríamos os testes l3. (→ vllm-omni #1182) Ainda não houve resposta, e enquanto esperávamos, continuamos tentando internamente com base no vllm-omni.
Desta vez, abordamos com especial cautela. Anteriormente, eu havia submetido um PR feito com código Claude para outro projeto de código aberto, com uma análise de IA incompletamente verificada, e fui severamente criticado. A análise do código estava incompleta, as regras da comunidade não foram seguidas e, além disso, criei algo fora do escopo do projeto, o que era natural. Então, desta vez, coletei o contexto da perspectiva do upstream do repositório e passei por um processo de revisão adversária repetida. Só então declarei um 'clean pass', confirmei que a conversação funcionava ao anexá-lo ao naia-os real e criei e revisei a documentação para contribuição ao upstream.
Mas o RunPod caiu e, ao tentar reiniciá-lo hoje, não funcionou novamente. As coisas que eu havia registrado incompletamente durante o trabalho me atrapalharam. Não conseguindo verificar o tempo de execução, a própria reprodução se tornou impossível. Revirei todos os registros de sessões anteriores para encontrá-los e estava reproduzindo e corrigindo os registros novamente, mas acabei encontrando outro problema crítico e tive que parar. Usei um padrão específico porque era novo e não seguia o padrão de outros modelos do vllm-omni, e com a atualização do vllm-omni, tudo se quebrou. Os resultados da análise me levaram a escrever outro relatório provisório sobre a falha no controle do harness e do contexto, e com base nisso, fiz com que o contexto e o harness fossem corrigidos novamente e realizei análises repetidas do código em vez do caro RunPod. ㅜㅜ
https://github.com/nextain/vllm-omni/blob/main/.agents/docs/minicpm-o-midterm-review.md
Eu queria muito compartilhar um vídeo do MiniCPM-o 4.5 em funcionamento, em sintonia com a notícia do lançamento do Gemini 3.1 Flash Live hoje. Mas é realmente difícil conseguir tudo de uma vez. Agora são quase 3:30 da manhã. Acima de tudo, o objetivo deste trabalho é a realização de um ecossistema de código aberto AI-native, um experimento que busca tornar possível que a IA contribua corretamente para o código aberto, sem 'ai slop'. Como combinamos de pegar emprestado algumas placas de vídeo na próxima semana, acho que a situação ficará um pouco mais fácil.
Em seguida, se houver trabalho adicional, compartilharei se a referência de áudio ou o fine-tuning do LLM são possíveis.
Referências
- Gemini 3.1 Flash Live — Model Card (Google DeepMind)
- Speech-to-Speech Models in 2026: Three Architectural Bets — Comparação de arquiteturas de modelos de voz integrados
- Introducing gpt-realtime — Simon Willison — Análise do modelo gpt-realtime
- GPT-4o vs. GPT-4.1: All the differences — Diferenças de função entre modelos
- Resultados do Experimento MiniCPM-o (GitHub Issue)
- Redesenho da UI de Configuração (GitHub Issue)
- Design do Pipeline STT/TTS (GitHub Issue)