Alibaba ยท Tongyi Lab

Wan2.2-S2V

The speech-to-video member of the Wan 2.2 family. Given one reference image and an audio track, it generates a video whose lip movement, head motion and gesture follow the audio.

Overview

S2V extends the Wan 2.2 video backbone with audio conditioning. Rather than driving only the mouth region, the audio signal conditions the whole frame, so posture and gesture move with the speech as well.

Audio-conditioned motion

Lip shape, head pose and upper-body movement are generated jointly from the audio track instead of being composited from a separate talking-head module.

Identity from one image

A single reference frame supplies appearance and identity; no per-subject fine-tuning or reference video is required.

Speech and song

The checkpoint is trained on both spoken and sung audio, so it is not restricted to conversational delivery.

Long-form generation

Clips are produced in chunks with motion carried across boundaries, which keeps identity stable past the length of a single window.

Inputs

FieldTypeNotes
imageURLReference frame. A clear, front-facing subject works best.
audioURLDriving audio track. Determines the clip length.
promptstringOptional description of scene, framing and camera behaviour.
seedintOptional. Fix it to make a run reproducible.

Run it

Upload local files first with POST /media/upload/binary and pass the returned URLs, or reference any publicly reachable URL directly.

# 1. submit the job
curl -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/wan-2.2/speech-to-video" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "image": "https://example.com/portrait.jpg",
        "audio": "https://example.com/speech.mp3",
        "prompt": "A woman speaking to camera in a sunlit studio, medium shot",
        "enable_sync_mode": false
    }'

# -> {"code": 200, "data": {"id": "<request-id>", "status": "created", ...}}

# 2. poll until status is "completed"
curl "https://api.wavespeed.ai/api/v3/predictions/<request-id>/result" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY"

# -> {"code": 200, "data": {"status": "completed", "outputs": ["https://..."]}}

Requests are asynchronous: POST returns a request id, then you poll /predictions/<id>/result until status is completed. Set enable_sync_mode: true to have the call block and return outputs directly.

API keys are created in the WaveSpeed dashboard.

Resources