Видео · сценарий и звук · обновлено 20 октября 2026 г. · 10 минут

Генерация видео со звуком по API: от сценария до проверки синхронизации

Чтобы AI-видео звучало понятно, одного generate_audio: true недостаточно. Нужно решить, какой звук главный, когда он возникает и что должно остаться тихим. Разберём пятисекундную сцену с велосипедом: от раскадровки до запроса и приёмки MP4.

Создание звукового сценария для короткого AI-видео
Редакционная иллюстрация звукового сценария; не результат генерации велосипеда.

Решите, что зритель должен услышать

Для короткого ролика начните с одного слышимого события. В нашем учебном примере велосипед стоит у парковой дорожки, рука нажимает звонок, после звона остаётся спокойный фон. Главный звук — велосипедный звонок. Второстепенный — лёгкий ветер в листве. Речи, музыки и шума машин не требуется.

Такое описание задаёт приоритеты. Если одновременно попросить бодрую музыку, несколько разговоров и громкий звонок, модель может заполнить сцену звуком, но зрителю станет труднее понять событие. Чёткая иерархия полезна и для запроса, и для последующей оценки: слышно ли главное действие и не мешает ли ему фон.

Этот материал посвящён режиссуре новой сцены с нативным аудио. Для уже снятого немого видео есть отдельный путь добавления звука. Для точной реплики диктора и движения губ нужны другие критерии, чем для звона или ветра. Выбирайте процесс по задаче, а не только по наличию аудиопереключателя.

Как это устроено
  1. Выберите звук: Назовите главный источник и тихий фон, исключите ненужные голоса и музыку.
  2. Разложите события: Свяжите видимое действие с ожидаемым звуком в короткой раскадровке.
  3. Создайте сцену: Передайте описание и явные настройки совместного аудио в одном задании.
  4. Проверьте синхрон: Сравните звук с реальным действием в готовом MP4 и запишите стоимость.

Разложите пять секунд на три события

Перед API составьте маленькую таблицу. В ней достаточно времени, изображения и ожидаемого звука. Тайминги в описании — пожелания к генерации, а не гарантия покадрового исполнения. Если финальный файл чуть иначе располагает действие во времени, оценивать звук нужно относительно реального касания в кадре.

Не обязательно перечислять каждую долю секунды. Слишком плотный сценарий повышает вероятность, что модель пропустит часть событий. Для первого дубля оставьте один непрерывный план и один источник основного звука. Монтаж из нескольких локаций лучше проверять после того, как простой случай работает.

ФрагментИзображениеАудиоЧто проверим
Начало, 0–1 сВелосипед неподвижен, видна ручка звонкаТихий ветер и паркНет лишней речи и музыки
Середина, 1–3 сПалец нажимает рычаг звонкаОдин отчётливый металлический звонЗвук связан с нажатием
Конец, 3–5 сРука уходит, велосипед остаётсяЗатухание и спокойный фонНет второго необъяснимого звонка
Четыре шага звукового сценария: намерение, раскадровка, генерация, проверка синхронизации
Учебная раскадровка, не кадры выполненной платной генерации.

Выберите создание звука вместе с видео

Модель со звуком получает описание визуальной и звуковой частей в одном запросе. Для примера используем Seedance 1.5 Pro: model=bytedance/seedance-1-5-pro и operation=text-to-video. В общем API Gate duration задаётся числом, generate_audio — логическим значением. Отдельную звуковую дорожку на вход мы не передаём.

Альтернативой может быть поддерживаемая операция Wan со звуком. Авторизация и API-пути остаются теми же, но допустимые значения и дополнительные параметры у моделей различаются. Нельзя поменять только ID и считать любые настройки поддержанными. Gate адаптирует подтверждённые поля, а неподдерживаемую комбинацию нужно исправить до запуска.

Загрузите /v1/media/models/schema для выбранных model и operation. Затем проверьте карточку из GET /v1/media/models: её data[].id и native_generation сообщают о доступности и причинах неготовности. pricing_verification_required означает, что запуск ещё требует подтверждённого тарифа. Одна карточка семейства не обещает готовности каждой операции.

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

Полезный порядок промпта: место, предмет, действие, камера, главный звук, фон и нежелательные элементы. Для звонка важно упомянуть момент нажатия. Формулировка «реалистичный звук» слишком общая: она не указывает, должен ли в кадре быть один звон или целая музыкальная композиция.

Англоязычный пример ниже можно использовать как исходную структуру. Мы не утверждаем, что он уже дал удачный ролик. Если требуется русская речь, заранее добавьте точный текст и отдельно проверяйте язык и произношение выбранной модели. Для этого учебного запроса диалога нет, поэтому речевые возможности не входят в критерии приёмки.

