Skip to content

Automatiza la Transcripción de Videos MP4 Usando `transcript‐videos`

Jonathan Delgado edited this page Apr 11, 2025 · 3 revisions

¿Necesitas transcribir grandes volúmenes de videos de forma automática y local? Esta guía te presenta una solución práctica y sencilla basada en el proyecto transcript-videos, que te permite convertir archivos .mp4 en texto utilizando el poder de Whisper, una herramienta de inteligencia artificial especializada en reconocimiento de voz.

⚠️ Esta no es una solución definitiva o universal, pero sí es una excelente alternativa si buscas autonomía, precisión multilingüe y soporte para videos largos o con ruido de fondo.

Entre sus principales ventajas se destacan:

  • Soporte para múltiples idiomas dentro de un mismo video.
  • Buen rendimiento en ambientes con ruido gracias a Whisper.
  • Alta precisión comparada con herramientas tradicionales de dictado.
  • Ideal para videos extensos, sin depender de servicios externos.

Sin embargo, también tiene sus limitaciones, como la dependencia de varias herramientas, la falta de identificación de hablantes, o el hecho de que solo procesa archivos .mp4.

En esta guía aprenderás cómo poner en marcha esta solución en tu entorno local, cómo automatizar la transcripción de múltiples videos y qué debes tener en cuenta al momento de implementarla.

🧰 Requisitos previos

Antes de comenzar, asegúrese de tener los siguientes elementos instalados en su entorno local:

git clone https://github.com/JonDotsoy/transcript-videos.git

📂 Estructura del entorno de trabajo

La siguiente estructura de carpetas será creada automáticamente por el script:

./audios/         # Contendrá los audios extraídos de los videos .mp4
./transcripts/    # Contendrá las transcripciones generadas
./reports/        # Reportes de ejecución por fecha y hora

🖥️ El Script Automatizado

A continuación se presenta un script bash que permite recorrer múltiples directorios con archivos .mp4, extraer el audio de cada uno, y generar sus respectivas transcripciones utilizando la herramienta transcript-videos.

#!/bin/sh

set -e

dirs=(
    "/ruta/a/videos1"
    "/ruta/a/videos2"
)

