Transcribir Audio a Texto Automáticamente: Herramientas

¿Cómo Transcribir Audio a Texto Automáticamente? Guía y Herramientas

Transcribir Audio a Texto Automáticamente: Herramientas

Whisper de OpenAI te permite transcribir audio a texto directamente en tu máquina, sin APIs de pago ni datos que salen de casa. Aquí van las opciones reales y cómo elegir la que encaja con tu hardware.

Por Javier · Actualizado: 2026-05-24

Transcribir audio a texto automáticamente consiste en convertir voz grabada en texto escrito usando software de reconocimiento de voz. Whisper, el modelo de OpenAI entrenado con 680.000 horas de audio en 99 idiomas, permite hacerlo en local y sin coste por minuto, aunque el rendimiento depende del hardware disponible y siempre requiere revisión manual del resultado.

Ya tienes el hardware; solo falta configurarlo

Si llevas tiempo con un servidor en casa, una GPU que usas a ratos o simplemente una máquina Linux que aguanta más carga de la que le mandas, probablemente ya has pensado en sacarle más partido. Transcribir audio es uno de esos casos de uso que parece complicado hasta que lo montas: necesitas los pesos del modelo, un par de dependencias y paciencia la primera vez.

Quizás ya probaste algún servicio online y te frenó el precio por minuto, el límite de subida o, directamente, la idea de mandar grabaciones personales o de trabajo a un servidor que no controlas. Eso tiene solución, y no pasa por pagar una suscripción ni por aprender a programar desde cero.

En este post te explico cómo montar una pipeline de transcripción local con Whisper —el modelo de OpenAI publicado como código abierto— usando faster-whisper si tienes GPU o whisper.cpp si prefieres correrlo en CPU sin Python. No es magia ni es instantáneo, pero funciona, los datos se quedan en tu máquina y no hay factura al final del mes.

Por qué importa

Tus audios, en local

Whisper corre en tu máquina: ningún audio sale de tu red ni pasa por servidores de terceros.

Sin pagar por minuto

Una vez instalado, transcribes horas de audio sin suscripción ni tarifa variable.

680.000 horas de entrenamiento

El modelo fue entrenado con 680.000 horas de audio multilingüe; el español está entre los idiomas con mejor cobertura.

SRT, VTT, TXT, JSON

La salida se exporta en los cuatro formatos más usados: subtítulos, texto plano o datos estructurados.

Whisper: código abierto, multilingüe y sin cuota mensual

En septiembre de 2022, OpenAI publicó Whisper como código abierto. El modelo fue entrenado con 680.000 horas de audio multilingual supervisado —dato del paper original— y cubre 99 idiomas, con el español entre los mejor representados por volumen de datos de entrenamiento.

La idea detrás de montarlo en local es simple: el audio no sale de tu máquina, no hay límites de minutos y no recibes una factura a final de mes. El precio real lo pagas en tiempo de inferencia y en hardware suficiente para correr el modelo que elijas.

Dicho esto, Whisper no es magia. Los nombres propios, los acentos regionales y la jerga técnica aparecen con errores que hay que corregir a mano. Cuanto más grande el modelo, menos errores; cuanto más grande el modelo, más VRAM necesitas y más tarda en CPU.

Tres variantes para tres situaciones distintas

El proyecto original de OpenAI tiene varias reimplementaciones que mejoran la velocidad o eliminan dependencias. Conviene conocerlas antes de instalar nada.

Whisper original (PyTorch)

Es el repositorio oficial de OpenAI. Funciona, pero consume VRAM sin cuantización y es el más lento de los tres en CPU. Útil si ya tienes PyTorch montado y quieres la referencia exacta sin capas intermedias.

faster-whisper

Reimplementación sobre CTranslate2 que aplica cuantización INT8 por defecto. Reduce el uso de VRAM aproximadamente a la mitad respecto al modelo original y aumenta la velocidad de inferencia de forma notable en GPU. Es la opción recomendable para la mayoría de setups con tarjeta NVIDIA.

whisper.cpp

Port en C++ sin dependencia de Python ni GPU obligatoria. Corre directamente en CPU con rendimiento aceptable en modelos pequeños y medios. En hardware de escritorio moderno, el modelo medium ronda 1x la velocidad real —un audio de 10 minutos tarda unos 10 minutos en procesar—. Para modelos grandes en CPU, el tiempo escala rápido: un archivo de una hora puede tardar varias horas. Funciona, pero hay que tenerlo en cuenta antes de lanzar un batch grande.

