← Todas las recetasReceta · 11 de septiembre de 2025

Transcribe audio en local con Whisper

Convierte MP3, M4A o WAV en texto con marcas de tiempo y puntuación inicial, manteniendo el audio en tu máquina si tu entorno está bien configurado.

Portada de la receta: Transcribe audio en local con Whisper
Dificultadfácil
Tiempo15 min
IngredientesWhisper · Python

Whisper es un modelo abierto de transcripción que puede ejecutarse en local. Esta receta usa faster-whisper; el resultado no es infalible: revisa nombres propios, cifras, idiomas mezclados y cualquier texto sensible antes de compartirlo.

Ingredientes

  • Python 3.10+
  • El audio que quieras transcribir (MP3, M4A, WAV…)
  • Opcional: GPU compatible (puede acelerar el proceso, pero el factor real depende del modelo, la precisión, el audio y el resto del sistema)

Pasos

  1. Instala (recomendamos la versión rápida faster-whisper):

    pip install faster-whisper
  2. Transcribe con este mini-script:

    from faster_whisper import WhisperModel
    
    model = WhisperModel("medium", device="cpu", compute_type="int8")
    segments, info = model.transcribe("mi-reunion.mp3", language="es")
    
    print(f"Idioma detectado: {info.language} ({info.language_probability:.2f})")
    with open("mi-reunion.txt", "w", encoding="utf-8") as f:
        for seg in segments:
            linea = f"[{int(seg.start//60)}:{int(seg.start%60):02d}] {seg.text}"
            print(linea)
            f.write(linea + "\n")
  3. Elige bien el tamaño del modelo:

    Modelo VRAM/RAM Calidad en español
    tiny ~1GB Meh
    base ~1GB Aceptable
    small ~2GB Buena
    medium ~5GB Muy buena ✓
    large-v3 ~10GB Excelente

    Son órdenes de magnitud orientativos: cambian con la implementación, la precisión y el dispositivo. Deja margen para el sistema y mide con el flujo que vayas a usar.

  4. Con GPU (si tienes): cambia a device="cuda", compute_type="float16" y mide el tiempo con tu propio audio. En CPU, device="cpu", compute_type="int8" suele ser un punto de partida razonable.

Resultado esperado

Obtendrás un .txt con timestamps por frase. El tiempo depende del tamaño del modelo, la duración del audio y tu hardware; mide una muestra antes de diseñar un flujo por lotes.

Trucos

  • language="es" evita la detección automática (más rápido y menos errores).
  • word_timestamps=True te da el tiempo por palabra (para subtítulos).
  • Audios muy largos: córtalos con ffmpeg en trozos de 10 min si se atasca.
  • Para actas puedes encadenarlo con un LLM local, pero revisa el resumen contra el audio y elimina los temporales cuando ya no sean necesarios. Si grabas conversaciones de varias personas, mira de una grabación a transcripción y notas.