איך יוצרים כתוביות, תמליל ופרקים לפודקאסט או לסרטון יוטיוב
מתמללים את הפרק פעם אחת עם חותמות זמן ברמת המילה, ומוציאים מאותה תוצאה את הכול: קובץ כתוביות SRT, תמליל לתיאור הפרק, כתוביות מתורגמות וחותמות זמן לפרקים. ה־API מקבל קובץ שהעליתם או קישור ישיר לקובץ מדיה. קישור רגיל ליוטיוב מוביל לדף אינטרנט, לכן צריך להשתמש בקובץ האודיו או הווידאו שייצאתם בעצמכם.
מתמללים פעם אחת
ייצאו את האודיו של הפרק (MP3 או M4A) או את קובץ הווידאו, העלו אותו בעזרת פונקציית העזר ממדריך עריכת הווידאו ובקשו פלט JSON:
{
"audio_url": "https://example.com/interview.mp3",
"model": "oracle",
"language": "auto",
"word_timestamps": true,
"output_format": "json"
}
בראיונות ובפאנלים העבירו include_diarization: true כדי שיהיה ברור בתמליל מי מדבר.
כתוביות כקובץ SRT
חברו את המילים לשורות והעלו את קובץ ה־.srt ל־YouTube Studio או לשירות האירוח של הפודקאסט. במדריך ה־SRT תמצאו את הקוד לזה, וגם הסבר על איך עובד פלט ה־SRT המובנה של ה־API (שמוציא שורה נפרדת לכל מילה).
כתוביות מתורגמות
אפשר להריץ משימה שנייה על אותו קובץ עם translate_to (במודלים ממשפחת Oracle) ו־output_format: "srt", או לתרגם את הטקסט מהתוצאה הראשונה בעזרת ה־LLM. הרצת משימה נפרדת לכל שפת יעד שומרת על סנכרון בין הכתוביות לאודיו.
תמליל לתיאור הפרק
בקשו output_format: "txt" אם אתם רוצים טקסט נקי, או חברו את שדות ה־text מתוך מקטעי ה־JSON יחד עם שמות הדוברים. כדאי לעבור על הטקסט לפני הפרסום, כי תמלול אוטומטי נוטה לטעות בשמות, במוצרים ובמספרים.
פרקים עם חותמות זמן
העבירו ל־LLM את המקטעים ממוספרים ובקשו ממנו לציין איפה מתחיל כל פרק לפי מספר המקטע, אף פעם לא לפי זמן. את הזמנים עצמם חשבו בקוד מתוך המקטעים. הפרומפט הבא עובד עם כל מודל:
Below is a podcast transcript, one line per segment: S<number> [start-end] text.
Pick 5 to 9 chapter starts. For each give the segment number and a title of at most six words.
Return JSON: [{"segment": 0, "title": "Intro"}]. The first chapter must be segment 0.
chapters.py
# chapters.py — YouTube chapter lines from (seconds, title) pairs
def stamp(seconds):
m, s = divmod(int(seconds), 60)
h, m = divmod(m, 60)
return f"{h}:{m:02}:{s:02}" if h else f"{m}:{s:02}"
def chapter_lines(chapters):
return "\n".join(f"{stamp(start)} {title}" for start, title in chapters)
print(chapter_lines([(0, "Intro"), (95, "Why captions matter"), (412, "Editing from a transcript")]))
יוטיוב מזהה רשימת חותמות זמן בתיאור הסרטון והופך אותה לפרקים אם היא מתחילה ב־0:00, מכילה לפחות שלוש שורות בסדר עולה, וכל פרק נמשך עשר שניות לפחות.
כמה זה עולה
| משימה | מודל | עלות |
|---|---|---|
| פרק של שעה, אודיו נקי | base | 0.48 דולר |
| פרק של שעה, איכות פרודקשן עם זיהוי דוברים | oracle | 1.44 דולר |
| כתוביות מתורגמות, שעה | oracle_mini | 0.96 דולר |
החיוב הוא לפי שנייה, בלי מינימום. לכל התעריפים: /llms/pricing.md.
שאלות ותשובות
איך מקבלים תמליל של פרק בפודקאסט?
שולחים את קובץ האודיו או קישור אליו ל־POST /transcribe. מגדירים output_format: "txt" כדי לקבל טקסט רגיל, או json אם צריכים גם חותמות זמן וזיהוי דוברים.
אפשר לשלוח קישור ליוטיוב?
לא. ה־API מקבל רק קובץ שהועלה או קישור ישיר לקובץ מדיה, וכתובת צפייה ביוטיוב היא דף אינטרנט. השתמשו בקובץ אודיו או וידאו ששייך לכם או שיש לכם הרשאה להשתמש בו.
איך מוסיפים כתוביות ליוטיוב?
יוצרים קובץ SRT לפי ההסבר במדריך ה־SRT, ומעלים אותו ב־YouTube Studio באזור הכתוביות של הסרטון.
איך יוצרים פרקים?
נותנים ל־LLM תמליל עם מקטעים ממוספרים ומבקשים ממנו לבחור את מספרי המקטעים שבהם מתחיל כל פרק. אחר כך ממירים בקוד את המספרים לחותמות זמן ומדביקים את הרשימה בתיאור הסרטון.
אפשר לקבל כתוביות בכמה שפות?
כן. מריצים משימה נפרדת לכל שפה עם translate_to באחד ממודלי Oracle.