Elegir el modelo sin quedarse sin VRAM

Whisper ofrece cinco tamaños: tiny, base, small, medium y large (con variantes v1, v2 y v3 para el grande). La tabla de referencia es esta:

  • tiny / base: Menos de 150 MB. Útil para pruebas rápidas o hardware muy limitado. La precisión se nota, especialmente en español.
  • small: ~460 MB. Un buen punto de partida para uso real en CPU o GPU con poca VRAM.
  • medium: ~1,5 GB en disco. Resultado decente en la mayoría de casos; corre en GPUs con 4-6 GB de VRAM.
  • large-v3: ~1,5 GB en disco, pero requiere entre 6 y 8 GB de VRAM para inferencia en GPU sin errores de memoria. Es el más preciso y también el más exigente.

Si tu tarjeta tiene 4 GB de VRAM o menos, quédate en small o medium. El modelo large-v3 en una GPU de 4 GB simplemente falla o recurre a memoria del sistema, lo que lo vuelve mucho más lento de lo esperable.

En mi caso uso large-v3 con faster-whisper en una RTX 3060 de 12 GB. Un podcast de 45 minutos tarda entre 3 y 5 minutos en procesar. El resultado hay que repasarlo igualmente, sobre todo en nombres propios y siglas técnicas.

Poner faster-whisper en marcha

Necesitas Python 3.9 o superior y CUDA instalado si vas a usar GPU NVIDIA. ROCm de AMD tiene soporte más limitado; funciona en algunas tarjetas pero la compatibilidad varía según versión y modelo de GPU.

  1. Crea un entorno virtual: python -m venv venv && source venv/bin/activate
  2. Instala faster-whisper: pip install faster-whisper
  3. El modelo se descarga y almacena en caché automáticamente la primera vez que lo ejecutes.

Un script mínimo en Python para transcribir un archivo:

from faster_whisper import WhisperModel

model = WhisperModel("large-v3", device="cuda", compute_type="int8")
segments, info = model.transcribe("audio.mp3", language="es")

for segment in segments:
    print(f"[{segment.start:.1f}s] {segment.text}")

El parámetro compute_type="int8" activa la cuantización que reduce la VRAM consumida. Si tienes problemas de memoria, prueba también con device="cpu" y el modelo small; la velocidad baja pero funciona sin GPU.

Para exportar a SRT, faster-whisper no incluye un formateador nativo, pero los timestamps de cada segmento tienen todo lo necesario para construirlo con unas pocas líneas de Python o usando librerías auxiliares como faster-whisper-subtitles.

Si el script falla con un error de CUDA out of memory, la primera prueba es bajar un tamaño de modelo. La segunda, añadir num_workers=1 al constructor para reducir la memoria paralela que reserva CTranslate2.

whisper.cpp para quien no quiere Python ni GPU

Si prefieres no montar un entorno virtual ni depender de CUDA, whisper.cpp compila un binario que corre en cualquier máquina Linux, macOS o Windows con herramientas de compilación estándar.

  1. Clona el repositorio: git clone https://github.com/ggerganov/whisper.cpp
  2. Compila: cd whisper.cpp && make
  3. Descarga el modelo: bash models/download-ggml-model.sh medium
  4. Transcribe: ./main -m models/ggml-medium.bin -f audio.wav -l es

El audio tiene que estar en WAV a 16 kHz mono. Si tienes un MP3 o un vídeo, convierte con ffmpeg antes:

ffmpeg -i entrada.mp4 -ar 16000 -ac 1 -c:a pcm_s16le salida.wav

La salida por defecto es texto plano en consola, pero whisper.cpp soporta --output-srt, --output-vtt y --output-json para generar los archivos directamente junto al audio.

Uso whisper.cpp en un mini PC con Intel N100 para transcribir notas de voz cortas. El modelo small tarda más o menos lo que dura el audio. Para cosas de 5-10 minutos está bien; para un episodio de podcast entero prefiero faster-whisper en el escritorio con GPU.

Interfaz gráfica si la terminal no es lo tuyo

No todo el mundo quiere escribir comandos. Hay opciones con GUI que funcionan sobre whisper.cpp o faster-whisper por debajo.

