Распространённый запрос от людей, создающих демонстрации продуктов, вступления к курсам и ролики для социальных сетей: «У меня есть фотография ведущего и уже записанная озвучка. Сделайте так, чтобы человек на фотографии произносил именно этот текст». P-Video-2 Pro Reference от Pruna AI делает это одним вызовом API. Вы отправляете фотографию в качестве референса, аудиофайл и keep_audio: true; модель создаёт видео вокруг вашей аудиодорожки, синхронизируя движения губ и головы со словами. В этом руководстве показаны точный запрос, его стоимость и реальный ролик, который мы создали во время подготовки статьи.
Что делает P-Video-2 Pro Reference
Это модель преобразования референсов в видео. Вместо того чтобы описывать всё текстом, вы предоставляете материалы для работы:
- Изображения-референсы (до 9): внешний вид персонажа или продукта либо стиль.
- Видео-референсы (до 3, от 2 до 15 секунд каждое, суммарно 15 секунд): движения или сцену, которым нужно следовать.
- Аудио (до 3 файлов, суммарно 15 секунд).
- Текстовый промпт, который связывает всё воедино: где находится человек и что он делает.
На выходе получается ролик длительностью от 5 до 15 секунд со звуком, в разрешении 480p или 768p, в режиме Speed или Cost, с соотношением сторон от 16:9 до 9:16 либо с режимом «adaptive» (следовать референсам). Требуется как минимум один референс — изображение или видео.
keep_audio: ваш голос, ваши слова
У аудиовхода есть два совершенно разных значения, и keep_audio переключает режим:
- Без
keep_audio(по умолчанию) аудио является только образцом. Модель имитирует голос или звук, но ваш файл не добавляется в ролик, а слова могут отличаться. - С
keep_audio: trueи ровно одним аудиофайлом этот файл становится саундтреком. Тот же голос, те же слова; видео (движения и губы) генерируется в соответствии с ним.
Как длительность дорожки взаимодействует с duration: если аудио короче заданной длительности, сначала воспроизводится оно, а остальное генерирует модель; если оно длиннее, его длительность сокращается до указанного значения; если разница с заданной длительностью составляет не более одной секунды, ролик соответствует длительности аудио. Поэтому выбирайте длительность, близкую к длительности озвучки. keep_audio не изменяет стоимость.
Стоимость
Стоимость ролика за одну генерацию складывается из трёх компонентов: секунд выходного видео (в зависимости от режима и разрешения), каждого изображения-референса, а также секунд видео- и аудиореференсов. Самая дешёвая комбинация — 480p в режиме Cost. Полная таблица тарифов доступна на странице модели P-Video-2 Pro Reference.
Поскольку стоимость зависит от конкретных входных данных, запросите расчёт перед генерацией. Эндпоинт расчёта бесплатен и возвращает quoteId, который можно привязать к заданию:
curl https://getvibeapi.com/api/media/price \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d @request.json
# Наш расчёт от 22 октября 2026 года для запроса ниже
# (7 s, 480p, Cost mode, 1 photo, 1 audio track, keep_audio):
{"ok":true,"priceUsd":0.165625,"isEstimate":false,"chargeBasis":"quote","quoteId":"mq_…","quoteTtlSeconds":900}
Расчёт является верхним пределом: референсы не измеряются до отправки, поэтому предполагается использование всего доступного объёма (например, всех 15 секунд референсного аудио, если отправлено любое аудио). С нашего задания была списана ровно указанная в расчёте сумма.
Пошагово: фотография + озвучка → говорящий ролик
1. Подготовьте два общедоступных файла
Вам понадобится общедоступный URL по HTTPS для портрета (лучше всего подходит чёткий снимок человека анфас по плечи) и URL для озвучки (MP3 или WAV). Для нашего теста мы сгенерировали вымышленную ведущую с помощью Nano Banana 2.1 и англоязычную озвучку длительностью 7.3 секунды с помощью gpt-4o-mini-tts — оба через тот же API-ключ. Любая ваша собственная запись работает таким же образом.
2. Отправьте задание
import os, time, requests
API = "https://getvibeapi.com"
HEADERS = {"Authorization": f"Bearer {os.environ['GETVIBE_API_KEY']}"}
body = {
"model": "p-video-2-pro-reference",
"prompt": "Женщина с референсной фотографии тепло разговаривает с камерой в уютной пекарне, "
"естественно двигает головой, губы синхронны с озвучкой",
"opts": {
"mode": "cost", # самый дешёвый режим; "speed" работает быстрее
"resolution": "480p", # или "768p"
"duration": "7", # близко к длительности озвучки (7.3 s)
"aspect_ratio": "16:9",
"reference_image_urls": ["https://your-cdn.example/presenter.jpg"],
"reference_audio_urls": ["https://your-cdn.example/voiceover.mp3"],
"keep_audio": True, # использовать эту дорожку как саундтрек, а не как образец
},
}
job = requests.post(f"{API}/api/media/generate", json=body, headers=HEADERS).json()
print(job["jobId"], job["status"], job["priceRub"])
Поле называется priceRub по историческим причинам; на getvibeapi.com в нём указываются доллары США — то же число, которое вернул расчёт.
3. Получите результат через опрос
while True:
r = requests.get(f"{API}/api/media/jobs/{job['jobId']}", headers=HEADERS).json()
if r["status"] in ("success", "fail"):
break
time.sleep(10)
print(r["status"], r["resultUrls"])
Для производственных пакетных задач используйте webhook вместо опроса; см. webhook-уведомления о медиафайлах. Ссылки на результаты истекают примерно через неделю, поэтому скопируйте файл в собственное хранилище.
Что мы получили
Наше задание завершилось через несколько минут со статусом success. Результатом стал MP4-файл: 832×480, 7.33 секунды, с аудиодорожкой. Мы провели следующие проверки:
- Голос — наш. Мы сравнили саундтрек ролика с исходным образцом озвучки побайтово: корреляция 0.99998 при нулевом смещении. Модель сохранила файл, а не создала переозвученную имитацию.
- Лицо сохранено. Кадры на 1-й, 3-й и 5-й секундах показывают ту же женщину, что и на референсной фотографии (волосы, серьги, зелёная льняная рубашка), теперь в пекарне, как и требовалось в промпте, с заметным движением рта во время речи.
- Длительность соответствует дорожке. Озвучка длительностью 7.3 секунды с параметром
duration: "7"создала ролик длительностью 7.33 секунды, как и предсказывает правило одной секунды.
480p в режиме Cost подходит для предварительных просмотров и небольших форматов для социальных сетей. Для финальной версии повторите тот же запрос в 768p, когда останетесь довольны промптом.
Советы и ограничения
- Отправляйте ровно один аудиофайл вместе с
keep_audio; при наличии двух или трёх файлов запрос отклоняется с понятным сообщением об ошибке. - Ограничьте озвучку 15 секундами или менее. Для более длинных сценариев разделите их на несколько роликов и объедините.
- За каждое референсное изображение взимается плата, включая
first_frame_urlиlast_frame_url. Обычно достаточно одного хорошего портрета. - Опишите в промпте обстановку и манеру речи («спокойно, объясняя», «улыбаясь, энергично»); слова берутся из вашего аудио.
- Используйте только фотографии и голоса, на которые у вас есть права. Не выдавайте себя за реальных людей без их согласия.
Другие видеомодели, включая варианты преобразования текста в видео и изображения в видео, перечислены на странице моделей, а материал изображения, видео и голос через один API в целом объясняет процесс работы с медиафайлами. Полный справочник по запросам: документация по генерации медиафайлов.
Где это пригодится
Говорящие ролики, созданные из фотографии и готовой озвучки, подходят для любых рабочих процессов, в которых текст зафиксирован, а лицо каждый раз должно оставаться одним и тем же:
- Объявления о продуктах и функциях. Запишите сценарий длительностью 10 секунд один раз и поручите ведущему произнести его на фоне разных сцен, изменяя только промпт.
- Вступления к курсам и онбордингу. Один и тот же ведущий для каждого урока без необходимости бронировать студию для каждого из них.
- Локализованные версии. Запишите или синтезируйте озвучку на другом языке и создайте соответствующий ролик; губы будут следовать новому аудио.
- Фрагменты для службы поддержки. Короткие ролики «вот как сделать X», где точность формулировок важнее кинематографичности движений.
Есть две вещи, которыми этот инструмент не является: это не инструмент для длинных аватарных роликов (каждая генерация длится не более 15 секунд) и не способ редактировать существующее видео. Для изменения внешнего вида уже имеющегося видеоматериала см. Kling 3.0 Omni Transformation.
Часто задаваемые вопросы
Можно ли заставить фотографию говорить моим собственным записанным голосом?
Да. Отправьте фотографию в reference_image_urls, свою запись как единственный элемент в reference_audio_urls и keep_audio: true. Запись станет саундтреком ролика, а губы будут сгенерированы в соответствии с ней.
Что происходит без keep_audio?
Аудио используется только как образец для имитации. Ваш файл не попадает в результат, а речь в ролике может отличаться.
Какой может быть максимальная длительность ролика?
От 5 до 15 секунд на одну генерацию. Суммарная длительность референсного аудио ограничена 15 секундами.
Сколько стоит говорящий ролик?
Стоимость зависит от длительности, разрешения, режима и отправленных референсов. Получите точную сумму через бесплатный эндпоинт /api/media/price перед генерацией; стоимость нашего ролика длительностью 7 секунд в разрешении 480p в режиме Cost с одной фотографией и одной аудиодорожкой указана выше. Актуальные тарифы доступны на странице модели.
Есть ли на результате водяной знак?
На нашем ролике мы не обнаружили водяного знака.
