audiostringrequired
Speech or song that drives the performance. WAV or MP3, 4-300 seconds, up to 15 MB.
bytedance/omnihuman/2.0OmniHuman 2.0 by ByteDance turns a single image and an audio track into a talking or performing video that follows the audio.
Try the model
PNG, JPEG, WebP, or GIF · 20 MiB maximum
What would you like to do next?
Select an example to load its inputs and result into the playground.
{
"audio": "https://static.sandbase.ai/examples/4e4bda6c-b42a-40d2-8777-ec0c9dc7ca6b/input/8f429735-ac39-48b6-aa3c-360f822d11fa.mp3",
"image": "https://static.sandbase.ai/examples/4e4bda6c-b42a-40d2-8777-ec0c9dc7ca6b/input/117a23db-2541-4338-a76a-11206be9e9e7.png",
"prompt": "She speaks warmly to the camera with natural hand gestures."
}{
"audio": "https://static.sandbase.ai/examples/4b4402b0-ac66-4de9-89d0-c6dadd102228/input/2280d23d-3ccc-4b1f-a855-c799ca34804a.mp3",
"image": "https://static.sandbase.ai/examples/4b4402b0-ac66-4de9-89d0-c6dadd102228/input/d3699201-5618-49d9-91d0-d7a8f340865f.png",
"prompt": "He speaks confidently to the camera in Times Square at night, small natural head movements."
}OmniHuman 2.0 turns a single image and an audio track into a talking or performing video, with lip sync, gestures and expressions that follow the audio.
| Field | Type | Default | Notes |
|---|---|---|---|
image | image URL, required | — | Person or character to animate. 300–6000 px per side, aspect ratio 0.4–2.5, up to 30 MB. |
audio | audio URL, required | — | Speech or song, WAV or MP3, 4–300 seconds, up to 15 MB. |
prompt | string | — | Optional direction for scene, gestures and camera. |
$0.105 per output second; the output is as long as the audio. The quote before submission assumes 5 seconds when the audio length cannot be read.
| Audio | Price |
|---|---|
| 5s audio | $0.525 |
| 30s audio | $3.15 |
| 60s audio | $6.30 |
| Failed runs are not charged. |
Previous version: bytedance/omnihuman/1.5.
Start building
Submit this model through the SandBase Unified Run API.
# The quoted heredoc keeps Unicode and shell metacharacters unchanged.
result=$(curl --fail-with-body --silent \
-X POST "https://api.sandbase.ai/v1/run" \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'SANDBASE_JSON'
{
"model": "bytedance/omnihuman/2.0",
"audio": "https://storage.googleapis.com/falserverless/example_inputs/omnihuman_v15_input_audio.mp3",
"image": "https://storage.googleapis.com/falserverless/example_inputs/omnihuman_v15_input_image.png"
}
SANDBASE_JSON
)
run_id=$(printf '%s' "$result" | jq -r .id)
for attempt in $(seq 1 120); do
status=$(printf '%s' "$result" | jq -r .status)
case "$status" in completed|failed|timeout) break ;; esac
sleep 2
result=$(curl --fail-with-body --silent \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
"https://api.sandbase.ai/v1/run/$run_id")
done
status=$(printf '%s' "$result" | jq -r .status)
[ "$status" = completed ] || { echo "Generation ended: $status" >&2; exit 1; }
printf '%s\n' "$result"Create a SandBase API key and set it in your server environment. All requests use Bearer authentication.
export SANDBASE_API_KEY="YOUR_API_KEY"Keep the key on your server. Do not expose it in browser code or commit it to a repository.
POST to /v1/run with this model ID and its inputs. The request example above includes submission and polling.
Use the returned run ID to poll until the status is completed, failed or timeout. Read output only after completed.
curl "https://api.sandbase.ai/v1/run/$RUN_ID" \
-H "Authorization: Bearer $SANDBASE_API_KEY"Pass a publicly accessible file URL in the model’s image, video or audio field. Supported formats and limits are shown beside each Playground input.
Use the upload or replace control on supported image fields in the Playground. Video URL fields accept a hosted driving video; they do not imply video-upload support.
audiostringrequiredSpeech or song that drives the performance. WAV or MP3, 4-300 seconds, up to 15 MB.
imagestringrequiredPerson or character to animate. 300-6000 px per side, aspect ratio 0.4-2.5, up to 30 MB.
promptstringOptional direction for scene, gestures and camera.
{
"model": "bytedance/omnihuman/2.0",
"audio": "https://storage.googleapis.com/falserverless/example_inputs/omnihuman_v15_input_audio.mp3",
"image": "https://storage.googleapis.com/falserverless/example_inputs/omnihuman_v15_input_image.png"
}A completed run exposes its result in output. The following is the model’s saved example, not a new generation.
[
{
"url": "https://static.sandbase.ai/examples/4e4bda6c-b42a-40d2-8777-ec0c9dc7ca6b/output/678ef1e5-25c7-4172-bccd-e5456509e237.mp4"
}
]