Buzz

Aplicación de escritorio multiplataforma (Linux, macOS, Windows) con interfaz sencilla. Permite seleccionar el modelo, el idioma y el formato de salida desde una ventana. Internamente usa faster-whisper. El repositorio está en GitHub y tiene paquetes precompilados para las tres plataformas.

Interfaces web locales

Hay varios proyectos que montan una interfaz web sobre whisper.cpp o faster-whisper mediante Flask o Gradio. Se lanzan en local y se usan desde el navegador. Útil si quieres compartir la herramienta en la red doméstica con otros dispositivos sin instalar nada en ellos.

Ninguna de estas opciones es tan configurable como la línea de comandos, pero para uso ocasional hacen el trabajo sin complicaciones.

Buzz es la opción más fácil para empezar si no quieres tocar la terminal. Eso sí, tienes menos control sobre parámetros de inferencia que desde Python o la línea de comandos.

Qué hacer con la salida: formatos y revisión

Whisper exporta en cuatro formatos principales:

  • TXT: Texto plano sin timestamps. Útil para transcripciones de notas o dictados donde no necesitas sincronización.
  • SRT: Subtítulos con timestamps numerados. El formato estándar para vídeo.
  • VTT: Similar a SRT pero en formato WebVTT, compatible con reproductores HTML5 nativos.
  • JSON: Salida completa con probabilidades por token, útil si necesitas procesar el resultado de forma programática o detectar segmentos de baja confianza.

Independientemente del formato, el resultado necesita revisión. Whisper comete errores sistemáticos en nombres propios (personas, marcas, productos técnicos), términos en inglés dentro de texto en español, y números cuando el contexto es ambiguo. Los acentos regionales muy marcados también bajan la precisión, especialmente en modelos pequeños.

Para un podcast técnico de 30 minutos transcrito con large-v3, calcula entre 10 y 20 minutos de revisión manual si el resultado va a publicarse. No sale listo para publicar directo del modelo; sale un borrador muy bueno del que partir.

Lo que sí noto es que el tiempo total —transcripción más revisión— es considerablemente menor que transcribir desde cero. Y el audio no ha salido de casa en ningún momento del proceso.

Preguntas frecuentes

Q: ¿Cuánta VRAM necesito para usar Whisper en local?

A: Depende del modelo que elijas. El large-v3, el más preciso, necesita entre 6 y 8 GB de VRAM para correr sin errores de memoria. Si tienes una gráfica con 4 GB o menos, el modelo medium o small son opciones más realistas. faster-whisper con cuantización INT8 reduce ese consumo aproximadamente a la mitad.

Q: ¿Vale Whisper para transcribir audio en español?

A: El español está entre los idiomas mejor cubiertos en el entrenamiento de Whisper, que usó 680.000 horas de audio multilingual. Los resultados son buenos para habla estándar, pero aparecen errores en nombres propios, acentos regionales marcados y terminología técnica. Cuenta con revisar el texto antes de publicar.

Q: ¿Qué pasa si no tengo GPU, puedo usarlo igual?

A: Puedes usarlo con whisper.cpp, un port en C++ que corre en CPU sin necesidad de GPU ni Python. El problema es la velocidad: con el modelo medium en un PC de escritorio moderno vas aproximadamente a velocidad real, así que un audio de una hora puede tardarte una hora o más. Para modelos grandes sin GPU, espera varias horas.

Q: ¿Cuándo merece la pena faster-whisper frente al original?

A: Merece la pena si tienes GPU NVIDIA con CUDA y quieres sacarle el máximo rendimiento con el menor consumo de VRAM. faster-whisper reimplementa Whisper sobre CTranslate2 y recorta el uso de memoria aproximadamente a la mitad respecto al modelo original, manteniendo una precisión comparable. Si vas a correr en CPU, whisper.cpp suele ser la alternativa más práctica.

Q: ¿En qué formatos puedo exportar la transcripción?

A: Whisper soporta salida en SRT, VTT, TXT y JSON. SRT y VTT son los formatos de subtítulos más usados para vídeo, TXT te da el texto plano sin marcas de tiempo y JSON incluye metadatos de segmentos que puedes procesar con scripts propios. La mayoría de frontends como Buzz o whisper-ui exponen estas opciones directamente desde la interfaz.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *