Inspiration

Nerdearla ofrece transcripción simultánea en sus eventos, pero hoy depende de herramientas pagas y operación manual. Con más de 30 sesiones en inglés este año, ese esquema no escala. Quise construir una alternativa open source que sí escale, poniendo en práctica mis habilidades técnicas en un problema real e inclusivo.

What it does

Un sistema web donde cada "sala" corre una transcripción y traducción en tiempo real de forma independiente. El usuario elige un audio (local o de YouTube), le da play, y ve subtítulos en inglés arriba y español abajo. Con un clic se abre otra sala en paralelo, con su propio audio y estado, sin tocar código.

How we built it

Backend en Python (FastAPI + WebSockets) usando la API de audio de Gemini para transcripción y traducción en tiempo real. Cada sala tiene su propio pipeline: FFmpeg lee el audio y lo va entregando a Gemini en streaming. El frontend usa el currentTime del reproductor como reloj maestro para controlar ese envío y mantener todo sincronizado.

Challenges we ran into

El más grande fue la sincronización: al principio el backend procesaba el audio a su propio ritmo, sin enterarse si el usuario pausaba o no, así que los subtítulos se adelantaban o seguían corriendo con el audio parado. Lo resolví haciendo que el frontend gobierne el ritmo de envío (play/pause/seek) y el backend reaccione a eso en tiempo real.

Accomplishments that we're proud of

Lograr que varias salas corran en paralelo de forma totalmente independiente, cada una con su propio audio y estado de reproducción, sin que una afecte a la otra.

What we learned

Que Gemini procesa audio mucho más rápido que el habla real, lo cual ayuda pero rompe todo si no se controla el ritmo de entrega.

What's next for nerdearla live captions

Integración con OBS/vMix para quemar subtítulos directo al stream, un glosario técnico para mejorar la traducción en charlas de tecnología, exportación a SRT/VTT, y un panel de monitoreo para equipos de producción de eventos.

Built With

Share this project:

Updates

Submission history