Inspiración

Nerdearla tiene más de 30 charlas en inglés, muchas en simultáneo. Si no manejás el idioma, te perdés la charla; los intérpretes son caros y no alcanzan para todos los escenarios. Queríamos una solución abierta para que nadie se quede afuera por el idioma.

Qué hace

Conffy convierte el audio de cada escenario en subtítulos en vivo, en el idioma original y traducidos (español ⇄ inglés). Desde el celular abrís una web, elegís la sala y leés en tu idioma: sin instalar nada ni usar auriculares.

  • Entradas: la consola de sonido o un micrófono, OBS/vMix, streams en vivo (incluido YouTube) y archivos.
  • Salidas:
    • visor web para el público
    • overlay para OBS
    • transcripciones SRT/VTT/TXT
    • panel de producción
    • API

Cómo lo construimos

  • Transcripción y traducción: un worker por escenario corta el audio en frases (Silero VAD), Whisper las transcribe y Gemma 4 las traduce, todo local en una Mac.
  • Distribución: los subtítulos pasan por Valkey, y una API en FastAPI los reparte por SSE a todos los navegadores.
  • Despliegue: docker compose con nginx, réplicas de la API y failover automático de workers.
  • Modelos intercambiables: cualquier servidor compatible con OpenAI, incluido Gemini.

Desafíos

  • Whisper no funciona en streaming, así que armamos la segmentación en frases y los subtítulos provisorios y finales encima.
  • Gemma completaba, mezclaba u omitía fragmentos. Lo resolvimos con prompts con etiquetas y un ejemplo resuelto.
  • Los modelos que "piensan" devolvían traducciones vacías.
  • Hubo trampas de rendimiento ocultas: los timestamps por palabra duplicaban la latencia de Whisper, y en los contenedores los hilos de OpenMP quemaban CPU sin hacer nada útil.

Logros

  • Charlas reales de Nerdearla subtituladas en vivo: ~1 s en el idioma original y ~2 s traducidas.
  • 1.500 espectadores simultáneos en 15 charlas, sin conexiones caídas y con entrega en menos de 20 ms.
  • Un failover probado matando workers a mitad de charla.
  • 100% open source (Apache 2.0) y documentado.

Qué aprendimos

  • Los espectadores son baratos y las charlas son caras: el costo real está en la GPU.
  • Hay que medir antes de optimizar: cada cuello de botella fue una sorpresa.
  • Los modelos abiertos chicos alcanzan si el prompt es preciso y se prueba con charlas reales.

Próximos pasos

  • Micrófono directo desde el navegador.
  • Modo 100% Gemini, sin GPU.
  • Traducción en streaming con Gemini Live.
  • Más idiomas.
  • Despliegue en Kubernetes y un piloto en un escenario real de Nerdearla.

Built With

Share this project:

Updates

Submission history