Cómo funciona

Transcribir audio con Whisper, dentro de tu navegador

La página ejecuta un modelo abierto de reconocimiento de voz, Whisper, dentro de la pestaña de tu navegador. Aquí verás qué descarga, cómo lee un archivo largo sin cargarlo entero, cómo se forman los párrafos y por qué el tiempo cambia de un dispositivo a otro.

Tres pasos, todos dentro de tu navegador

1. Tu navegador lee el archivo

Donde tu navegador puede, un worker de tu pestaña toma la pista de sonido en fragmentos de 30 segundos y la convierte en el sonido mono a 16 kHz que espera el modelo.

2. Whisper la transcribe por ventanas

El motor, whisper.cpp compilado a WebAssembly, transcribe unos tres minutos de sonido cada vez y entrega a la página el texto de cada ventana.

3. La página ordena el texto

Las palabras se agrupan en párrafos en las pausas, con una marca de tiempo en cada uno si la quieres, listas para buscar, copiar o guardar en TXT.

El modelo: Whisper, base o small

Whisper es un modelo de reconocimiento de voz que OpenAI publicó en 2022, con su código y sus pesos bajo licencia MIT. Escucha el sonido en tramos de 30 segundos y escribe las palabras, con los tiempos de cada segmento. Este sitio ofrece dos tamaños:

  • El modelo pequeño (el predeterminado) es Whisper base, guardado con 5 bits por peso. Es la descarga más ligera.
  • El modelo grande es Whisper small, guardado con 8 bits por peso: una descarga mayor que necesita más memoria.

Guardar los pesos con menos bits (cuantización) reduce el tamaño de un modelo a cambio de algo de precisión. Todavía no publicamos cómo se comparan los dos tamaños en este motor, idioma por idioma: primero medimos, luego describimos. El menú de idiomas recoge los idiomas que se le pueden indicar a Whisper; con la detección automática, el motor elige el idioma en la primera ventana que tiene voz y lo mantiene para el resto del archivo.

El motor: whisper.cpp compilado a WebAssembly

El modelo se ejecuta en whisper.cpp, una versión de código abierto de Whisper escrita en C/C++, que compilamos a WebAssembly (un formato de programa que ejecuta cualquier navegador actual) con una pequeña interfaz propia. Hay tres versiones, y la página las prueba en este orden:

  • WebGPU, si tu navegador ofrece un adaptador gráfico con las funciones que necesita el motor. Aún no hemos medido esta versión en una tarjeta gráfica real, así que no afirmamos nada sobre ella.
  • WebAssembly en varios hilos, uno por cada núcleo lógico que declara tu navegador. Los hilos necesitan que la pestaña esté aislada entre orígenes, algo que dan las cabeceras del sitio.
  • WebAssembly en un solo hilo, si no hay hilos disponibles o tu navegador declara dos núcleos lógicos o menos. Da el mismo tipo de resultado.

Si una versión no arranca, o si la versión WebGPU falla durante la transcripción, la página reinicia el motor con la versión siguiente y continúa. La línea sobre la transcripción indica qué versión hizo el trabajo.

Qué descarga la página, y cuándo

Al abrir la página solo se descargan la página y sus propios archivos. El motor y un modelo llegan desde este sitio cuando añades tu primer archivo:

Archivos que la transcripción descarga de este sitio (tamaños de los archivos publicados)
ArchivoTamañoCuándo
Motor, versión multihilo o de un hilo (una de las dos)unos 1,5 MBTu primer archivo
Modelo pequeño (Whisper base, 5 bits), el predeterminado59,7 MB en 3 partesTu primer archivo con él
Modelo grande (Whisper small, 8 bits)264,5 MB en 13 partesSolo si lo eliges
Detector de voz (Silero VAD)0,9 MBTu primer archivo
Lector multimedia (Mediabunny), parte de los scripts de la páginaunos 0,3 MBTu primer archivo
Motor, versión WebGPUunos 3,4 MBSolo si el navegador ofrece un adaptador WebGPU utilizable

Los modelos llegan en partes de 20 MiB como máximo, porque el alojamiento no sirve ningún archivo de más de 25 MiB. Antes de que el motor use una parte, tu navegador la compara con su huella SHA-256, de modo que una descarga dañada se rechaza en lugar de dar una transcripción errónea. Las partes verificadas se quedan en el Cache Storage de tu navegador cuando tiene espacio para ellas, así que tu siguiente archivo, y tu siguiente visita, se ahorran la descarga.

Por qué tu grabación nunca se sube

Cada paso ocurre dentro de tu pestaña, el sitio no tiene ningún punto que pueda recibir un archivo y la página solo puede conectarse a este sitio. La comprobación de que tu grabación no se sube está en la página de privacidad y seguridad, con los pasos para ver tú mismo las solicitudes.

Diagrama de adónde va tu grabación: tu navegador lee el archivo, un lector multimedia en un worker descodifica su sonido en fragmentos de 30 segundos, el motor Whisper en WebAssembly lo transcribe por ventanas de unos 3 minutos y tu pestaña muestra los párrafos para que los copies o los guardes en TXT. La grabación nunca se envía al servidor del sitio, que solo envía la página, el motor y el modelo (unos 60 MB con el primer archivo, que luego guarda el navegador).
Tu grabación se queda en la pestaña de tu navegador: solo entran la página, el motor y el modelo, y no sale nada de tu archivo.

Cómo se lee y se transcribe un archivo largo

