-
Notifications
You must be signed in to change notification settings - Fork 1
Automatiza la Transcripción de Videos MP4 Usando `transcript‐videos`
¿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.
Antes de comenzar, asegúrese de tener los siguientes elementos instalados en su entorno local:
- Git
-
ffmpeg (instalable vía Homebrew con
brew install ffmpeg
) - Make
- Python
- Clonado del repositorio
transcript-videos
git clone https://github.com/JonDotsoy/transcript-videos.git
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
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
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.
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:
- Extraerá el audio en formato
.wav
usandoffmpeg
. - Generará una transcripción en texto plano mediante
make transcript-mp4
. - Guardará un informe detallado de la ejecución con la fecha y hora exacta.
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
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.
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 proyectotranscript-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).
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.