מדריך בנייה · חוקרים

איך לבנות מערך נתוני דיבור רב-לשוני מתמלולי YouTube

קורפוסים של טקסט כתוב לא משקפים כראוי את הדרך שבה אנשים באמת מדברים, במיוחד בשפות ובדיאלקטים שיש בהם מעט טקסט שפורסם. ב-YouTube יש דיבור שיחתי כמעט בכל שפה. תמלולים עם תזמון ברמת המילה הופכים אותו לנתוני מחקר שמישים.

למי זה מתאים
בלשנים חישוביים, מעבדות NLP, צוותי הערכה של AI
זמן פיתוח
חודש אחד
נקודות קצה של ה-API
/transcripts/{video_id}/languagesasr_options.codeSwitchingformat.words

הבעיה שזה פותר

חוקרים של שפה מדוברת, החלפת קוד או שפות דלות משאבים מתקשים למצוא מספיק נתונים טבעיים ושיחתיים. בסרטונים רבים אין כתוביות, ואלה שיש בהם מערבבים מקורות אנושיים ואוטומטיים באיכות משתנה. צוותים צריכים צינור עקבי שמטפל בשפות רבות ומתעד מאיפה הגיע כל תמלול.

מה לכלול בגרסה הראשונה

  • זיהוי שפות הכתוביות הזמינות לכל סרטון
  • זיהוי דיבור מבוסס AI ב-99 שפות לסרטונים בלי כתוביות
  • תמיכה בהחלפת קוד לדיבור שמערבב שפות
  • חותמות זמן ברמת המילה לצורך יישור
  • מטא-דאטה על השפה ועל מקור הכתוביות לכל תמלול

איך לבנות את זה, שלב אחר שלב

  1. 01

    מצאו סרטונים מתאימים

    המירו ערוצים או פלייליסטים שידוע שיש בהם את שפות היעד שלכם, וקראו ל-/transcripts/{video_id}/languages כדי לראות אילו רצועות כתוביות קיימות.

  2. 02

    השתמשו בכתוביות כשהן זמינות

    שלפו כתוביות ידניות כשהן קיימות, כי הן בדרך כלל המדויקות ביותר.

  3. 03

    השלימו פערים בזיהוי דיבור

    לסרטונים בלי כתוביות, בקשו ASR עם שפה מוגדרת או מזוהה אוטומטית, והפעילו את codeSwitching לדיבור שמערבב שפות.

  4. 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, בדיני זכויות היוצרים ובמדיניות המוסד שלכם. חוקרים רבים משתפים מזהי סרטונים וקוד במקום את התמלולים עצמם.

התחילו לבנות עוד היום

10 קרדיטים בחינם בכל חודש. לא צריך כרטיס אשראי.

איך לבנות מערך נתוני דיבור רב-לשוני מ-YouTube | YouTubeTranscript.dev