Una grabación de una hora ocupa unos 115 MB de sonido una vez descodificada a mono y 16 kHz (3.600 segundos x 16.000 muestras x 2 bytes, o el doble como los números de 32 bits con los que trabaja el motor). Por eso, siempre que el navegador lo permite, la página no descodifica el archivo entero de una vez. Un segundo worker abre el archivo con Mediabunny, descodifica su pista de sonido con el descodificador del propio navegador, 30 segundos cada vez, y solo entrega el fragmento siguiente cuando el motor está listo para recibirlo.

Los fragmentos se unen en ventanas de unos tres minutos. Cada ventana termina en el medio segundo más silencioso de sus últimos 15 segundos, para que un corte rara vez caiga dentro de una palabra, y las ventanas se suceden sin huecos ni solapes. Un pequeño detector de voz marca los tramos con habla de cada ventana, así el modelo se salta el silencio en lugar de escribir palabras sobre él. Cada ventana se transcribe con el final del texto anterior como contexto, lo que ayuda a una frase que queda partida por un corte, y sus tiempos se colocan de nuevo sobre el reloj del archivo.

Cuando termina una ventana, sus párrafos aparecen en la página, así que puedes empezar a leer y a buscar mientras sigue el resto. Si tu navegador no tiene descodificador para el sonido de un archivo, la página pasa a descodificar el archivo entero de una vez, y entonces rechaza los de más de 500 MB o de más de 1 hora.

Cuatro pasos de un archivo largo a párrafos: la pista de sonido se lee en fragmentos de 30 segundos como mono a 16 kHz; los fragmentos se unen en ventanas de unos 3 minutos, cada una cortada en el medio segundo más silencioso; el detector de voz se salta el silencio y Whisper escribe las palabras de cada ventana con sus tiempos; una pausa de 2 segundos o más entre dos palabras empieza un párrafo nuevo, que puede llevar su marca de tiempo como [hh:mm:ss].
Siempre que el navegador puede leerla por partes, una grabación larga no se descodifica entera de golpe: pasa por la página fragmento a fragmento y ventana a ventana. Las cifras son ajustes del motor.

Cómo se forman los párrafos y las marcas de tiempo

Whisper devuelve segmentos de texto con un tiempo de inicio y otro de fin, y un tiempo para cada palabra. La página los une en párrafos: uno nuevo empieza en una pausa de 2 segundos o más, medida con los tiempos de las palabras a cada lado, y un párrafo que pasa de unos 600 caracteres termina en el siguiente final de frase. No hay etiquetas de hablante, así que un salto de párrafo indica una pausa o un tramo largo de habla, nunca un cambio de voz.

La marca de tiempo de un párrafo es el momento en que empieza su primera palabra, escrita como [hh:mm:ss] y redondeada hacia abajo al segundo. Es aproximada: sirve para encontrar un pasaje en la grabación, no para subtítulos. Copiar el texto y Descargar TXT escriben los mismos párrafos, separados por una línea en blanco y con las marcas de tiempo si están visibles.

Por qué cambia el tiempo

El trabajo lo hace tu procesador, así que el mismo archivo tarda distinto en un portátil nuevo y en uno antiguo, y el modelo y la duración de la grabación también cuentan. Por eso la página no promete ninguna velocidad. En cuanto el motor informa de su primer avance, la página mide cuántos segundos de trabajo cuesta cada segundo de sonido en tu dispositivo, lo suaviza entre ventanas para que un momento lento no lo desvíe y muestra el tiempo que falta.

Qué necesita tu dispositivo

  • Un navegador actual con WebAssembly. Chrome, Edge, Firefox y Safari lo tienen; nuestra prueba automática se ejecuta en Chromium.
  • Memoria libre suficiente para el modelo y una ventana de sonido. El modelo grande necesita más; publicaremos cifras medidas cuando las tengamos.
  • Conexión para el primer archivo. El modelo se guarda en el almacenamiento del navegador cuando hay espacio para él, así que las visitas siguientes no lo descargan.

Los componentes de código abierto del motor, los modelos y el lector multimedia aparecen con sus licencias en la página de créditos.

Preguntas sobre el motor

¿Es el mismo Whisper que publicó OpenAI?

Es el mismo modelo: OpenAI publicó el código y los pesos de Whisper con licencia MIT. Esta página usa esos pesos en el formato de archivo del proyecto de código abierto whisper.cpp, cuantizados (guardados con menos bits por peso) para que la descarga sea menor. El motor es whisper.cpp compilado a WebAssembly, no el código Python de OpenAI, y ninguna solicitud va a OpenAI.

¿Usa mi tarjeta gráfica?

Lo intenta. Si tu navegador ofrece WebGPU con las funciones que necesita el motor, la página arranca primero la versión WebGPU y, si falla, pasa sola a las versiones para CPU. Nuestras máquinas de prueba no tienen tarjeta gráfica, así que de la versión WebGPU solo hemos comprobado que cede el paso sin problemas. La línea sobre la transcripción dice qué versión hizo el trabajo.

¿Por qué se volvió a descargar el modelo?

Tu navegador guarda el modelo en su Cache Storage para este sitio hasta que borras los datos del sitio, o hasta que el propio navegador lo borra para liberar espacio. Después, el siguiente archivo lo vuelve a descargar. Qué guarda tu navegador y cómo borrarlo lo explica con detalle.

¿Qué pasa al pulsar Cancelar?

La página detiene el motor al momento cerrando el worker en el que se ejecuta y descarta los párrafos hechos hasta entonces. Tu siguiente archivo arranca un motor nuevo y toma el modelo del almacenamiento del navegador, así que el modelo no se vuelve a descargar.

Fuentes

Pruébalo con una grabación

La transcripción se hace en tu navegador. Tu archivo nunca sale de tu dispositivo.

Abrir la herramienta de transcripción