Seedream 5.0 Pro ya está aquí | Pruébalo en el Generador de Imágenes →

Sync Lipsync 2 Pro

sync /

Lipsync-2-pro creates studio-grade lip synchronization for video-to-video editing in minutes, not weeks. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

digital-human
Entrada

Inactivo

$0.08por ejecución·~12 / $1

EjemplosVer todo

Modelos relacionados

README

sync/lipsync-2-pro — Pro Audio-to-Lipsync

Lipsync-2-pro is a zero-shot model for generating realistic lip movements that match spoken audio. It works out of the box—no training or fine-tuning—and preserves the speaker’s natural style across languages, cameras, and video types. From live-action footage to animated or AI-generated faces, it brings broadcast-grade dubbing and dialogue editing into a simple API call.

What it does

  • Zero-shot lipsync – Just provide a video and an audio track; the model automatically re-animates the mouth to match the speech.
  • Style preservation – Learns each speaker’s characteristic timing and articulation and keeps that “signature delivery” even when the language changes.
  • Cross-domain support – Works on real humans, 2D/3D animation, and synthetic/AI avatars.
  • Flexible workflows – Use it for dubbing, rewriting individual lines in post, or re-animating entire performances.

Key capabilities

  • Expressiveness control – Internally balances how “subtle vs. animated” the lipsync is, so results can match calm talking-head news, energetic vlogs, or stylised characters.
  • Active speaker detection – In multi-person scenes, the system can focus lipsync on the currently speaking face instead of blindly animating everyone.
  • High-fidelity animation – Preserves identity, lighting, background and facial structure; only the mouth and local expressions are changed.
  • Record once, edit forever – Change lines after shooting without new takes; keep the original performance and camera work.
  • AI dubbing for any video – Pair with TTS or translation models to localise existing content into new languages.

Parameters

  • video* Input video to be re-synced (URL or upload). Works best with relatively stable talking-head or upper-body shots.

  • audio* Target speech (URL or upload). The new lip motion will follow this track.

  • sync_mode Controls how audio and video lengths are aligned:

  • cut_off – Trim to the shorter of audio or video (default, safest).

  • loop – Loop the shorter track until the longer one finishes.

  • bounce – Ping-pong the video when looping (forward–back–forward…).

  • silence – Pad missing audio with silence.

  • remap – Time-warp to better match durations.

Output: a new MP4 video with updated lipsync.

How to use

  1. Upload or paste URLs for video and audio.
  2. Choose an appropriate sync_mode based on whether you want trimming, looping, or padding.
  3. Submit the job and wait for processing to complete.
  4. Download the result and review; if needed, adjust audio, sync_mode or source video and re-run.

Pricing

Billing is purely based on audio length.

  • Base rate: $0.08 per second of audio
Audio length (seconds)Price (USD)
5$0.40
10$0.80
15$1.20
30$2.40
60$4.80

You can estimate other costs by multiplying the audio duration (in seconds) by $0.08/s; charges scale linearly with length.

More Models to Try

  • WaveSpeedAI / InfiniteTalk WaveSpeedAI’s single-avatar talking-head model that turns one photo plus audio into smooth, lip-synced digital presenter videos for tutorials, marketing, and social content.

  • WaveSpeedAI / InfiniteTalk Multi Multi-avatar version of InfiniteTalk that drives several characters in one scene from separate audio tracks, ideal for dialog-style explainers, interviews, and role-play videos.

  • Kwaivgi / Kling V2 AI Avatar Standard Cost-effective Kling-based AI avatar model that generates natural talking-face videos from a single reference image and voice track, suitable for everyday content and customer support.

  • Kwaivgi / Kling V2 AI Avatar Pro Higher-fidelity Kling V2 avatar model for premium digital humans, offering smoother motion, better lip-sync, and more stable faces for commercials, brand spokespeople, and product demos.

Nota:Este sitio web utiliza modelos de IA proporcionados por terceros.

Lipsync 2 Pro API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/sync/lipsync-2-pro with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Lipsync 2 Pro below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
    "audio": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3",
    "sync_mode": "cut_off"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/sync/lipsync-2-pro" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "$TASK" | jq -r '.urls.get // empty')
if [ -z "$RESULT_URL" ]; then
  RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
    -H "Authorization: Bearer $WAVESPEED_API_KEY")
  RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  case "$STATUS" in
    completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "$STATUS" >&2; exit 1 ;;
  esac
done
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/sync/lipsync-2-pro";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
        "audio": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3",
        "sync_mode": "cut_off"
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
    "audio": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3",
    "sync_mode": "cut_off"
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/sync/lipsync-2-pro", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Lipsync 2 Pro API — Frequently asked questions

What is the Lipsync 2 Pro API?

Lipsync 2 Pro is a Sync model for talking-avatar generation, exposed as a REST API on WaveSpeedAI. Lipsync-2-pro creates studio-grade lip synchronization for video-to-video editing in minutes, not weeks. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Lipsync 2 Pro API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/sync/sync-lipsync-2-pro.

How much does Lipsync 2 Pro cost per run?

Lipsync 2 Pro starts at $0.080 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Lipsync 2 Pro accept?

Key inputs: `video`, `audio`, `sync_mode`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/sync/sync-lipsync-2-pro.

How long does Lipsync 2 Pro take to generate?

Median end-to-end generation time on WaveSpeedAI is around 95 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Lipsync 2 Pro outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (Sync). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Sync Lipsync 2 Pro | AI Digital Human API | WaveSpeedAI