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

Видео со звуком через API: генерация сцены и озвучивание готового ролика

Можно создать изображение и звук одним запросом, а можно добавить атмосферу к уже готовому видео. Покажем оба пути: какие модели выбрать, что написать в запросе, как дождаться MP4 и где увидеть окончательную стоимость. Примеры используют ключ Celestria Gate; отдельный ключ fal клиенту не нужен.

Иллюстрация видео с морскими волнами, звуковой дорожки и микрофона: изображение, атмосфера и звук
Редакционная иллюстрация совместной работы изображения и звука. Это не кадр платного теста моделей.

Какой звук нужен вашему видео

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

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

Что вы хотитеПодходящий путьЧто проверять
Новая сцена с шумами, музыкой или диалогомМодель с нативным аудио, например Seedance 1.5 ProДействие, слова, голос, совпадение звука с кадром
Добавить ветер, шаги и атмосферу к готовому видеоОтдельный проход MMAudio V2Уместность эффектов и синхронность событий
Оставить оригинальную дорожку при замене объектаПараметр сохранения звука в выбранном видеоредактореНе пропали ли музыка и исходная речь
Произнести точный текст поверх роликаОтдельная генерация речи и монтажПроизношение, длительность и громкость
Заставить персонажа говорить готовой аудиозаписьюСпециальный режим lip-sync с проверенной схемойЛицо, движение губ и тайминг

Сначала раскадровка: пять секунд в кофейне

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

Описание времени — творческое пожелание, а не гарантированный монтажный сценарий. Нейросеть может сместить действие. Поэтому после генерации проверяйте реальные моменты контакта, а не только то, присутствует ли звон вообще. На первом испытании удобнее один план и одно заметное звуковое событие.

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

Сколько стоит видео со звуком

Ниже опубликованные условия fal на 20 октября 2026 года. Рублёвые суммы приблизительны: для наглядности используем коэффициент 110,63 ₽ за $1 с округлением. Это не окончательный тариф Gate. Для конкретного задания фактическая сумма появится после завершения расчёта. Новых платных сравнительных генераций для этой статьи мы не запускали.

ВариантПараметрыUSD провайдераПримерно GateКогда рассмотреть
Seedance 1.5 Pro с аудио5 с, 720p≈$0,26≈29 ₽Новая сцена с аудио в одном запросе
Seedance 1.5 Pro без аудио5 с, 720p≈$0,13≈14 ₽Визуальный дубль, звук добавите отдельно
Wan 2.6 Flash с аудиоФото → 5 с, 720p$0,25≈28 ₽Оживить исходное изображение со звуком
Wan 2.6 Flash без аудиоФото → 5 с, 720p$0,125≈14 ₽Немой вариант той же операции
H3 Max Turbo, вариант fal5 с, 768p, со звуком$0,13 по акции≈14 ₽Сравнить ещё один вариант новой сцены
MMAudio V2Готовое видео, 5 с аудио$0,005≈0,56 ₽Атмосфера и эффекты после создания картинки

У Seedance опубликован токенный тариф: примерно $0,26 за пять секунд 720p со звуком. У Wan Flash 720p ставка со звуком $0,05 в секунду, без него вдвое меньше. H3 Max Turbo в 768p стоит $0,026 за секунду по акции до 31 октября; затем заявлена ставка $0,04. Длина результата H3 может немного превысить запрошенную, что нужно учитывать при бюджете.

Можно сравнить два способа на одном базовом сценарии: Wan Flash без звука за $0,125 и пятисекундный проход MMAudio за $0,005 дают оценку $0,13 против $0,25 у нативного аудио Wan. Это арифметическая оценка двух заданий, а не доказательство одинакового результата. Совместная генерация может лучше учитывать диалог или сложное взаимодействие звука и движения.

Подготовка: ключ Gate и проверка схемы

Откройте личный кабинет Celestria Gate, создайте API-ключ и убедитесь, что баланс позволяет резерв для задания. Для выполнения команд нужен терминал и cURL. В примерах CELESTRIA_API_KEY — переменная с вашим ключом Gate. Подставьте ключ в своём окружении и храните его на сервере; не вставляйте его в публичную страницу, репозиторий или браузерный код.

Все примеры используют единый /v1/media. Вы задаёте канонический model и явную input.operation, а Gate выбирает совместимого провайдера и переводит настройки. Общие поля находятся непосредственно в input, дополнительные настройки модели — в input.parameters. Разделять клиентскую интеграцию по площадкам не нужно.

Сначала прочитайте схему GET /v1/media/models/schema с model=bytedance/seedance-1-5-pro и operation=text-to-video. Этот вызов не создаёт видео. В GET /v1/media/models выберите карточку по data[].id и проверьте её native_generation: доступность конкретной операции, очередь и причину неготовности. Не запускайте модель с неподтверждённой ценой.

curl --fail-with-body --get \
  'https://api.celestriagate.com/v1/media/models/schema' \
  -H "Authorization: Bearer $CELESTRIA_API_KEY" \
  --data-urlencode 'model=bytedance/seedance-1-5-pro' \
  --data-urlencode 'operation=text-to-video'