files=()
for dir in "${dirs[@]}"; do
    if [ -d "$dir" ]; then
        for file in "$dir"/*; do
            if [ -f "$file" ]; then
                files+=("$file")
            fi
        done
    fi
done

transcriptsFolder="./transcripts"
audiosFolder="./audios"
reports="./reports"
NOW=$(date +"%Y-%m-%d %T")
execution_report="${reports}/execution_report_${NOW%.*}.txt"

mkdir -p "$transcriptsFolder"
mkdir -p "$audiosFolder"
mkdir -p "$reports"

echo "Execution started at: $NOW" > "$execution_report"
echo "" >> "$execution_report"

for file in "${files[@]}"; do
    filename=$(basename "$file")
    MP4_FILE="${file}"
    AUDIO_FILE="${audiosFolder}/${filename%.*}.wav"
    TRANSCRIPT_FILE="${transcriptsFolder}/${filename%.*}.txt"

    if [ -f "$TRANSCRIPT_FILE" ]; then
        echo "Transcript already exists for $filename. Skipping..."
        continue
    fi

    echo "Processing file: $MP4_FILE"
    echo "Audio file: $AUDIO_FILE"
    echo "Transcript file: $TRANSCRIPT_FILE"

    sh -c "cd ./transcript &&  make transcript-mp4 MP4_FILE=\"${MP4_FILE}\" AUDIO_FILE=\"${AUDIO_FILE}\" TRANSCRIPT_FILE=\"${TRANSCRIPT_FILE}\""

    echo "Generate transcript for '$filename'" >> "$execution_report"
    echo "Audio file: $AUDIO_FILE" >> "$execution_report"
    echo "Transcript file: $TRANSCRIPT_FILE" >> "$execution_report"
    echo "" >> "$execution_report"
done

✅ Cómo usar el script

1. Define los directorios

Modifique la siguiente sección del script para incluir los directorios donde se encuentran sus archivos .mp4:

dirs=(
    "/ruta/a/videos1"
    "/ruta/a/videos2"
)

Puede añadir tantos directorios como desee.

2. Ejecuta el script

Coloque el script en la raíz del proyecto, asegúrese de tener permisos de ejecución y luego ejecútelo:

chmod +x transcribir.sh
./transcribir.sh

El script recorrerá cada directorio, detectará los archivos .mp4, y para cada uno:

  1. Extraerá el audio en formato .wav usando ffmpeg.
  2. Generará una transcripción en texto plano mediante make transcript-mp4.
  3. Guardará un informe detallado de la ejecución con la fecha y hora exacta.

📝 ¿Qué ocurre después de ejecutar el script?

Una vez ejecutado el script, se crea automáticamente un archivo .txt para cada video procesado. Estos archivos se almacenan en el directorio ./transcripts, y contienen la transcripción completa del audio extraído de cada archivo .mp4.

Cada transcripción se guarda con el mismo nombre del archivo de video original, pero con extensión .txt. Por ejemplo, si se procesa un video llamado entrevista_lideres.mp4, el resultado será:

./transcripts/entrevista_lideres.txt

📄 Ejemplo de archivo de transcripción generado

El contenido del archivo sigue un formato consistente y legible, con marca de tiempo y texto separado por tabulación (\t). Un ejemplo sería el siguiente:

[00:00 - 00:04]	 Hola a todos, bienvenidos a una nueva edición de nuestro programa semanal.
[00:04 - 00:07]	 Hoy conversaremos con líderes del sector tecnológico sobre innovación y futuro digital.
[00:07 - 00:12]	 Recuerden que pueden seguirnos en nuestras redes sociales y dejar sus preguntas en el chat en vivo.

Este formato incluye:

  • Intervalo de tiempo en minutos y segundos, claramente delimitado.
  • Separador tipo tabulación (\t) para facilitar el parsing automático o procesamiento por otras herramientas.
  • Texto continuo, sin identificación de locutores ni puntuación compleja.

Este resultado puede ser utilizado para:

  • Generar subtítulos simples.
  • Indexar contenido de video para búsqueda textual.
  • Realizar análisis posterior o revisión editorial.

⚠️ Limitaciones y Consideraciones

Aunque esta solución es robusta y práctica, es importante considerar algunas limitaciones técnicas antes de adoptarla en producción:

  • Compatibilidad limitada: Actualmente solo procesa archivos de video en formato .mp4. Archivos en otros formatos deben ser convertidos previamente.
  • Dependencias múltiples: Requiere instalar herramientas como ffmpeg, make, Python y clonar el proyecto transcript-videos, lo que puede resultar tedioso en entornos no controlados.
  • Uso de GPU: La velocidad y eficiencia de la transcripción dependen significativamente de la capacidad de procesamiento, especialmente si se utiliza Whisper en modo GPU.
  • Limitaciones del modelo Whisper:
    • No infiere contenido visual del video, solo procesa el audio.
    • No identifica a los hablantes, solo transcribe el texto continuo que se detecta.
    • La calidad de la transcripción depende del modelo Whisper utilizado (tiny, base, medium, large, etc).

⭐ Ventajas destacadas

A pesar de las limitaciones, esta solución ofrece características superiores:

  • Ideal para videos largos: Probado exitosamente en videos de hasta 1 hora y 30 minutos.
  • Multilinguaje: Capaz de detectar y transcribir múltiples idiomas dentro de un mismo video (por ejemplo, español e inglés).
  • Alta tolerancia al ruido: Ha demostrado un desempeño destacado en ambientes con interferencia sonora, gracias a la arquitectura de Whisper.
  • Mayor precisión: Supera la calidad de herramientas tradicionales de dictado por voz (speech-to-text), como las ofrecidas por navegadores web o plataformas como Google Meet.