Model Details
Sync Lipsync 2 takes an existing talking-head video and a separate audio track, then regenerates the speaker's mouth movements so they match the new audio precisely. The face, identity, lighting, and background of the source video are preserved while only the lips are re-animated to the supplied speech — making it the right tool for dubbing footage into another language, swapping in re-recorded narration, or correcting an out-of-sync take. Supply a video where a face is clearly visible and the audio you want them to appear to speak, and the model returns a new video with natural, aligned lip motion.
## Best for - Dubbing talking-head footage into another language so the lips match the translated voiceover - Re-voicing an interview, presentation, or ad with a cleaner or re-recorded audio take - Fixing audio drift where the original speech and mouth movements no longer line up - Localizing course, training, or marketing videos across multiple voice tracks
## Choose another model when - You have only an image, not a video, and want a talking avatar from a still — use an image-to-video or avatar model - You want to generate a video from a text prompt rather than re-sync an existing one — use a text-to-video model - You need to generate the speech audio itself from text — pair this with a text-to-speech model first, then feed its output here
## Tips - Use source video where the speaker's face is large, well-lit, and front-facing for the cleanest lip motion - Match the audio length to the video; `sync_mode` controls what happens when they differ
## Advanced Configuration - `sync_mode` decides how the model reconciles a mismatch between video and audio duration: `cut_off` (default) trims to the shorter of the two, `loop` repeats the video to cover longer audio, `bounce` plays the video forward-and-back to fill time, `silence` holds on the video with no added motion past the audio, and `remap` time-stretches to align the two. Set it via the API when your audio and video are not the same length.
To run via the ModelRunner JavaScript client: ```js import { modelrunner } from "@modelrunner/client";
const result = await modelrunner.subscribe("sync/lipsync/v2", { input: { video_url: "https://media.modelrunner.ai/your-talking-head-video.mp4", audio_url: "https://media.modelrunner.ai/your-new-audio.wav", sync_mode: "cut_off", }, }); ```


