Le problème résolu
Les chercheurs qui étudient la langue parlée, l'alternance codique ou les langues peu dotées peinent à trouver assez de données naturelles et conversationnelles. Beaucoup de vidéos n'ont pas de sous-titres, et celles qui en ont mélangent sources humaines et automatiques de qualité variable. Les équipes ont besoin d'un pipeline cohérent qui gère de nombreuses langues et enregistre l'origine de chaque transcription.
Ce que doit inclure votre première version
- Détection des langues de sous-titres disponibles pour chaque vidéo
- Reconnaissance vocale IA en 99 langues pour les vidéos sans sous-titres
- Prise en charge de l'alternance codique pour la parole qui mélange les langues
- Horodatages au niveau du mot pour l'alignement
- Métadonnées de langue et de source des sous-titres pour chaque transcription
Comment le construire, étape par étape
- 01
Trouver des vidéos candidates
Résolvez des chaînes ou playlists connues pour présenter vos langues cibles et appelez /transcripts/{video_id}/languages pour voir quelles pistes de sous-titres existent.
- 02
Utiliser les sous-titres quand ils existent
Récupérez les sous-titres manuels lorsqu'ils existent, car ce sont généralement les plus précis.
- 03
Combler les manques par la reconnaissance vocale
Pour les vidéos sans sous-titres, demandez l'ASR avec la langue définie ou détectée automatiquement, et activez codeSwitching pour la parole multilingue.
- 04
Stocker avec les données d'alignement
Demandez format.words pour obtenir les horodatages au niveau du mot et stockez la langue et la source de chaque transcription avec le texte.
Code de démarrage
Cette idée repose sur le modèle « Recette 3 : charger une playlist en masse dans une base de connaissances ». Remplacez par vos propres chaînes, prompts et stockage.
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 DBPourquoi ça vaut la peine de le construire
Laboratoires et équipes IA obtiennent des données d'évaluation et de recherche dans des langues coûteuses à collecter autrement. Des jeux de données propres et bien documentés pour des langues ou domaines spécifiques ont aussi de la valeur pour les concepteurs de modèles.
Erreurs à éviter
- Considérer les sous-titres automatiques comme une vérité de référence : étiquetez les sources et validez un échantillon à la main.
- Mélanger les dialectes sans métadonnées : enregistrez la chaîne et la région pour pouvoir interpréter les résultats.
- Négliger les licences : vérifiez les conditions de la plateforme et le droit d'auteur avant de redistribuer un jeu de données.
Questions sur cette idée
Combien de langues la reconnaissance vocale prend-elle en charge ?
La reconnaissance vocale IA prend en charge 99 langues, avec détection automatique de la langue et alternance codique en option pour la parole multilingue.
Peut-on obtenir des horodatages au niveau du mot ?
Oui. Demandez format.words pour recevoir le timing de chaque mot, utile pour l'alignement et la recherche en phonétique.
Peut-on redistribuer un jeu de données construit à partir de YouTube ?
Cela dépend des conditions de YouTube, du droit d'auteur et des règles de votre établissement. Beaucoup de chercheurs partagent les identifiants de vidéos et le code plutôt que les transcriptions elles-mêmes.