Trucos para extraer transcripciones de YouTube con Python y Argos Translate

Métodos básicos y automatización

Antes de entrar en scripts complejos, es útil saber cómo obtener una transcripción rápidamente. La forma más sencilla es directamente desde el reproductor oficial de YouTube: simplemente abre el video, haz clic en los tres puntos del menú o en la opción del reproductor y selecciona «Mostrar transcripción».

Pantalla de un navegador con el reproductor de YouTube y el panel de transcripción abierto
El método básico para ver la transcripción directamente desde el video.

Este método te permite copiar el texto directamente a un archivo de texto. Sin embargo, si tu objetivo es automatizar este proceso o descargar transcripciones en lote, las herramientas manuales se vuelven insuficientes.

Herramientas para extraer datos

Aquí es donde la automatización brilla. Si el video tiene subtítulos oficiales, puedes usar `yt-dlp` con la opción --write-auto-subs para descargar los archivos de subtítulo directamente sin necesidad de procesar el video.

Si prefieres acceder al texto directamente desde la plataforma, la biblioteca youtube-transcript-api es una opción excelente. Puedes instalarla con pip y ejecutar un script simple en Python que extraiga el contenido del video usando su ID:

from youtube_transcript_api import YouTubeTranscriptApi
transcript = YouTubeTranscriptApi().fetch("ID_DEL_VIDEO")
for line in transcript:
    print(line.text)
Dos ventanas de terminal mostrando comandos de descarga de transcripciones
Comparativa entre usar yt-dlp para subtítulos y la API de Python para texto directo.

Este enfoque te da un texto limpio listo para procesar.

Solucionando problemas de idioma

Aunque estos métodos son potentes, a veces puedes encontrar errores. Un caso común es cuando el script intenta obtener subtítulos en inglés, pero el video solo tiene subtítulos automáticos en español. Si ocurre esto, la API lanzará un error indicando que no se encontraron transcripciones para los códigos de idioma solicitados.

La solución es simple: especificar correctamente los idiomas al hacer la llamada a la API. En lugar de dejarlo por defecto, puedes forzar el uso del español:

transcript = YouTubeTranscriptApi().fetch("ID_DEL_VIDEO", languages=["es"])

O, para ser aún más robusto y evitar sorpresas con videos variados, puedes intentar una lista de preferencias como ["es", "en"]. Esto le dice a la API que busque primero el español y, si no está disponible, que intente el inglés.

Esquema visual de depuración mostrando parámetros de idioma para la API
Cómo solucionar los errores de idioma en la API de YouTube.

Traducción automática

Una vez que tienes la transcripción, si necesitas traducir contenido de inglés a español, hay varias opciones. Mi favorita para usar en línea de comandos es Argos Translate, ya que funciona completamente offline una vez instalados los modelos.

Puedes usar un script como este para leer tu archivo de transcripción y generar automáticamente la versión traducida:

from argostranslate import translate
texto = f.read()
translated = translate.translate(texto, "en", "es")

Si no te importa depender de una conexión a Internet, también puedes usar alternativas como DeepL o Google Translate para obtener traducciones de alta calidad.

Representación visual de la traducción automática desde un archivo de texto
El script de Argos Translate en acción para convertir inglés a español.

Unificando el flujo de trabajo

Finalmente, todo esto se puede unificar en una sola herramienta práctica. Podrías crear un script que acepte la URL del video como entrada, descargue la transcripción, detecte automáticamente si está en inglés o español y aplique la traducción solo si es necesario.

Esto elimina la necesidad de ejecutar múltiples comandos manuales y hace que el proceso sea mucho más cómodo para analizar tus videos.