Как сделать субтитры, расшифровку и главы для подкаста или видео на YouTube

Достаточно один раз расшифровать выпуск с таймкодами для каждого слова, и из этого ответа вы соберёте всё остальное: SRT-субтитры, текст для описания, переведённые субтитры и разметку по главам. API ждёт на вход сам файл или прямую ссылку на него. Обычная ссылка на YouTube ведёт на веб-страницу и не подойдёт, поэтому берите свой исходный аудио- или видеофайл.

Получить ключ API Быстрый старт Поддерживаемые языки

Обновлено: · Markdown

Один раз запустите расшифровку

Выгрузите дорожку выпуска (в 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-вывода API есть в руководстве по SRT.

Переведённые субтитры

Отправьте тот же файл во второй раз с параметрами 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")]))

Чтобы YouTube сам разбил видео на главы по таймкодам из описания, список должен начинаться с 0:00 и идти по возрастанию. В нём должно быть минимум три пункта, а длина каждой главы не меньше десяти секунд.

Сколько это стоит

ЗадачаМодельСтоимость
Часовой выпуск, чистый звукbase0,48 $
Часовой выпуск, продакшен-качество и разделение по спикерамoracle1,44 $
Переведённые субтитры на час записиoracle_mini0,96 $

Тарификация посекундная, минимального порога нет. Все цены: /llms/pricing.md.

Вопросы и ответы

Как получить расшифровку выпуска подкаста?

Передайте аудиофайл или его URL в POST /transcribe. Для простого текста укажите output_format: "txt", а если нужны таймкоды и разметка по спикерам, выберите json.

Можно ли передать просто ссылку на YouTube?

Нет. Для работы API нужно загрузить сам файл или передать ссылку на медиафайл, а ссылка на ролик в YouTube ведёт на обычную веб-страницу. Используйте собственные аудио- и видеозаписи или те, на которые у вас есть права.

Как добавить субтитры к видео на YouTube?

Соберите файл SRT по инструкции из руководства по SRT и загрузите его в разделе субтитров внутри YouTube Studio.

Как сделать разметку по главам?

Отдайте пронумерованную расшифровку в LLM и попросите указать номера реплик, с которых начинаются новые темы. Затем в коде замените эти номера на таймкоды и вставьте готовый список в описание ролика.

Можно ли сделать субтитры сразу на нескольких языках?

Да. Запустите на модели Oracle по одной задаче с параметром translate_to для каждого нужного языка.