Bienvenido

App de escritorio

Vocal Teleprompter

TauriReactTypeScriptRustWeb Speech APITailwind CSS

App de escritorio que escucha a quien habla en tiempo real y desplaza el guion automáticamente para seguirlo. Hecha con Tauri (Rust + React): un binario nativo ligero con interfaz web. Usa la Web Speech API con coincidencia aproximada de palabras para seguir la posición en el texto.

El problema

Grabar video leyendo un guion obliga a memorizarlo o a desplazarlo a mano, y las dos opciones rompen la lectura. Quería un teleprompter que siguiera mi voz y se desplazara solo, para no tener que apartar la vista ni tocar el teclado. Lo difícil no es el desplazamiento, sino que el seguimiento de la voz a la posición sea lo bastante confiable como para no desincronizarse.

Decisiones clave

Tauri en lugar de Electron para la app de escritorio

Electron incluye una instancia completa de Chromium, lo que supone un binario de más de 100 MB y un consumo de memoria que compite con una pestaña del navegador. Tauri usa el webview nativo del sistema (WebView2 en Windows, WKWebView en macOS), con un binario de unos 3 MB y bastante menos RAM. Para una utilidad sencilla que corre en segundo plano durante las grabaciones, esa diferencia de peso importa.

Web Speech API en lugar de Whisper local o un servicio de STT en la nube

El caso de uso es la lectura en vivo, en tiempo real: la latencia es la restricción principal, no la precisión. Whisper en local añade de 1 a 2 segundos de procesamiento por fragmento de audio, y el desplazamiento se queda visiblemente atrás de la voz. Los servicios en la nube suman la latencia de red y un costo por minuto. La Web Speech API funciona en streaming y entrega palabra por palabra mientras hablas, que es justo lo que necesita un teleprompter. La contrapartida es que requiere conexión a internet, lo cual es aceptable.

Coincidencia aproximada de palabras en lugar de coincidencia exacta para seguir la posición

La coincidencia exacta falla constantemente en la práctica: quien habla duda, mete muletillas, pronuncia mal un término técnico o el STT devuelve una transcripción casi correcta. Un comparador aproximado con distancia de Levenshtein sobre una ventana deslizante de las siguientes palabras esperadas encuentra la posición más probable aunque la transcripción no sea perfecta. Esa fue la diferencia entre una demo que funciona en condiciones ideales y una herramienta que funciona en una grabación real.

Resultado

La app es estable y la uso en mis propias grabaciones. La coincidencia aproximada resultó la decisión de diseño más importante: con coincidencia exacta, el seguimiento se habría desincronizado en los primeros 30 segundos de cualquier sesión real. El proyecto también me sirvió de introducción práctica a la arquitectura de Tauri y a la frontera entre el backend en Rust y el frontend en React.

Puntos destacados

  • —Reconocimiento de voz en tiempo real con la Web Speech API
  • —Coincidencia aproximada de palabras, tolerante a errores de pronunciación y variaciones
  • —Resaltado palabra por palabra con desplazamiento automático suave
  • —Soporte multilingüe y selección de micrófono
  • —App de escritorio con Tauri: binario nativo, sin el peso de Electron

Trabajemos juntos