31 puntos por GN⁺ 2025-08-14 | 1 comentarios | Compartir por WhatsApp
  • La versión 8.0 de FFmpeg agrega oficialmente soporte para el modelo de reconocimiento de voz Whisper
  • Whisper es un modelo de reconocimiento de voz de código abierto desarrollado por OpenAI, usado para convertir automáticamente voz en texto en varios idiomas
  • Con la incorporación de esta función, aumenta la posibilidad de automatizar directamente flujos de trabajo de conversión de voz a texto en tareas de procesamiento de video y audio
  • Para desarrolladores y el campo de la automatización de medios, se refuerzan considerablemente la utilidad y eficiencia de FFmpeg
  • Al integrar funciones modernas de reconocimiento de voz, se reduce la carga de depender de herramientas externas adicionales o de procesos de integración complejos

Resumen del soporte de Whisper en FFmpeg 8.0

  • La versión 8.0 de FFmpeg ofrece la capacidad de convertir automáticamente datos de voz en texto en varios idiomas al agregar soporte para el modelo de reconocimiento de voz Whisper
  • Whisper utiliza un algoritmo basado en aprendizaje profundo creado por OpenAI, lo que garantiza un rendimiento de conversión de voz a texto con alta precisión
  • Los usuarios actuales de FFmpeg obtienen la comodidad de poder generar subtítulos o extraer el contenido hablado de archivos de video y audio mediante la función integrada de soporte para Whisper, sin pasar por herramientas externas

Principales ventajas de la integración de Whisper

  • Gracias a la integración de Whisper, es posible implementar flujos de trabajo de reconocimiento de voz eficientes y altamente escalables dentro de pipelines de procesamiento y automatización de medios basados en FFmpeg
  • Al estar integrado el algoritmo de reconocimiento de voz, los desarrolladores tienen la ventaja de obtener resultados de transcripción de voz a texto con comandos simples sin la carga de realizar integraciones adicionales complejas ni escribir scripts por separado

Importancia industrial de la combinación FFmpeg y Whisper

  • En áreas como la gestión de grandes activos multimedia, la generación de subtítulos y el archivado de datos de video, la combinación FFmpeg + Whisper tiene la fortaleza de lograr al mismo tiempo eficiencia de costos y automatización
  • Antes era necesario integrar una herramienta de reconocimiento de voz de código abierto por separado con FFmpeg, pero ahora se espera simplificar el flujo de trabajo y mejorar la velocidad de procesamiento al hacerlo directamente dentro de FFmpeg

Detalles técnicos

  • Se agregó a FFmpeg un filtro de audio basado en la biblioteca Whisper.cpp para realizar reconocimiento automático de voz (ASR) directamente dentro de FFmpeg
  • Puede activarse con la opción --enable-whisper, y es obligatorio especificar la ruta del modelo (model)
  • Opciones principales: configuración de idioma (language), uso de GPU (use_gpu), tamaño de cola (queue), formato de salida (format: text/srt/json), modelo y umbral de VAD (detección de actividad de voz), entre otras
    • Si el valor de queue es pequeño, mejora la capacidad en tiempo real pero baja la precisión y aumenta la carga de CPU; si es grande, sube la precisión pero aumenta la latencia
    • Con la opción destination es posible guardar los resultados en un archivo de salida, una URL o metadatos, y también se admite el protocolo AVIO
  • Se incluyen escenarios de ejemplo como generación de subtítulos SRT, envío HTTP en formato JSON y transcripción en tiempo real desde micrófono (usando VAD)
    • Ejemplo de generación de archivo de subtítulos SRT
      ffmpeg -i input.mp4 -vn \  
      -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin:language=en:queue=3:destination=output.srt:format=srt" \  
      -f null -  
      

