Inspiración y origen del nombre
El nombre NejoyT tiene un significado muy especial para mí: es la combinación del nombre de mi novia Joceline, Nerdearla, y la letra T de Translate (traducción).
Las conferencias tecnológicas son vibrantes pero desafiantes: decenas de charlas simultáneas, oradores internacionales y un uso constante de tecnicismos en inglés que a menudo dejan fuera a parte de la audiencia. Quería crear una solución accesible que no solo funcionara bien en el backend, sino que también fuera visualmente atractiva, moderna, responsive y fácil de operar para cualquier persona.
Diseño y desarrollo
Le dediqué muchas horas y noches sin dormir para cuidar la interfaz y la experiencia de usuario:
- Diseñé una vista limpia y accesible para que los asistentes puedan leer desde su celular o laptop.
- Implementé un overlay transparente pensado directamente para integrarse en transmisiones con OBS Studio.
- Estructuré un backend en FastAPI con WebSockets y soporte para Google Gemini Live y modelos locales.
Desafíos y lecciones aprendidas
El camino no estuvo exento de dificultades. Tenía la intención de incluir un sistema completo de identificación de oradores mediante huellas acústicas para salas con múltiples disertantes en simultáneo. El motor base está desarrollado en la capa trasera, pero requería más ciclos de prueba e iteración y me quedé sin créditos en la API de Google para afinarlo antes de la entrega, por lo que decidí priorizar la estabilidad absoluta del streaming y la traducción.
Mejoras recientes (posteriores a la grabación del video)
Luego de grabar el video de demostración, continué afinando el código para resolver detalles clave que mejoran notablemente la experiencia en vivo:
- Filtro antirepetidor: Implementé la supresión activa de texto duplicado durante la rotación de sesiones de 9 minutos, asegurando que el solape no repita en pantalla oraciones que la audiencia ya leyó.
- Protección de cuota y traducción resiliente: Ajusté el flujo para traducir únicamente frases finales cerradas con una caché en memoria de 500 entradas, e integré Gemini 3.6 Flash con timeout extendido para evitar bloqueos por saturación de servidores o límites de peticiones.
- WebSockets blindados y panel más limpio: Corregí el tipado del bus de eventos para garantizar cero desconexiones en las salas (
/room/{id}) y simplifiqué el formulario de creación de salas en/adminretirando campos innecesarios para agilizar la operación.
Recomendaciones de uso y rendimiento
Para sacarle el máximo provecho al sistema en un evento en vivo, sugiero tener en cuenta lo siguiente:
- Elegir el modelo de Gemini más adecuado: Recomiendo utilizar siempre los modelos más avanzados y optimizados de Gemini. Esto garantiza respuestas ultrarrápidas, traducción fluida en tiempo real y evita los cuellos de botella o límites de cuota que suelen tener modelos anteriores o experimentales.
- Cargar el glosario técnico con anticipación: Agregar en
/adminlos nombres de las librerías, herramientas y oradores antes de la charla permite que el reconocedor capture la jerga técnica sin errores desde el primer minuto. - Audio limpio: Conectar la entrada directamente desde la consola de sonido o vía RTMP desde OBS para que la fidelidad de la señal asegure una transcripción impecable.
- Aceleración local: Si se opera sin conexión a la nube, contar con una GPU (CUDA o Apple Silicon) para mantener la latencia del modelo Whisper por debajo de los 100 ms.
Conclusión y agradecimientos
Aunque siento que aún queda camino por recorrer para alcanzar el estándar que merece un evento como Nerdearla, estoy muy orgulloso de este punto de partida. Es una base sólida y funcional pensada para seguir evolucionando.
Espero que la comunidad pueda aprovecharla, adaptarla y mejorarla. Estoy a total disposición para responder preguntas o dar una mano a quien quiera implementarlo. ¡Muchas gracias por la oportunidad!
Log in or sign up for Devpost to join the conversation.