{
  "model": "bytedance/seedance-1-5-pro",
  "input": {
    "operation": "text-to-video",
    "prompt": "One continuous locked-off close shot of a parked bicycle handlebar in a quiet leafy park. A hand enters, presses the bicycle bell once, then leaves. A single clear metallic bicycle bell ring exactly when the lever is pressed, with a natural short decay. Very soft wind in leaves in the background. No dialogue, no music, no traffic, no subtitles.",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "generate_audio": true,
    "parameters": {
      "camera_fixed": true,
      "enable_safety_checker": true
    }
  }
}

Передайте сценарий и сохраните ID

Сохраните JSON в bell-scene.json и используйте ключ Celestria Gate. Запрос отправляется в /v1/media/generations. Внутри input заданы общие параметры, а camera_fixed и enable_safety_checker находятся в parameters. Gate выбирает совместимый провайдерский маршрут; при единственном маршруте он не объявляет победу в сравнении цен.

Отправьте запрос один раз. Idempotency-Key обозначает конкретную попытку: при обрыве сети повторяйте тот же JSON с тем же ключом. После ответа 202 сохраните id задания. Успешный HTTP-ответ создания означает принятую задачу, а не уже проверенный звук.

curl --fail-with-body -X POST \
  'https://api.celestriagate.com/v1/media/generations' \
  -H "Authorization: Bearer $CELESTRIA_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: bicycle-bell-scene-001' \
  --data-binary @bell-scene.json

Проверьте звук относительно видимого события

После completed откройте result.video.url или видео из files. Сначала просмотрите весь файл без пауз, затем найдите момент нажатия. Звон, который возникает заметно раньше пальца, не проходит выбранный критерий, даже если сам по себе звучит правдоподобно. То же относится к повторному звуку без второго действия.

Послушайте результат в наушниках и через обычный динамик. Проверьте начало и конец: нет ли щелчка на границе файла, внезапного обрыва затухания или неожиданной тишины. Затем сравните громкость фона и главного события. Тихий ветер должен поддерживать сцену, а не скрывать звон.

Если нужна точная синхронизация для рекламы, отметьте время видимого события и соответствующего звукового пика в редакторе. Даже без сложных измерений такая запись помогает объяснить причину отказа от дубля. Формулируйте замечание конкретно: «звон раньше касания», а не «аудио какое-то странное».

КритерийПризнак пригодного результата
ПричинаЗвон соответствует нажатию рычага
КоличествоОдин звон для одного действия
ПриоритетГлавное событие слышнее фоновой атмосферы
СодержимоеНет случайных слов, транспорта и музыки
ГраницыНачало и затухание не обрываются резко

Сравните цену дубля и цену принятой сцены

По опубликованному тарифу fal на 20 октября пять секунд Seedance 1.5 Pro 720p со звуком стоят примерно $0,26. Ориентир Gate по расчётному коэффициенту 110,63 ₽ за $1 — около 29 ₽. Это предварительная оценка; окончательные суммы конкретного задания берутся из billing после completed.

Если готовое изображение уже устраивает, отдельная генерация атмосферы может быть дешевле полного повторения сцены. MMAudio V2 имеет опубликованную ставку $0,001 за секунду. Но отдельный аудиопроход не доказывает тот же результат, что совместная генерация, особенно для речи и сложных взаимодействий.

Запишите причину каждой новой попытки. Изменить только громкость вручную иногда проще, чем заново генерировать удачное движение. Если меняете промпт и делаете новый POST, это отдельная платная генерация. Общий бюджет должен включать все завершённые оплаченные дубли, а не только тот, который показан клиенту.

Что передать разработчику и клиенту

Для разработчика сохраните JSON без ключа, модель, ID задания, ссылку на исходный результат и фактическую стоимость. Для клиента достаточно ролика, короткого описания задачи и понятного вывода по критериям: что получилось и что требует правки. Творческое пожелание, схема API и реально полученный результат должны быть различимы.

Если задание находится в awaiting_billing, продолжайте проверять тот же ID. При failed прочитайте error.code и error.message до новой попытки. Не делайте вывод о качестве звука по технической ошибке: модель могла вообще не завершить обработку. Такой порядок сохраняет и ясность отчёта, и бюджет повторов.

Частые вопросы

Почему generate_audio: true недостаточно для хорошего звука?

Параметр включает генерацию, но не задаёт главный источник, фон, количество событий и критерии синхронизации. Их нужно описать в сценарии и проверить в результате.

Как проверить совпадение звука с действием?

Найдите реальный момент события в готовом файле и сравните его с началом соответствующего звука. Для строгой приёмки запишите оба времени в редакторе.

Можно ли в одном коротком видео заказать диалог, музыку и эффекты?

Возможность зависит от модели. Для первого теста проще одна сцена и один главный звук; сложный микс требует отдельной проверки разборчивости и синхронизации.

Можно ли исправить только звук готового видео?

Можно рассмотреть отдельный аудиопроход, например MMAudio, либо монтаж. Это отдельная операция; она не является повторным созданием всего ролика и не гарантирует точную речь.

Источники

Канонический адрес материала · Получить API-ключ