Вариант 1. Новое видео со звуком одним запросом

Создайте обычный текстовый файл seedance-audio.json и вставьте JSON ниже целиком. Оставьте двойные кавычки, запятые и фигурные скобки. В prompt описаны и кадр, и звуковая задача. Параметр generate_audio явно включает аудио, чтобы результат не зависел от того, менялось ли значение по умолчанию.

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

ПолеЧто означает
modelКанонический ID bytedance/seedance-1-5-pro
operation: text-to-videoСоздать видео по описанию
inputОбщие настройки выбранной операции
promptЧто видно, какое действие происходит и что слышно
aspect_ratio: 16:9Горизонтальный кадр; для вертикального доступно 9:16
resolution: 720pЯвно выбранное разрешение
duration: 5Число: пять секунд без кавычек
parameters.camera_fixed: trueНастройка модели: просьба сохранить неподвижную камеру
generate_audio: trueСоздать новую звуковую дорожку
parameters.enable_safety_checker: trueНастройка проверки содержимого
{
  "model": "bytedance/seedance-1-5-pro",
  "input": {
    "operation": "text-to-video",
    "prompt": "A single locked-off shot inside a quiet cafe. A steaming coffee cup stands on a wooden table near a rainy window. A hand slowly places a ceramic saucer next to the cup, then leaves the frame. Soft rain and low cafe room tone. One gentle ceramic clink exactly as the saucer touches the table. No speech, no music, no subtitles.",
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "duration": 5,
    "generate_audio": true,
    "parameters": {
      "camera_fixed": true,
      "enable_safety_checker": true
    }
  }
}
  1. Оцените сцену перед запуском

    Сохраните JSON в указанный файл и отправьте его на /v1/media/estimate. Посмотрите предварительную сумму, provider и reason. Это проверка без генерации; окончательный расход появится после выполнения.

    curl --fail-with-body -X POST \
      'https://api.celestriagate.com/v1/media/estimate' \
      -H "Authorization: Bearer $CELESTRIA_API_KEY" \
      -H 'Content-Type: application/json' \
      --data-binary @seedance-audio.json

Отправьте JSON и дождитесь результата

Выполняйте команду из папки, где лежит файл. Конструкция @seedance-audio.json означает «прочитать тело запроса из файла», поэтому кавычки внутри JSON не приходится дополнительно экранировать. Idempotency-Key придумайте для этой попытки и сохраните. Для нового варианта сцены нужен новый ключ; при тайм-ауте того же запроса оставьте прежний ключ и прежний JSON.

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: cafe-seedance-audio-001' \
  --data-binary @seedance-audio.json
  1. Сохраните ID из ответа

    Ответ 202 означает, что Gate создал задание. Найдите строку id и скопируйте её. Это ещё не готовое видео и не окончательная цена.

  2. Проверяйте именно это задание

    Запишите полученный ID в GENERATION_ID и выполняйте GET с паузой, например 5–10 секунд. Этот запрос читает состояние и не создаёт второй ролик.

    curl --fail-with-body \
      "https://api.celestriagate.com/v1/media/generations/$GENERATION_ID" \
      -H "Authorization: Bearer $CELESTRIA_API_KEY"
  3. Откройте готовый MP4

    При completed смотрите result.video.url или подходящий элемент files. Сохраните результат, пока ссылка действует. Не ищите обязательно отдельный MP3: выбранная модель возвращает видеофайл.

  4. Запишите окончательный расход

    В billing.cost_rub находится сумма клиента Gate, в billing.upstream_cost_usd — подтверждённый расход провайдера. До расчёта cost_rub может быть null.

queued и pending означают ожидание, in_progress — обработку. awaiting_billing означает, что результат получен и Gate ждёт подтверждения стоимости. Продолжайте читать тот же ID. failed — терминальная ошибка: изучите error.code и error.message перед новой попыткой. Пустая вкладка браузера или обрыв вашего соединения сами по себе не доказывают, что провайдер не начал работу.

Вариант 2. Добавьте звук к уже готовому видео через MMAudio

Этот путь подходит, если ролик уже создан или снят камерой. Понадобится доступная провайдеру HTTPS-ссылка на MP4 и описание звуков. В примере ниже стоит официальный демонстрационный видеофайл fal: его длительность проверена и составляет ровно пять секунд. Он позволяет испытать подключение без собственной загрузки. Музыка в описании — пожелание для этого демо, а не обещание конкретной композиции.

Для своего видео замените video_url и перепишите prompt под реальные действия. Ссылка на страницу с плеером не равна прямой ссылке на файл: сервер должен получить видео без вашего входа в аккаунт. Сначала прочитайте ту же схему /v1/media/models/schema, указав model=mmaudio/mmaudio-v2 и operation=video-to-video; это не запускает аудиогенерацию.

{
  "model": "mmaudio/mmaudio-v2",
  "input": {
    "operation": "video-to-video",
    "video_url": "https://storage.googleapis.com/falserverless/model_tests/video_models/mmaudio_input.mp4",
    "prompt": "Gentle instrumental music matching the mood and motion of the video. Soft natural ambience. No speech.",
    "duration": 5,
    "parameters": {
      "negative_prompt": "speech, distorted audio, clipping",
      "num_steps": 25,
      "cfg_strength": 4.5
    }
  }
}

