Lanzamiento de Gemini 3.1 Flash Live — y lo que Nextain estaba preparando
Hoy se ha lanzado Gemini 3.1 Flash Live. La sincronización ha sido curiosamente perfecta, así que hemos decidido revelar la tecnología en la que estábamos trabajando, aunque de forma incompleta. Naia OS ya soportaba Gemini Live a través de la cuenta de Naia y el proveedor de Google, y la aplicación de Gemini 3.1 Flash Live se realizó de inmediato. Puedes verlo en el siguiente video.
Estos modelos se conocen como S2S, o modelos Omni, y permiten conversaciones más rápidas y naturales en comparación con los pipelines tradicionales de STT, LLM y TTS.
Modelos de conversación de voz en tiempo real (S2S, modelo omni) similares al proceso de aprendizaje del habla humana
El modo de voz de GPT-4o, Gemini Live y MiniCPM-o son ejemplos representativos de modelos que permiten conversar no con texto, sino con voz, en tiempo real y con emociones. En inglés, se suelen llamar Speech to Speech (S2S) o Omni Model. Pensamos que estos modelos se asemejan mucho más a los humanos que los modelos unidireccionales existentes de STT (modelos que convierten voz a texto) o TTS (modelos que convierten texto a voz). La razón por la que las personas con discapacidad auditiva tienen dificultades para aprender a hablar es porque no pueden escuchar su propia vocalización, lo que dificulta el aprendizaje del habla.
Por lo tanto, juzgué que este era el futuro de los modelos de conversación de voz y que se convertirían en la tendencia dominante, así que eliminé las opciones de configuración individuales de STT/TTS y las integré en un 'modelo de conversación en vivo', añadiendo la API de Gemini Live y gpt-4o-realtime-preview. Sin embargo, dado que ambas APIs son de pago, las etiqueté como "Solo TTS" para usuarios gratuitos e incluí Edge en la selección del modelo de conversación, lanzando así la versión 0.1.2 recientemente (ayer). Integré la API de Gemini Live con la cuenta de Naia y la probé en conversaciones reales, y la respuesta de la conversación fue muy satisfactoria en términos de retroalimentación emocional y velocidad de respuesta.
Malentendido sobre los modelos de conversación de voz en tiempo real, que yo pensaba que eran simplemente modelos STT/TTS
Pero aquí había un gran malentendido. Yo había entendido la API de Gemini Live como un modelo integrado de STT/TTS de próxima generación, pero más tarde descubrí que tenía un modelo LLM específico incorporado, Gemini 2.5 Flash, y que no se podía cambiar el LLM.
MiniCPM-o-4.5, un modelo de conversación de voz en tiempo real que se puede usar localmente
La razón por la que me di cuenta de este malentendido fue al buscar y aplicar un modelo de conversación de voz en tiempo real que pudiera ejecutarse en una RTX-3090, ya que Naia tiene como objetivo soportar modelos locales dentro del alcance del usuario. Los primeros candidatos fueron Moshi, Qwen3-Omni-30b y MiniCPM-o-4.5. Moshi es un pionero en este campo en código abierto, pero no lo elegimos porque los idiomas soportados son principalmente inglés/francés y la comunidad no está activa. Qwen3-omni-30b tiene un rendimiento excelente y es el más reciente, pero no era suficiente con los 24GB de VRAM de una sola RTX 3090 y no estaba verificado, por lo que lo descartamos. Finalmente, nos decidimos por MiniCPM-o. Aunque actualmente no soporta coreano, juzgamos que con una cierta inversión de capital se podría realizar un ajuste fino adicional del idioma, y dado que soporta audio de referencia, sería posible implementar el TTS deseado por el usuario.
Además, pensé que, debido a su pequeño tamaño, si se ejecutaba junto con Qwen3-omni-30b-a3b utilizando la VRAM restante de 24GB, el rendimiento del LLM podría mejorarse significativamente incluso en una RTX-3090. Qwen3-omni es un modelo de conversación de voz en tiempo real (modelo Omni) como se mencionó anteriormente, pero la razón por la que no lo adoptamos fue que la salida de voz se distorsionaba al cuantificarlo, lo que impedía ejecutarlo en una GPU de consumo de 24GB. Sin embargo, se dice que los modelos cuantificados muestran un buen rendimiento como LLM.
Así que cargué MiniCPM-o en una GPU local (RunPod RTX 3090) y lo conecté a la aplicación Naia creando un servidor puente Websocket. Lo que descubrí mientras lo hacía fue que el modelo no "escupía" lo que escuchaba. Pero aquí, el hecho crucial que descubrí fue que el modelo Qwen3-8B incorporado estaba respondiendo, y que el modelo omni estaba entrenado de extremo a extremo y no era reemplazable. Es decir, sería más apropiado llamar a MiniCPM-o como Qwen3-8b-omni. Para ser exactos, se dice que utiliza Whisper-medium para la escucha, Qwen3-8b para el "cerebro", CosyVoice2 para la síntesis de voz y SigLip2 para la visión. Se dice que estos diferentes modelos se concatenan y se someten a un proceso de reentrenamiento con datos multimodales. En un sentido amplio, es un ajuste fino, pero dado el enorme volumen de datos multimodales, el costo puede ascender a decenas o cientos de miles de millones de wones. Recientemente, hubo mucho debate en Dokpamo de Corea sobre si era "from scratch" o no, y parece que esto sugiere que la verdadera montaña a alcanzar no es solo "from scratch".
El desafío del código Claude para soportar MiniCPM-o-4.5 y vllm-omni
Sin embargo, dado que el Qwen3-8b incorporado se considera del nivel de GPT-4o, no podíamos simplemente ignorarlo. Además, con la posibilidad de referencia de voz y el ajuste fino del LLM, juzgamos que era un modelo que Nextain, que busca la soberanía de la IA, debía perseguir.
Forkeamos vllm y lo subimos a RunPod, pero requería 48GB de VRAM. Lo ejecutamos durante casi dos días. Fue entonces cuando descubrimos que existía un proyecto separado llamado vllm-omni, y que alguien ya estaba trabajando en MiniCPM-o-4.5. Así que comentamos que apoyaríamos las pruebas l3. (→ vllm-omni #1182) Todavía no hemos recibido respuesta, y mientras esperábamos, continuamos internamente con intentos basados en vllm-omni.
Esta vez, abordamos el problema con especial cautela. En una ocasión anterior, subimos un PR creado con "código Claude" a otro proyecto de código abierto con un análisis de IA incompletamente verificado, y fuimos duramente criticados. El análisis del código era incompleto, no se respetaron las reglas de la comunidad, e incluso creamos algo fuera del alcance del proyecto, lo cual era de esperar. Así que esta vez, recopilamos el contexto desde la perspectiva del upstream del repositorio y pasamos por un proceso de revisión adversa repetida. Solo entonces declaramos un "clean pass", confirmamos que la conversación funcionaba al conectarlo a Naia OS, y creamos y revisamos la documentación para la contribución al upstream.
Pero RunPod se cayó y hoy, al intentar levantarlo de nuevo, no funciona. Las cosas que habíamos documentado incompletamente durante el trabajo nos pasaron factura. Al no poder verificar el tiempo de ejecución, la reproducción misma era imposible. Revisamos todos los registros de sesiones anteriores para encontrarlos, y mientras intentábamos reproducirlo de nuevo y corregir los registros, finalmente encontramos otro problema crítico y tuvimos que detenerlo. Habíamos utilizado un patrón específico porque era nuevo y no seguía el patrón de otros modelos de vllm-omni, y con la actualización de vllm-omni, todo se rompió. Los resultados del análisis nos llevaron a escribir otro informe intermedio sobre el fallo en el control del arnés y el contexto, y basándonos en esto, volvimos a modificar el contexto y el arnés, y realizamos un análisis repetido del código en lugar del costoso RunPod. ㅜㅜ
https://github.com/nextain/vllm-omni/blob/main/.agents/docs/minicpm-o-midterm-review.md
Hoy quería compartir un video de MiniCPM-o 4.5 en funcionamiento, coincidiendo con la noticia del lanzamiento de Gemini 3.1 Flash Live. Pero es realmente difícil lograrlo de una vez. Son casi las 3:30 de la madrugada. Sobre todo, el propósito de este trabajo es la realización de un ecosistema de código abierto AI-native, un experimento para hacer posible que la IA pueda contribuir correctamente al código abierto sin "AI slop". La próxima semana hemos decidido pedir prestadas algunas tarjetas gráficas, así que creo que la situación será un poco más fácil.
Si se realizan trabajos adicionales, también compartiré si la referencia de audio o el ajuste fino del LLM son posibles.
Referencias
- Gemini 3.1 Flash Live — Model Card (Google DeepMind)
- Speech-to-Speech Models in 2026: Three Architectural Bets — Comparación de arquitecturas de modelos de voz integrados
- Introducing gpt-realtime — Simon Willison — Análisis del modelo gpt-realtime
- GPT-4o vs. GPT-4.1: All the differences — Diferencias de rol entre modelos
- Resultados del experimento MiniCPM-o (GitHub Issue)
- Rediseño de la UI de configuración (GitHub Issue)
- Diseño del pipeline STT/TTS (GitHub Issue)