Faster-Whisper: transcribir rápido, incluso sin GPU
Faster-Whisper (SYSTRAN/faster-whisper, licencia MIT) es una reimplementación de Whisper basada en el motor CTranslate2. El proyecto afirma que es hasta 4 veces más rápido que openai/whisper, con la misma precisión y un menor consumo de memoria. En su propio banco de pruebas en CPU (Intel i7-12700K, modelo small), transcribe 13 minutos de audio en 1 minuto y 42 segundos en int8, frente a 6 minutos y 58 segundos con openai/whisper: casi 4 veces más rápido en CPU, sin tarjeta gráfica.
Faster-Whisper es una reimplementación de Whisper que transcribe mucho más rápido y consume considerablemente menos memoria, con una calidad de texto equivalente. No es un modelo nuevo: son los mismos pesos, ejecutados por CTranslate2, un motor de inferencia diferente publicado por SYSTRAN bajo licencia MIT. Es la implementación que conviene elegir por defecto para transcribir en local, y su propio banco de pruebas cuantifica con precisión qué significa en la práctica «hacer que por fin sea razonable transcribir en un procesador».
#Qué es y qué no es
Whisper designa tanto a una familia de modelos como a la implementación de referencia de OpenAI que los ejecuta. Faster-Whisper mantiene los primeros y reemplaza la segunda por CTranslate2, un motor de inferencia optimizado para modelos de tipo transformer, desarrollado inicialmente para traducción automática en OpenNMT. El texto producido es el mismo con calidad equivalente; lo que cambia es el tiempo y la memoria necesarios para obtenerlo, no el contenido del resultado final.
Consecuencia práctica: todo lo que ya sabes sobre la elección del tamaño del modelo Whisper sigue siendo perfectamente válido, y la mayoría de las herramientas de transcripción local que encuentras a diario ya lo utilizan internamente, a menudo sin indicarlo ni documentarlo necesariamente. Otro detalle útil: a diferencia de openai-whisper, FFmpeg no necesita instalarse por separado en el sistema; el audio se descodifica mediante la biblioteca PyAV, que incluye sus propias bibliotecas FFmpeg.
#¿De dónde viene la mejora de rendimiento?
Tu ChatGPT privado y gratuito en tu máquina en 1 hora — LM Studio, Ollama, Open WebUI, tus documentos, sin nube.
- Espacio en línea de por vida
- PDF + archivos
- Actualizaciones de por vida
- Motor de inferencia especializado
- CTranslate2, escrito para ejecutar transformadores de forma eficiente, en lugar de un entorno generalista como PyTorch usado directamente.
- La cuantización
- Ejecutar el modelo en 8 bits reduce el consumo de memoria y acelera la ejecución, con una pérdida generalmente imperceptible en la calidad de la transcripción.
- Procesamiento por lotes
- Los archivos largos pueden dividirse y procesarse en paralelo (batch_size) en lugar de estrictamente uno tras otro, a costa de un mayor consumo de memoria.
- Detección de actividad vocal
- Saltar los silencios evita que el modelo trabaje con contenido vacío — en grabaciones de reuniones, eso no es nada despreciable.
#La mejora, cuantificada por el desarrollador
SYSTRAN publica sus propias pruebas de rendimiento en lugar de dejar que el lector haga conjeturas: la transcripción de 13 minutos de audio, comparada entre varias implementaciones en el mismo hardware, con los tiempos y la memoria consumida por cada una. Dos conjuntos de mediciones son especialmente relevantes para el uso sin tarjeta gráfica dedicada, que corresponde a la mayoría de los equipos de trabajo en las empresas.
| Implementación | Precisión | Tiempo | Memoria RAM |
|---|---|---|---|
| openai/whisper | fp32 | 6 minutos 58 segundos | 2 335 MB |
| faster-whisper | fp32 | 2 min 37 s | 2 257 MB |
| faster-whisper | int8 | 1 min 42 s | 1 477 MB |
| faster-whisper (lotes de 8) | int8 | 51 s | 3 608 MB |
En CPU, la versión int8 de Faster-Whisper transcribe, por tanto, 4,1 veces más rápido que openai/whisper y utiliza menos memoria (1 477 MB frente a 2 335 MB), un resultado coherente con el anuncio general del proyecto: «hasta 4 veces más rápido… utilizando menos memoria». En GPU, la misma prueba con el modelo large-v2 (RTX 3070 Ti) arroja 1 min 03 en fp16 y 59 segundos en int8, frente a 2 min 23 para openai/whisper: la cuantización aporta aquí una mejora de velocidad más modesta que en CPU, pero la memoria de vídeo utilizada baja de 4 708 MB a 2 926 MB.
El repositorio publica también una comparativa con la variante distil-whisper-large-v3, un modelo aligerado mediante destilación en lugar de cuantización. En GPU, con la biblioteca transformers en fp16 y un procesamiento por lotes de 16, este modelo tarda 46 minutos y 12 segundos en transcribir el corpus de prueba con una tasa de error por palabra de 14,801; la misma configuración con Faster-Whisper tarda 25 minutos y 50 segundos con una tasa de error por palabra de 13,527: más rápido Y más preciso en esta prueba concreta, lo que demuestra que la mejora de CTranslate2 no se limita a la cuantización: el propio motor de ejecución cuenta, independientemente del modelo exacto que ejecute.
La prueba de rendimiento también compara Faster-Whisper con whisper.cpp, otra reimplementación muy utilizada, especialmente en Mac y en hardware embebido. Con el modelo large-v2 en fp16, whisper.cpp con Flash Attention tarda 1 minuto y 05 segundos y utiliza 4 127 MB de memoria de vídeo, prácticamente a la par que Faster-Whisper (1 minuto y 03 segundos, 4 525 MB): un recordatorio útil de que Faster-Whisper no es la única opción rápida, sino la que esta guía documenta con más detalle porque su ecosistema de Python se integra más fácilmente en una cadena RAG o en la elaboración automatizada de un informe.
#Instalarlo y transcribir un primer archivo
La instalación se realiza con una sola línea, sin dependencias del sistema que gestionar para la decodificación de audio gracias a PyAV, integrada directamente en el paquete Python. El código mínimo incluye tres parámetros que marcan toda la diferencia frente a un uso ingenuo del modelo: la elección explícita del dispositivo (cpu o cuda), el tipo de cálculo (compute_type, donde int8 es el punto de partida razonable en CPU) y la activación del filtro de detección de actividad de voz.
Tres líneas de código bastan para aplicar los dos ajustes que explican la mayor parte de la diferencia medida en el banco de pruebas oficial: compute_type="int8" para la cuantización y vad_filter=True para la detección de actividad vocal. El parámetro language="fr", por su parte, desactiva la detección automática de idioma, que se equivoca con mayor frecuencia en los primeros segundos de una grabación.
#¿Qué modelo, qué precisión?
| Tamaño | Memoria indicativa en 8 bits | Para qué |
|---|---|---|
| Pequeño (small) | Aproximadamente 1,5 GB en int8 en CPU, medido en el banco de pruebas oficial | Anotaciones rápidas, audio claro, una sola lengua |
| Medio | Entre 1 y 2 GB aproximadamente | El equilibrio habitual para grabaciones largas |
| Grande (large-v2) | Aproximadamente 2,9 GB en int8 en GPU, medido en el banco de pruebas oficial | Francés cuidado, vocabulario especializado, audio difícil |
Para el francés, la diferencia entre un modelo intermedio y uno grande se aprecia sobre todo en los nombres propios, las siglas y los pasajes en los que varias personas hablan al mismo tiempo. Si la transcripción se pasa después a un modelo de lenguaje que redacta un informe estructurado, un error aislado en una palabra poco frecuente importa menos de lo que se suele creer intuitivamente; si una persona debe leerla tal cual, el modelo grande se justifica, a costa del tiempo y la memoria indicados más arriba en esta guía.
#Los ajustes que realmente importan
- 01Forzar el idiomaLa detección automática se equivoca en los primeros segundos, especialmente si la grabación comienza con un silencio o un saludo breve. Indicar el idioma elimina toda una categoría de errores.
- 02Activar la detección de actividad vocalEvita transcribir los silencios y reduce las alucinaciones al final del archivo, cuando el modelo inventa texto a partir del silencio.
- 03Elegir la cuantización int8Es el ajuste que explica la mayor parte de la diferencia medida en el banco de pruebas oficial: en CPU, reduce el tiempo de 2 min 37 s a 1 min 42 s en el modelo small, con un menor consumo de memoria.
- 04Activar el procesamiento por lotes si la memoria lo permitebatch_size=8 vuelve a reducir el tiempo a la mitad en el banco de pruebas oficial, a costa de un mayor consumo de memoria: debe reservarse para máquinas con memoria de sobra.
#Tres usos prácticos en una máquina común
Las cifras del banco de pruebas oficial adquieren todo su sentido al relacionarlas con casos reales, en un puesto de trabajo sin tarjeta gráfica dedicada: la situación más habitual en las empresas.
- Resumen de reunión
- Transcribir una reunión de una hora en int8 con un procesador de escritorio lleva unos siete u ocho minutos, si se extrapolan las cifras medidas para 13 minutos; un tiempo que permite iniciar la transcripción durante la pausa para el café que sigue a la propia reunión.
- Archivado de podcasts o webinarios
- Un procesamiento por lotes iniciado por la noche sobre un conjunto de archivos largos aprovecha directamente la mejora medida con batch_size=8, sin necesidad de supervisar la ejecución hasta la mañana.
- Subtitulado de un vídeo a posteriori
- Faster-Whisper produce el texto sin procesar del vídeo; una alineación palabra por palabra con WhisperX añade después las marcas de tiempo precisas necesarias para un archivo de subtítulos realmente utilizable en el montaje.
En los tres casos, el punto en común es la ausencia de tarjeta gráfica en la ecuación: las mediciones de CPU del banco de pruebas oficial muestran que un procesador de escritorio reciente es más que suficiente para un uso habitual, lo que desplaza la verdadera cuestión hacia el tamaño del modelo y la cuantización, en lugar de hacia la compra de hardware adicional para una simple necesidad de transcripción.
#Faster-Whisper o otra opción
| Necesidad | Opciones |
|---|---|
| Texto, rápido, en local, incluso sin GPU | Faster-Whisper |
| Marcas de tiempo palabra por palabra para subtitular | Una cadena con alineación forzada (WhisperX) |
| Saber quién habló | Una cadena con separación de hablantes |
| Transcripción en directo, flujo continuo | Un motor orientado al procesamiento en flujo continuo, como Vosk |
| Una máquina muy modesta, sin GPU | Faster-Whisper en int8, modelo small o medium |
- WhisperX: marcas de tiempo por palabra y hablantes
- Whisper en local: las bases
- Del archivo de audio al informe
- Vosk: transcribir en flujo continuo en lugar de hacerlo a partir de un archivo
- Fuente: repositorio oficial de Faster-Whisper y su banco de pruebas
- Fuente: motor de inferencia CTranslate2
- Fuente: repositorio oficial openai/whisper (referencia de la comparativa)
#FAQ
¿Faster-Whisper es menos preciso que Whisper?+
¿Se necesita una GPU?+
¿Por qué el modelo inventa frases en los silencios?+
¿Qué tamaño de modelo para el francés?+
¿Puede trabajar en tiempo real?+
¿Qué ganancia real aporta la cuantización int8?+
¿Faster-Whisper es siempre más rápido que las otras implementaciones?+
¿Un comentario, un error, una precisión? Avísanos, eso mejora la guía para todos.