Nativox: subtítulos y traducción en vivo para conferencias, en tu propia cuenta de Cloudflare

Qué me inspiró

En las conferencias con varias salas e idiomas, los subtítulos y la traducción son caros o directamente no existen. Los intérpretes cuestan, los servicios de IA piden API keys y cobran por hora, y casi todo depende de que alguien esté al lado de cada computadora. Quise algo que un organizador pueda desplegar con un clic, sin claves y sin pagar por sala.

Qué hace

  • Transcribe y traduce en vivo entre español, inglés y portugués.
  • Muestra los subtítulos en la pantalla del escenario, en vMix/OBS (fondo transparente) y en el celular de la audiencia.
  • Corre en el navegador, gratis y sin internet. Usa Whisper large-v3 turbo y Bergamot (o TranslateGemma) sobre la placa de video, con WebGPU. Como opción, hay un modo en la nube con Workers AI.
  • "Evaluar esta computadora" mide el equipo y recomienda versión de Whisper, nivel de velocidad y si conviene la nube.
  • Glosario técnico en tres capas: guía a Whisper, corrige lo transcripto y protege los términos al traducir.
  • Calendario por sala: cada charla guarda su transcripción, que se exporta a .txt, .srt o .vtt.
  • Corrección a mano en vivo: se puede corregir una frase mientras se transcribe, y las correcciones se recuerdan en el glosario.
  • Avisos a Discord con un botón para reiniciar la sala desde el celular.
  • Cada organizador despliega su propia instancia, y nada de sus eventos pasa por mí.

Cómo lo construí

  • Interfaz y servidor: React 19, Vite y TypeScript estricto. El servidor es un solo Worker de Cloudflare con D1, Durable Objects (WebSocket Hibernation) y Workers AI.
  • Transcripción y traducción: el audio se corta en pausas, se transcribe con contexto y se traduce con el glosario protegido. Los subtítulos se generan una vez por sala y el Durable Object los reparte, así que cada espectador extra no suma costo de IA.
  • Arquitectura: módulos reutilizables con reglas de importación que hace cumplir el lint, cero código duplicado y más de 290 pruebas automáticas.
  • Dos repositorios: el producto open source (MIT) y una landing aparte.

Lo que aprendí

  • Cuántas salas aguanta una computadora se estima así:

$$ N_{\text{salas}} \approx \left\lfloor \frac{T_{\text{frase}}}{T_{\text{pasada}}} \right\rfloor $$

Con frases de unos 6 s y una pasada de ~1 s, entran varias salas. Con ~3 s, entran una o dos.

  • El costo en la nube es lineal:

$$ \text{costo} \approx h_{\text{sala}} \times \$0{,}037 $$

con una cuota gratis diaria.

  • Lo medido en una placa AMD sin f16, con un guion sintético: WER de 1,4 %, 56 de 56 términos técnicos bien traducidos con el glosario protegido, y unos 5,4 s hasta ver el subtítulo traducido.

Desafíos

  • Whisper inventa texto en los silencios. Lo resolví con un filtro de alucinaciones y un corte de audio en pausas.
  • Una placa modesta no llega con texto provisorio. Armé la barra de velocidad y la evaluación del equipo para elegir el nivel según la máquina.
  • Cortes de frase en medio de un término ("Workers Day" / "de AI"). Los corrige una unión con la línea anterior.
  • Cloudflare no enciende la dirección pública al desplegar. Lo dejé documentado como un paso a mano en el README.
  • El límite de pedidos de Workers AI. En la nube se trabaja por frases de 4 a 8 s para cuidarlo.
  • Seguridad: separé el link de la audiencia del acceso de administración, protegí las ramas del repo y no dejé secretos en ningún archivo.
Share this project:

Updates

posted an update —

Actualización: qué hace Nativox

Me faltó explicar lo principal en la descripción original, así que lo dejo acá.

Transcripción y traducción en tres idiomas

Nativox transcribe y traduce en vivo entre español, inglés y portugués, en cualquier dirección: lo que se habla en una de las tres lenguas se muestra en las otras dos (por ejemplo, inglés → español, español → inglés, y también con portugués). Cada sala elige su idioma original y a cuáles se traduce.

Sin límite de salas: escala con tu computadora

  • No hay un tope de salas simultáneas. Todo depende de la potencia de cada computadora.
  • Modo local (gratis): la transcripción corre en la placa de video de cada computadora. Cuantas más computadoras (o más potentes) sumes, más salas cubrís, sin costo por sala.
  • Modo en la nube (Workers AI): se puede transcribir en la nube, hasta unas 60 salas a la vez por cuenta de Cloudflare.
  • Se pueden combinar: salas en la nube junto con salas en local, para crecer todavía más. Y cada quien decide cuáles van por cada camino.

Alertas por Discord (webhook)

Con un webhook de Discord (también sirve Slack o Google Chat), el servidor avisa al canal cuando una sala se queda sin señal o se recupera. Cualquier persona que esté en ese canal se entera, sin necesidad de estar al lado de la computadora. Los avisos traen un botón para reiniciar la sala desde el celular, con un link de un solo uso que vence a los 15 minutos.

Muy personalizable, según tus recursos

  • Velocidad vs. calidad: una barra de cuatro niveles (Ahorro, Equilibrado, Rápido y Máximo) permite priorizar que el texto aparezca antes o cuidar la placa.
  • Traductor a elección: Bergamot (liviano e instantáneo) o TranslateGemma (más calidad).
  • Dónde se transcribe: en tu computadora o en la nube, sala por sala.
  • "Evaluar esta computadora": un test de unos segundos mide la placa, la memoria y el procesador, y recomienda qué nivel, qué versión de Whisper y si conviene la nube para ese equipo.
  • También: glosario técnico por charla, corrección a mano de las frases en vivo, calendario con la transcripción guardada por charla y exportación a .txt, .srt y .vtt.

Sin costo para la audiencia

Cada sala genera sus subtítulos una sola vez y se reparten a todos los que miran: la audiencia no corre ningún modelo, así que sumar espectadores no suma costo de IA.

Log in or sign up for Devpost to join the conversation.

Submission history