1 comentarios

 
GN⁺ 2025-08-14
Opiniones de Hacker News
  • Ya comprobé que Whisper es una herramienta realmente asombrosa; si le das el prompt adecuado, puedes tener una experiencia que te cambia la vida para bien.
    Quisiera recomendar Subtitle Edit (y también está bien apoyar económicamente a su desarrollador). Subtitle Edit es una buena interfaz para experimentar con Whisper. Si antes usaste Aegisub, Subtitle Edit bien podría llamarse Aegisub 2.0.
    HOWTO: arrastra un archivo de video o audio a la ventana de la derecha y luego ve a Video > Audio to text (Whisper). Yo normalmente obtuve el mejor rendimiento con Faster-Whisper-XXL. Si es posible, recomiendo usar large-v2 (large-v3 incluso tiene algunas regresiones). No es perfecto, pero se puede corregir bastante bien con funciones como Tools > Fix common errors de Subtitle Edit.
    Si tienes una tarjeta gráfica Nvidia reciente, necesitas ingresar --compute_type float32 para que funcione correctamente. Si da error, quizá necesites reinstalar la librería torch desde un índice específico, como en el siguiente comando:
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118  
    
    uv pip install --system torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118  
    
    Si logran resolver este tipo de error, sería útil que dejen en los comentarios qué problema era y cómo lo solucionaron; eso puede ayudar a otras personas también (y sirve para búsquedas web).
    Sitio oficial de Subtitle Edit
    Página para apoyar al desarrollador de Subtitle Edit
    Releases de la última versión de Subtitle Edit
    • Al instalar paquetes relacionados con torch en uv, se selecciona automáticamente la versión de tensor adecuada según el driver de cuda. Aun así, es mejor usarlo en un entorno virtual (venv) y no en el Python del sistema.
      Puedes habilitar la selección automática de backend con este comando:
      uv pip install torch torchvision torchaudio --torch-backend=auto
      Enlace con la guía detallada
      Los paquetes relacionados con torch se descargan desde el índice de torch, y el resto desde PyPI, así que no hay que preocuparse por conflictos.
    • Aegisub todavía sigue en desarrollo a través de forks. Es difícil compararlos porque ambos programas tienen enfoques distintos y pueden usarse de forma complementaria. Subtitle Edit es mucho más adecuado para transcripción real, mientras que Aegisub todavía tiene ventajas en tareas como tipografía.
    • Subtitle Edit es excelente, pero puede tener limitaciones de hardware (Python, GPU Nvidia, etc.). Si no tienes GPU o te resulta pesada la configuración de un servidor, una API simple y barata como lemonfox.ai también es una opción.
    • Me da curiosidad si podrías dar ejemplos concretos de cómo Whisper mejoró tanto tu vida.
    • El rendimiento de Whisper es muy bueno, así que me pregunto por qué los subtítulos automáticos de YouTube siguen siendo tan malos. Incluso el modelo más pequeño de Whisper parece mejor que la solución de Google; me pregunto si será por temas de licencia o por la dificultad de desplegarlo a gran escala.
  • Ojalá que, si la transcripción local se usa más ampliamente, los creadores de video dejen de incrustar subtítulos brillantes y molestos directamente en el video.
    Incluso en videos técnicos producidos de forma profesional he visto que meten subtítulos innecesarios que no se pueden quitar. No son videos de gatitos; ya es demasiado.
    Con transcripción local se puede hacer traducción automática y también se evita la experiencia incómoda de tener que mostrar subtítulos encima de otros subtítulos ya incrustados.
    • Se señala que poner subtítulos quemados en el video busca más aumentar el "engagement" que mejorar la experiencia del usuario.
    • Si hubiera que compararlo, creo que los subtítulos temáticos que hacían antes los fans para openings de anime eran mucho más geniales que los subtítulos quemados de los videos actuales.
    • Al final, el algoritmo influye muchísimo. Aunque hubiera subtítulos en tiempo real 100% precisos en todos los dispositivos, si el video rinde mejor con subtítulos quemados, van a seguir poniéndolos.
    • Los subtítulos quemados tienen el problema de que no se puede cambiar el idioma.
    • Parte de este fenómeno también se debe a la función de "autoplay sin sonido" de YouTube. Los subtítulos incrustados ayudan a que la gente se enganche con el video.
  • Whisper es un modelo de transcripción de audio, pero me pregunto si tiene la capacidad de corregir más tarde partes anteriores mientras sigue escuchando.
    Por ejemplo, en casos como “I scream” y “Ice cream”, donde la pronunciación es parecida pero el significado es totalmente distinto, quisiera saber si puede cambiar el texto anterior basándose en información que aparece después en el contexto largo.
    Creo que esta forma de trabajar es una condición necesaria para lograr tanto tiempo real como precisión. De hecho, vi que en la transcripción de Android el texto se va ajustando sobre la marcha mientras uno habla.
    • Recomiendo el título de mi paper favorito:
      "How to wreck a nice beach you sing calm incense"
      Enlace al paper
    • Me imagino que los subtituladores humanos o guionistas siempre deben pensar cuidadosamente cómo textualizar frases ambiguas, juegos de palabras o diálogos donde el malentendido es importante para la historia. Expresar lo que se oye y escribir el original exacto de lo que se dijo no es lo mismo.
      Me pregunto si las personas con discapacidad auditiva congénita estudian aparte cómo entender o crear juegos de palabras sonoros (juegos lingüísticos, ritmo, etc.).
      Sería como trabajar con matemáticas abstractas sin una sensación empírica de referencia, aunque los matemáticos también afirman que, desde su abstracción, crean fenómenos experienciales parecidos a la música; eso también me parece interesante.
    • Whisper funciona en bloques de 30 segundos. Gracias a esta arquitectura de red, puede revisar el contexto anterior y posterior para cambiar el resultado. Pero por eso mismo también produce muchas alucinaciones.
    • Me parece que en “I scream” la pronunciación de la “I” se enfatiza más que en “ice cream”. Aun así, coincido en que el contexto es indispensable.
    • Si te interesa este tema, recomiendo los capítulos a partir de la sección 16.3 del libro de Stanford “Speech and Language Processing”.
      Enlace al PDF
      No conozco bien la arquitectura de Whisper, pero en general los modelos ASR hacen que el decodificador también tenga en cuenta sonidos posteriores al bloque actual para entender el contexto. Por eso usan un modelo de lenguaje para ajustar la salida hacia formas gramaticalmente naturales como “I like ice cream”.
  • Relacionado con esto, recomiendo el blog escrito por el autor de este patch:
    Run Whisper audio transcriptions with one FFmpeg command
  • Ojalá este sea el inicio de la incorporación de más filtros basados en ML en FFmpeg.
    Antes se añadió un filtro sr (super resolution), pero ya tiene tiempo y hasta conseguir los pesos es complicado; además se agregó soporte para varias librerías de ML (como libtorch), pero tampoco es fácil empezar.
    Preferiría que hubiera modelos listos para usar agrupados en una carpeta models, para poder aplicar rápidamente distintos modelos de upscale, reducción de ruido, upscale temporal y más.
    Hoy en día, la mayor parte de la investigación en filtros de audio y video se basa en ML, y probablemente los nuevos códecs también lo serán.
  • ¿El Whisper del que hablan aquí es el modelo de IA de reconocimiento de voz creado por OpenAI?
    Referencia en Wikipedia sobre Whisper
    • Sí, y también existe una implementación en C++: GitHub de whisper.cpp
    • Sí. Cita directa de la documentación:

      It runs automatic speech recognition using the OpenAI's Whisper model.

    • No del todo; más bien es una 'familia de modelos de transcripción de audio' (con varias versiones y grupos de modelos).
      Lista completa de modelos Whisper
  • No sé absolutamente nada sobre Whisper, pero me pregunto si también sirve para traducción automática (en especial japonés → inglés).
    Tengo una película japonesa muy antigua, pero no existe una traducción al inglés, así que no la he podido ver.
    Antes busqué un traductor en Fiverr, y según la tarifa oficial costaba miles de dólares; negociando bajó a cientos, pero al final dejó de responder.
    • Whisper sí puede transcribir y traducir japonés a inglés.
      La calidad depende del dialecto y de la calidad del audio, y el modelo "large-v3" da los mejores resultados.
      Puedes usar la integración con ffmpeg con un comando como este:
      ffmpeg -i movie.mp4 -af whisper=model=large-v3:task=translate output.srt
    • En mi experiencia, en general fue bastante usable.
      Incluso el modelo “English” en realidad soporta varios idiomas y puede traducir directamente al inglés.
      También puedes transcribir primero en japonés y luego usar otro traductor para pasarlo al inglés. En diálogos semánticamente complejos, ese método a veces da mejores resultados.
      Ejemplo:
      traducción directa:
      faster-whisper-xxl.exe --language English --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard   
      
      japonés → inglés:
      faster-whisper-xxl.exe --language Japanese --task translate --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard   
      
      Enlace de referencia de whisper-standalone-win
    • En mi experiencia, la transcripción fue un fracaso total.
      A menudo inventaba contenido que no estaba en el audio, y si en el video se mezclaban varios idiomas, se confundía por completo.
      No entiende nada de contexto, así que aparecen con frecuencia errores como los que se ven en traducciones automáticas tipo YouTube.
    • También se puede subtitular y traducir videos en japonés con Whisper (solo al inglés).
      El mejor rendimiento se logra usando el modelo más grande, aunque la velocidad depende del hardware.
      Otra opción es usar un flujo como VideoToTextAI, que extrae subtítulos, los traduce a más de 100 idiomas y los guarda como archivo SRT.
    • Whisper tiene un problema serio de alucinaciones.
      Muchas veces agrega al azar frases que no existen.
      Puede servir para clasificación de clases, pero se queda corto para transcripción de subtítulos.
  • Me pregunto si la próxima speech API de Apple también podría añadirse a ffmpeg.
    Estaría bien que funcionara directamente en Mac sin tener que buscar modelos por cuenta propia.
    Documentación de SpeechTranscriber
    Documentación de SpeechAnalyzer
    Reseña práctica y comparación con Whisper
  • El único problema de este PR/patch es que solo ofrece el wrapper de avfilter para la librería whisper.cpp, y el usuario tiene que encargarse por su cuenta de gestionar las dependencias.
    O sea:
    1. clonar el git de whisper.cpp
    2. instalar las dependencias de esa librería
    3. compilar con éxito
    4. descargar el modelo real
    Solo después de eso se puede usar el filtro -af "whisper=model...
    Si no haces ese trabajo previo, falla, y para principiantes eso va a ser muy frustrante.
    Creo que sería más eficiente hacer el avfilter de Whisper de forma nativa y dejar solo la descarga del modelo; así tendría mucha más adopción entre usuarios reales.
    • Desde la perspectiva del usuario final sería mejor, pero del lado de FFmpeg es difícil por mantenimiento.
      Hay que considerar la velocidad a la que cambia el proyecto whisper-cpp.
      Igual que con otros filtros (como vmaf), cuando se requieren compilaciones de dependencias y descarga de modelos, probablemente pronto aparecerán binarios precompilados orientados a principiantes (además de que whisper-cpp tiene licencia MIT).
  • Estoy usando FFmpeg y Whisper para grabar y transcribir en tiempo real el audio del scanner policial de nuestra ciudad, y actualizar un sitio web de inmediato con ese contenido.
    Hay errores y alucinaciones, pero funciona suficientemente bien para lo que quiero.
    • Si el sitio web es público, me encantaría verlo.
    • Yo quería probar esta función en las reuniones del consejo del condado de mi zona.
      En una situación así, el reconocimiento de hablantes sería especialmente importante.