GUÍA DE DESARROLLO · INVESTIGADORES

Cómo crear un dataset de voz multilingüe con transcripciones de YouTube

Los corpus de texto escrito no reflejan bien cómo habla realmente la gente, sobre todo en idiomas y dialectos con poco texto publicado. YouTube contiene habla conversacional en casi todos los idiomas. Las transcripciones con tiempos por palabra la convierten en datos de investigación utilizables.

Para quién es
Lingüistas computacionales, laboratorios de PLN, equipos de evaluación de IA
Tiempo de desarrollo
1 mes
Endpoints de la API
/transcripts/{video_id}/languagesasr_options.codeSwitchingformat.words

El problema que resuelve

Quienes investigan la lengua hablada, la alternancia de código o los idiomas con pocos recursos tienen dificultades para encontrar suficientes datos naturales y conversacionales. Muchos vídeos no tienen subtítulos, y los que existen mezclan fuentes humanas y automáticas de calidad variable. Los equipos necesitan un proceso coherente que gestione muchos idiomas y registre de dónde procede cada transcripción.

Qué incluir en tu primera versión

  • Detección de los idiomas de subtítulos disponibles en cada vídeo
  • Reconocimiento de voz por IA en 99 idiomas para vídeos sin subtítulos
  • Soporte de alternancia de código para el habla que mezcla idiomas
  • Marcas de tiempo por palabra para la alineación
  • Metadatos de idioma y origen de los subtítulos para cada transcripción

Cómo construirlo, paso a paso

  1. 01

    Encuentra vídeos candidatos

    Resuelve canales o listas de reproducción que se sabe que incluyen tus idiomas objetivo y llama a /transcripts/{video_id}/languages para ver qué pistas de subtítulos existen.

  2. 02

    Usa los subtítulos cuando estén disponibles

    Obtén los subtítulos manuales cuando existan, ya que suelen ser los más precisos.

  3. 03

    Completa los huecos con reconocimiento de voz

    Para los vídeos sin subtítulos, solicita ASR con el idioma indicado o detectado automáticamente, y activa codeSwitching para el habla que mezcla idiomas.

  4. 04

    Guarda los datos de alineación

    Solicita format.words para obtener marcas de tiempo por palabra y guarda el idioma y el origen de cada transcripción junto al texto.

Código de inicio

Esta idea se basa en el patrón "Receta 3: carga en bloque una lista de reproducción en una base de conocimiento". Usa tus propios canales, prompts y almacenamiento.

import requests

API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}

playlist = requests.post(f"{API}/playlists/resolve", headers=HEADERS,
                         json={"playlist_url": "https://www.youtube.com/playlist?list=PLAYLIST_ID",
                               "limit": 100}).json()

ids = [v["video_id"] for v in playlist["items"]]
batch = requests.post(f"{API}/batch", headers=HEADERS, json={
    "video_ids": ids,
    "format": {"timestamp": True, "paragraphs": True},
}).json()

# Large batches run async: poll GET /batch/{batch_id} until status is "completed"
for r in batch.get("results", []):
    if r["status"] == "completed":
        for p in r["data"]["transcript"].get("paragraphs") or []:
            store(video_id=r["video_id"], start=p["start"], text=p["text"])  # your vector DB

Por qué vale la pena construirlo

Los laboratorios y equipos de IA obtienen datos de evaluación e investigación en idiomas que de otro modo son caros de recopilar. Los conjuntos de datos limpios y bien documentados para idiomas o dominios concretos también tienen valor para quienes crean modelos.

Errores que debes evitar

  • Dar por hecho que los subtítulos automáticos son la verdad de referencia: etiqueta las fuentes y valida una muestra a mano.
  • Mezclar dialectos sin metadatos: registra el canal y la región para poder interpretar los resultados.
  • Pasar por alto las licencias: revisa los términos de la plataforma y los derechos de autor antes de redistribuir cualquier conjunto de datos.

Preguntas sobre esta idea

¿Cuántos idiomas admite el reconocimiento de voz?

El reconocimiento de voz por IA admite 99 idiomas, con detección automática del idioma y alternancia de código opcional para el habla que mezcla idiomas.

¿Puedo obtener marcas de tiempo por palabra?

Sí. Solicita format.words para recibir los tiempos de cada palabra, lo que resulta útil para la alineación y la investigación fonética.

¿Puedo redistribuir un conjunto de datos creado a partir de YouTube?

Depende de los términos de YouTube, la legislación sobre derechos de autor y las políticas de tu institución. Muchos investigadores comparten los IDs de vídeo y el código en lugar de las propias transcripciones.

Empieza a construir hoy

10 créditos gratis cada mes. No necesitas tarjeta de crédito.

Cómo crear un dataset de voz multilingüe a partir de YouTube | YouTubeTranscript.dev