В общем API duration — число: здесь 5 без кавычек. Дополнительные num_steps, cfg_strength и negative_prompt находятся в parameters; первые два оставлены в стандартных значениях модели. Для MMAudio схема ограничивает длительность 1–30 секундами. Gate сам адаптирует эти настройки под выбранный маршрут, но параметры другой модели всё равно нужно сверять с её схемой.

Запустите аудиопроход и сравните с исходником

Сохраните JSON в mmaudio.json. Команда ниже создаёт отдельное платное задание. Если вы только изучаете варианты и уже получили нужное видео со звуком, выполнять её не требуется. После отправки используйте тот же GET-маршрут проверки, но с новым ID этого задания.

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: mmaudio-demo-001' \
  --data-binary @mmaudio.json

При completed модель возвращает result.video.url — новый видеофайл со звуковой дорожкой. Исходный файл по вашей ссылке не переписывается. Прослушайте результат в наушниках и на обычном динамике. Сравните длительность с исходником, начальную и конечную секунды, громкость и моменты заметных действий. Наличие аудиодорожки ещё не означает, что звуковое оформление подходит задаче.

Если готовите цепочку из двух моделей, дождитесь completed первого задания и только затем передавайте его итоговую ссылку во второе. Сохраните оба ID и обе суммы: общая цена состоит из генерации картинки в движении и аудиопрохода. Открывать новую задачу только для проверки статуса не нужно.

Как написать понятный промпт для звука

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

Не складывайте в пять секунд несколько диалогов, музыку, громкий транспорт и множество эффектов. Выберите главный слышимый объект. Если требуется реплика, запишите её дословно, обозначьте говорящего и язык. Затем проверьте фактическое произношение: текст в prompt не является гарантией точной дикторской записи.

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

Частые ошибки: что проверить до повторной оплаты

СитуацияСледующий шаг
401 или 403Проверьте ключ Gate и его права. Ключ другого провайдера здесь не подходит.
Ошибка валидации JSONПроверьте схему, тип duration и допустимые значения resolution. Сохраните двойные кавычки и запятые.
Видео по ссылке не скачиваетсяПроверьте прямую HTTPS-ссылку без авторизации, тип файла и срок её действия.
Недостаточно средств для резерваПроверьте доступный баланс: предварительный резерв может быть больше цены короткого ролика.
Запрос оборвался после POSTСначала найдите созданное задание. Для повтора используйте тот же JSON и Idempotency-Key.
awaiting_billing долго не меняетсяПродолжайте проверять существующий ID и передайте его поддержке. Не создавайте дубль.
completed, но аудио не слышноПроверьте громкость плеера, сам файл и generate_audio в сохранённом запросе. Новая попытка — отдельное решение.
Эффекты есть, но слова неразборчивыДля точной речи сравните нативный диалог, отдельную генерацию голоса и специализированный lip-sync.

Оценка, резерв и списание — разные суммы. estimated_cost_rub помогает планировать, reserved_rub временно удерживает средства, cost_rub показывает окончательный расход. При ошибке сверяйте error и billing конкретного задания. Успешный ролик с неудачным художественным результатом при этом может быть оплаченной генерацией.

Для проверки интеграции сохраните модель, JSON без секрета, ID задания, выбранный маршрут, итоговую ссылку и billing. Так можно воспроизвести настройки и понять цену удачного дубля. Если нужны полные примеры Python и JavaScript или замена предмета по фото, переходите к следующим инструкциям.

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

Можно ли получить видео и звук одним API-запросом?

Да, у моделей с нативным аудио. В примере Seedance 1.5 Pro используется generate_audio: true. Структура описана по официальной схеме; окончательное качество конкретной сцены нужно проверять после генерации.

Как добавить звук к готовому немому MP4?

Передайте прямую HTTPS-ссылку на видео и описание звука в /v1/media/generations: model=mmaudio/mmaudio-v2, input.operation=video-to-video. duration задаётся числом. Результат приходит как новый видеофайл, а не обязательно отдельная аудиодорожка.

Сколько стоит озвучить пять секунд видео через MMAudio?

Опубликованный тариф fal — $0,001 за секунду, то есть $0,005 за пять секунд. В статье это примерно 0,56 ₽ по расчётному коэффициенту. Окончательное списание Gate появится в billing.cost_rub завершённого задания.

MMAudio гарантирует точную речь и совпадение губ?

Мы этого не утверждаем. Отдельный аудиопроход рассматриваем прежде всего для атмосферы и эффектов. Для заданной реплики нужны проверка произношения и подходящий речевой или lip-sync-сценарий.

Нужен ли отдельный ключ поставщика моделей?

Для запросов нужен только ключ Celestria Gate в Authorization: Bearer. Вы используете /v1/media и каноническую модель; выбор совместимого провайдера выполняет Gate. При одном маршруте или неполных ценах ответ не объявляет доказанный минимум.

Что делать, если статус awaiting_billing?

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

Источники

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