Введение
Talking Avatar превращает один портрет в говорящий ролик. Вы отправляете лицо в image_url и запись голоса в audio_url; рот, челюсть и небольшие движения головы анимируются так, что человек будто произносит ровно то, что есть в записи. Ролик длится столько же, сколько аудио, от трёх до шестидесяти секунд, и возвращается уже с вашей записью на дорожке — его можно сразу публиковать или ставить в монтаж.
Ключевые возможности и особенности
Тайминг задаёт звук
Каждая форма рта рождается из самого звука, поэтому паузы, быстрые фразы и акценты ложатся туда, где их поставил говорящий. Поля для сценария и настроек тайминга нет: запишите реплику так, как она должна звучать, и лицо последует за ней секунда в секунду.
Портрет остаётся сценой
Одежда, волосы, фон и кадр берутся прямо из изображения. Вокруг лица ничего не перерисовывается, поэтому ведущий, персонаж или лицо бренда узнаваемо остаются одним и тем же человеком от ролика к ролику. Результат компактный — около 0,2 мегапикселя при 25 кадрах в секунду (фото 16:9 вернулось в 640×352, портрет 3:4 — в 400×544), так что рассчитывайте на ленты и окна чатов, а не на полный экран.
Параметры запроса
| Параметр | Обязательно | Описание |
|---|---|---|
image_url | Да | Лицо, которое будет говорить. Один человек, смотрящий примерно в камеру, при ровном свете; лучше всего кадр по грудь. Не менее 1 символов |
audio_url | Да | Речь для синхронизации губ, от 3 до 60 секунд, MP3 или WAV. Нужна прямая ссылка на сам аудиофайл; надёжнее всего его загрузить. Не менее 1 символов |
prompt | Нет | Необязательно. Пара слов о мимике или настроении: спокойно, весело, серьёзно. Не более 1000 символов |
mask_url | Нет | Необязательно. Нужна, только если на портрете несколько человек: чёрно-белое изображение того же размера, белое на том, кто должен говорить. Не менее 1 символов |
seed | Нет | Зафиксируйте, чтобы сравнить два запуска с тем же портретом и аудио; оставьте пустым, чтобы каждый раз получать новый вариант. |
Стоимость
$0.018 / секунда результата
Оплата за секунду готового видео, которое длится столько же, сколько ваше аудио, с округлением вверх и минимумом 3 секунды.
Сценарии использования
Ролики с ведущим из одного снимка
Вступления к курсам, обзоры продуктов и еженедельные новости могут снова и снова использовать один утверждённый портрет с новой записью каждый раз. Чтобы сменить язык, достаточно отправить другой аудиофайл с тем же изображением, и один ведущий закрывает несколько рынков.
Персонажи, которые отвечают вслух
Приложения-компаньоны и ролевые игры могут дать персонажу произнести ответ в кадре: оставьте один портрет персонажа, превратите ответ в речь и отправьте пару. Даже короткий ответ рендерится минуту-две, поэтому запускайте задачу, пока текстовый ответ уже на экране.
Руководство по промптам и практические советы
Выбирайте портрет ради рта
Двигается рот, поэтому отдайте ему пиксели: кадр по грудь, лицо примерно к камере, ровный свет и ничего перед губами. Солнечные очки, выраженный профиль и мелкие лица на общем плане — обычные причины странного результата.
Чистый звук важнее громкого
Экспортируйте речь без фоновой музыки, гулких помещений и наложенных голосов. Обрежьте тишину в начале и в конце: она тоже входит в оплачиваемую длину. Держите каждый файл в пределах от трёх до шестидесяти секунд, а длинные сценарии делите по естественным паузам.
Промпт для настроения, маска для говорящего
Поле prompt немного направляет мимику — спокойно, весело, серьёзно, — но не меняет, кто и где говорит. Если на портрете несколько человек, передайте mask_url, где говорящий белый на чёрном, того же размера, что и изображение. Зафиксируйте seed, чтобы сравнить две записи на одном портрете.
Быстрый старт API
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "spicyapi/talking-avatar-v1/talking-avatar",
"input": {
"audio_url": "https://example.com/reference.mp3",
"image_url": "https://example.com/reference.png"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
Аутентификация, полная схема, опрос статуса и обработка ошибок описаны в справочнике API.
