Problemet det löser
Forskare som studerar talat språk, kodväxling eller resurssvaga språk har svårt att hitta tillräckligt med naturlig, vardaglig data. Många videor saknar undertexter, och de som finns blandar mänskliga och automatiska källor av varierande kvalitet. Team behöver ett konsekvent flöde som hanterar många språk och registrerar var varje transkript kommer ifrån.
Vad den första versionen bör innehålla
- Identifiering av tillgängliga undertextspråk per video
- AI-taligenkänning på 99 språk för videor utan undertexter
- Stöd för kodväxling för tal som blandar språk
- Tidsstämplar på ordnivå för alignment
- Metadata om språk och undertextkälla för varje transkript
Så bygger du det, steg för steg
- 01
Hitta kandidatvideor
Slå upp kanaler eller spellistor som är kända för att innehålla dina målspråk och anropa /transcripts/{video_id}/languages för att se vilka undertextspår som finns.
- 02
Använd undertexter där de finns
Hämta manuella undertexter där de finns, eftersom de oftast är mest korrekta.
- 03
Fyll luckorna med taligenkänning
För videor utan undertexter begär du ASR med angivet eller automatiskt identifierat språk, och aktiverar codeSwitching för tal som blandar språk.
- 04
Spara med alignment-data
Begär format.words för tidsstämplar på ordnivå och spara språk och källa för varje transkript tillsammans med texten.
Startkod
Den här idén bygger på mönstret "Recept 3: Läs in en hel spellista i en kunskapsbas". Byt till dina egna kanaler, promptar och lagring.
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 DBDärför är det värt att bygga
Labb och AI-team får utvärderings- och forskningsdata på språk som annars är dyra att samla in. Rena, väldokumenterade dataset för specifika språk eller domäner är också värdefulla för modellbyggare.
Misstag att undvika
- Att anta att automatiska undertexter är facit: märk källorna och validera ett urval manuellt.
- Att blanda dialekter utan metadata: registrera kanal och region så att resultaten kan tolkas.
- Att förbise licensfrågor: kontrollera plattformens villkor och upphovsrätten innan du sprider något dataset.
Frågor om den här idén
Hur många språk stöder taligenkänningen?
AI-taligenkänningen stöder 99 språk, med automatisk språkidentifiering och valfri kodväxling för tal som blandar språk.
Kan jag få tidsstämplar på ordnivå?
Ja. Begär format.words för att få tidsangivelser för varje ord, vilket är användbart för alignment och fonetisk forskning.
Får jag sprida ett dataset byggt från YouTube?
Det beror på YouTubes villkor, upphovsrättslagen och ditt lärosätes policyer. Många forskare delar video-ID:n och kod snarare än själva transkripten.