הבעיה שזה פותר
חוקרים של שפה מדוברת, החלפת קוד או שפות דלות משאבים מתקשים למצוא מספיק נתונים טבעיים ושיחתיים. בסרטונים רבים אין כתוביות, ואלה שיש בהם מערבבים מקורות אנושיים ואוטומטיים באיכות משתנה. צוותים צריכים צינור עקבי שמטפל בשפות רבות ומתעד מאיפה הגיע כל תמלול.
מה לכלול בגרסה הראשונה
- זיהוי שפות הכתוביות הזמינות לכל סרטון
- זיהוי דיבור מבוסס AI ב-99 שפות לסרטונים בלי כתוביות
- תמיכה בהחלפת קוד לדיבור שמערבב שפות
- חותמות זמן ברמת המילה לצורך יישור
- מטא-דאטה על השפה ועל מקור הכתוביות לכל תמלול
איך לבנות את זה, שלב אחר שלב
- 01
מצאו סרטונים מתאימים
המירו ערוצים או פלייליסטים שידוע שיש בהם את שפות היעד שלכם, וקראו ל-/transcripts/{video_id}/languages כדי לראות אילו רצועות כתוביות קיימות.
- 02
השתמשו בכתוביות כשהן זמינות
שלפו כתוביות ידניות כשהן קיימות, כי הן בדרך כלל המדויקות ביותר.
- 03
השלימו פערים בזיהוי דיבור
לסרטונים בלי כתוביות, בקשו ASR עם שפה מוגדרת או מזוהה אוטומטית, והפעילו את codeSwitching לדיבור שמערבב שפות.
- 04
שמרו עם נתוני יישור
בקשו format.words לקבלת חותמות זמן ברמת המילה, ושמרו לצד הטקסט את השפה ואת המקור של כל תמלול.
קוד התחלתי
הרעיון הזה מבוסס על התבנית "מתכון 3: טעינת פלייליסט שלם למאגר ידע". החליפו בערוצים, בפרומפטים ובאחסון שלכם.
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למה כדאי לבנות את זה
מעבדות וצוותי AI מקבלים נתוני הערכה ומחקר בשפות שאחרת יקר מאוד לאסוף. מערכי נתונים נקיים ומתועדים היטב לשפות או לתחומים ספציפיים הם גם בעלי ערך לבוני מודלים.
טעויות שכדאי להימנע מהן
- הנחה שכתוביות אוטומטיות הן אמת מוחלטת: סמנו את המקורות ואמתו מדגם באופן ידני.
- ערבוב דיאלקטים בלי מטא-דאטה: תעדו את הערוץ והאזור כדי שאפשר יהיה לפרש את התוצאות.
- התעלמות מרישוי: בדקו את תנאי הפלטפורמה וזכויות היוצרים לפני הפצה של מערך נתונים כלשהו.
שאלות על הרעיון הזה
בכמה שפות תומך זיהוי הדיבור?
זיהוי הדיבור מבוסס ה-AI תומך ב-99 שפות, עם זיהוי שפה אוטומטי ותמיכה אופציונלית בהחלפת קוד לדיבור שמערבב שפות.
אפשר לקבל חותמות זמן ברמת המילה?
כן. בקשו format.words כדי לקבל תזמון לכל מילה, מה שמועיל ליישור ולמחקר פונטי.
מותר להפיץ מערך נתונים שנבנה מ-YouTube?
זה תלוי בתנאי השימוש של YouTube, בדיני זכויות היוצרים ובמדיניות המוסד שלכם. חוקרים רבים משתפים מזהי סרטונים וקוד במקום את התמלולים עצמם.