Skip to content
Catalog

cn8/avatar-cloud

Send a photo of a face and a piece of speech; get back a video of that face

Learn more about Avatar (Cloud)
Videoasync (job)Instant previewavatarvideogeneration

Input

Portrait photo
Audio
Model
Resolution

Audio up to 60s at 720p. The video is exactly as long as the audio, and that is what you pay for.

Sign in to run this.

Result

The generated video will appear here.

Overview

Send a photo of a face and a piece of speech; get back a video of that face saying it, with the lips and head motion matched to the audio. The engine is BytePlus OmniHuman, called as a cloud service — there is no queue behind a GPU of ours, so a job's wait does not depend on what else is rendering.

The output is exactly as long as the audio you send, and that is also what you pay for. Nothing is generated beyond the end of the speech.

One asynchronous job: submit, get a job id, poll GET /v2/jobs/{job_id}.

Key capabilities

Photo + audio → talking video

A single front-facing portrait and an audio track are all the input there is. Lip-sync, head motion and expression come from the audio.

Output length = audio length

The video ends when the speech ends, so the duration you are billed for is the duration you supplied. No padding, no rounding up to a fixed clip length.

Two models, three tiers

omnihuman-1-5 renders 720p up to 60s or 1080p up to 30s; omnihuman-1-0 renders 720p up to 15s. Audio longer than the tier's limit is rejected before the job starts, so an over-long clip costs nothing.

Portrait check before you spend

avatar-image-evaluate scores a photo for face visibility and sharpness. It is synchronous and cheap; running it first turns a wasted generation into a two-credit answer.

Idempotent submits

The gateway request id is the idempotency key — a retried submit returns the existing job instead of starting (and charging for) a second render.

When to use it

Course narration with a presenter

Turn a recorded voice-over into a presenter reading it, without filming anyone.

Localised spokesperson

Dub a message into another language, then re-voice the same portrait with the translated audio.

Product and support clips

Short explainers where a face reads a script that changes often enough that filming is impractical.

Input & output

input

imageUrl (a portrait photo) and audioUrl (the speech). Optional model and resolution.

JSON bodyImage URL (jpg/png)Audio URL (mp3; wav verified)

output

A job id immediately; when the job completes, result_data.data.output_url carries the finished MP4 as a presigned URL, and result_data.data.duration_seconds is the billed length.

JSON (job)Video URL (MP4, in result_data)

Guides & tips

Give it audio it can work with

Choosing the tier

Longer than a minute

Specs

0
[object Object]
1
[object Object]
2
[object Object]
3
[object Object]
4
[object Object]
5
[object Object]

Schema

Request body

imageUrlrequiredstring

Public URL of the portrait photo. One clearly visible, front-facing face.

audioUrlrequiredstring

Public URL of the speech audio. MP3 is documented; WAV is verified. The video will be exactly this long.

modelstring · default: omnihuman-1-5

Generation model. omnihuman-1-5 supports longer audio and 1080p.

enum: omnihuman-1-5, omnihuman-1-0

resolutionstring · default: 720p

Output resolution. 1080p is available on omnihuman-1-5 only and halves the audio limit to 30s.

enum: 720p, 1080p

expected_durationnumber

Length of your audio in seconds. Used only to size the credit hold at submission; the final charge is always the real output length. Omit it and the tier maximum is held instead.

Pricing

Billed per second of output video. Because the output ends with the audio, the number of seconds you are charged for is the length of the audio track you submitted — known before you send it.

The charge is settled from the finished video's real duration. At submission the gateway holds an estimate: expected_duration when you send it, otherwise the maximum the chosen tier allows. A held estimate is not a charge; the difference is released when the job settles.

Async jobs are billed only when they complete successfully. A rejected submit (audio too long, unreachable URL, failed portrait check) costs nothing.

A 10-second clip costs 240 credits, a 30-second clip 720, a 60-second clip 1440.

The portrait check (avatar-image-evaluate) is 2 credits per call and is charged separately.

FAQ

Related models