CVPR 2023 Research Paper • Deep Technical & Practical Guide

How SadTalker Turns a Single Photo & Audio into a Talking Video

A comprehensive visual guide to SadTalker's 3D Morphable Model (3DMM) pipeline — from extracting facial coefficients and generating audio-driven head pose, to tuning Gradio & CLI parameters for broadcast-quality talking avatars.

The Scientific Foundation

Why 3D Motion Coefficients Beat Traditional 2D Lip-Sync

Most earlier talking-photo software (such as classic Wav2Lip implementations) relied on 2D mouth-region inpainting: they identified the mouth landmarks on a photo and replaced the lips frame-by-frame with generated phoneme pixels. While the lips moved in time with speech, the surrounding head, neck, eyes, and brow remained completely motionless — producing an unnatural, uncanny "puppet" effect.

SadTalker, published at CVPR 2023 by researchers from Xi'an Jiaotong University, Tencent AI Lab, and Ant Group ("SadTalker: Learning Realistic 3D Motion Coefficients for Stylized Audio-Driven Single Image Talking Face Animation"), solved this by introducing an intermediate 3D representation.

Instead of generating video pixels directly from audio, SadTalker uses audio waveforms to synthesize 3D Morphable Model (3DMM) coefficients first. This isolates facial geometry, speech expression, and 6-degrees-of-freedom head pose into mathematical vectors before warping the original photo.

100% Likeness
Warps the original image pixels rather than generating a synthetic face from scratch.
6-DOF Pose
PoseVAE models natural head nodding, tilting, and yaw synchronized to speech rhythm.
GFPGAN HD
Integrated face super-resolution restores crystal-clear dental and ocular details.
At a Glance • Transformation Flowv0.0.2 Standalone
Input ASingle Still PhotoPNG/JPG • 512×512 or higher
Face Identity
+
Input BDriven Speech AudioWAV/MP3 • 16kHz recommended
ExpNet & Pose
↓
Generated Talking Video25 FPS MP4

Full head choreography, realistic lip articulation, organic eye blinks, and preserved source identity.

Want to test real presets?Open Demo Lab →
Live Demonstration

Photo + Audio → Talking Video in Action

Below is an actual generation rendered through SadTalker's 512px pipeline with Still Mode and GFPGAN face restoration. Notice how the corporate presenter maintains steady eye contact while the mouth precisely articulates English consonants.

Step 1 • Input ImageSource Photo
SadTalker Source Input Portrait

Subject: Studio Corporate Presenter

Resolution: 512×512 PNG, front-facing

Provides base geometry, skin tone, hair, and lighting reference.

Step 2 • Driven Audio11.2s Audio
Corporate Male VoiceWAV • 16kHz Studio Narration

Speech Engine: ExpNet & PoseVAE

Timing: Phonemes map to 280 video frames

Audio drives temporal lip articulation and rhythmic nodding.

Step 3 • Output VideoGenerated Video
512×512 HD--stillGFPGAN v1.4

Notice the natural teeth clarity, steady posture, and zero background jitter.

💡Want to test 4 other character voices (including conversational American female, young creator, and virtual avatars)?
Explore All Presets in Demo Lab →
Practical User Manual

Configuring SadTalker: Visual Parameter Guide

Whether you are running SadTalker through the Gradio Web UI, Google Colab, or CLI scripts, these six core parameters determine video composition, head gesture intensity, and visual fidelity.

1. Preprocess Mode--preprocess [mode]

Choosing the Right Image Framing

SadTalker provides five preprocessing methods to crop and frame the input portrait before neural animation:

crop (Default): Auto-detects face landmarks and tightly centers the face. Best for social avatars, portrait videos, and fastest inference.
resize: Rescales the entire image without cropping out the frame borders. Useful when the input is already tightly composed.
full: Animates the face region and seamlessly pastes it back onto the original high-resolution background. Preserves half-body composition, clothing, and office scenery.
extcrop & extfull: Extended bounding boxes with extra margin, allowing dynamic head tilts without clipping against frame boundaries.
Pro Tip: For corporate presentations and webinars with shoulders visible, use --preprocess full --still to keep the torso anchored.
SadTalker Preprocess Options in Gradio UI
UI Preview: Preprocess dropdown options (crop, resize, full, extcrop, extfull)
SadTalker Pose Style Slider in Gradio UI
UI Preview: Pose Style slider ranging from 0 to 45
2. Pose Style Slider--pose_style [0-45]

Controlling Head Motion & Expressiveness

SadTalker's PoseVAE model maps audio pacing into a 46-dimensional learned latent space of natural human head gestures. The slider controls the sampled motion style:

0 to 10 (Subtle & Calm): Minimal head rotation. Keeps the presenter facing forward with subtle rhythmic nodding. Ideal for educational lectures and financial disclosures.
11 to 25 (Natural Conversational): Balanced nodding, natural pitch shifts, and realistic pauses. Great for podcast avatars and YouTube explainers.
26 to 45 (Highly Dynamic): Energetic head tilting and emotional body sway. Excellent for storytelling, comedy sketches, and animated character dialogue.
3. Face Model Resolution--size 256 | 512

Balancing VRAM Usage vs. Facial Sharpness

SadTalker provides two distinct checkpoint architectures for the neural warping generator:

256px Resolution
  • • VRAM Footprint: ~3.5 GB
  • • Speed: ~18-24 FPS (Fast)
  • • Ideal for: GTX 1650/1060, laptops, quick preview iterations
512px Resolution (Recommended)
  • • VRAM Footprint: ~6.2 GB
  • • Speed: ~4-8 FPS
  • • Ideal for: 4× pixel density, sharp teeth, clean eye reflections

Want exact rendering times and VRAM stats on RTX 3060, 3090, and 4090? Check out our dedicated SadTalker GPU Benchmark Guide →

SadTalker Face Model Resolution Selection
UI Preview: Face Model Resolution toggle (256 vs 512)
SadTalker Audio Upload Interface
UI Preview: Driven Audio file upload & Text-to-Speech conditioning
4. Audio Conditioning--driven_audio [file]

Speech Waveforms, Phonemes & TTS

SadTalker extracts acoustic features from raw audio to drive both mouth shapes and head cadence. For the cleanest lip-sync:

Recommended Format: Uncompressed 16-bit WAV sampled at 16,000 Hz (mono). MP3 files are automatically converted via FFmpeg.
Vocal Isolation: Minimize loud background music or ambient hiss. Clean speech waveforms allow ExpNet to distinguish consonants like "M", "B", "P" (bilabial closures) from open vowels.
AI Voice Clones / TTS: Works seamlessly with synthetic audio from ElevenLabs, OpenAI TTS, Azure Speech, or Bark.
5. Enhancement & Generation--enhancer gfpgan --still

Still Mode, Batching & GFPGAN

The final generation controls fine-tune the render quality and computational efficiency:

Still Mode (--still): Suppresses large head movements while keeping full mouth articulation and natural eye blinks. Ideal when you want a steady news-anchor demeanor.
Face Enhancement (--enhancer gfpgan): Passes every rendered frame through GFPGAN v1.4 to restore skin pores, clean teeth, and razor-sharp iris reflections.
Batch Size (--batch_size): Number of frames rendered simultaneously. Set to 1 on 6-8GB GPUs; increase to 2 or 4 on 16-24GB GPUs (RTX 3090 / 4090) to cut render times by 35%.
SadTalker Generate and Face Enhancement Controls
UI Preview: Still Mode toggle, Batch Size slider, and GFPGAN face enhancer
Architectural Blueprint

Under the Hood: The 6-Stage Neural Pipeline

SadTalker connects six distinct deep neural network models in an end-to-end inference graph. Explore how each stage transforms static pixels and raw soundwaves into smooth video keyframes.

SadTalker CVPR 2023 Framework: 3DMM Motion Coefficient ArchitectureFigure 2 Overview
SadTalker complete neural pipeline architecture diagram
Key Components: Deep3DFaceReconstruction (3DMM) • ExpNet (Audio-to-Expression) • PoseVAE (Audio-to-Pose) • Face-vid2vid WarpingView GitHub weights setup →
Stage 1 of 6

3D Face Reconstruction (3DMM Coefficients)

3DMM & Deep3DFace

Rather than predicting raw video pixels, SadTalker first projects the 2D source photo into a 3D Morphable Model (3DMM) parameter space using Deep3DFaceReconstruction. This decomposes the face into identity shape (facial geometry), expression coefficients, and 6-DOF head pose (pitch, yaw, roll, and translation).

Why this matters for output realism:

Separates who the person is from how they move, ensuring facial identity never warps or distorts.

Core pipeline dependency
Production Presets

One-Click CLI Recipes for Every Use Case

Running SadTalker via command-line interface? Copy these tested production recipes directly into your terminal or automation scripts.

Studio Quality Corporate Presenter

News-anchor style presentation with steady posture, crisp 512px facial resolution, and GFPGAN face restoration. Ideal for company announcements and explainer videos.

--size 512--still--preprocess crop--enhancer gfpgan
recipe-corporate.sh
bash
python inference.py \
  --source_image ./presenter.png \
  --driven_audio ./narration.wav \
  --result_dir ./results \
  --size 512 \
  --still \
  --preprocess crop \
  --enhancer gfpgan
Recommended For: Corporate training, product demos, e-learning courses
Explore all CLI flags in GitHub Guide →
Technology Landscape

Where SadTalker Fits vs. Other Animation Approaches

Understanding the distinction between audio-driven lip animation (SadTalker) and video-driven portrait reenactment (LivePortrait) helps you choose the right tool for your pipeline.

ArchitecturePrimary InputHead MotionFacial RealismBest Use Case
SadTalker (3DMM)Audio-driven WarpingSingle Photo + Audio (.wav)Synthesized via PoseVAEHigh (GFPGAN detail)Automated avatars, voiceover videos, TTS explainers
LivePortraitVideo reenactmentPhoto + Driving Video (.mp4)Exact actor mimicry (1:1)Extremely fluid eye/lip nuancesHuman actor reenactment, cinematic video dubbing
Wav2Lip2D Lip-sync InpaintExisting Video + Audio (.wav)None (Static Head)Low to Moderate (Mouth blur)Quick lip replacement on pre-recorded interview clips
MuseTalkLatent Diffusion InpaintVideo + Audio (.wav)Follows source clip movementVery High (Diffusion lips)Real-time digital avatars and broadcast dubbing

Want a deep head-to-head comparison?

Read our in-depth technical analysis comparing SadTalker vs LivePortrait with side-by-side video rendering and real RTX 3060 nvtop telemetry.

Read SadTalker vs LivePortrait →
Troubleshooting Guide

Fixing Common Photo-to-Video Artifacts

Encountering strange neck seams, blurry teeth, or unnatural head wobble? Here is how experienced ML engineers resolve common SadTalker issues:

⚠️Issue: Head bobs or wobbles unnaturally

Why it happens: High audio energy can cause PoseVAE to sample aggressive 3D trajectory angles from the latent space.

Fix: Add the --still flag to anchor the 6-DOF translation, or set --pose_style 0 for news-anchor steadiness.
🦷Issue: Teeth or eyes appear blurry or smeared

Why it happens: Standard 256px resolution without enhancement produces soft mouth inpainting when speaking plosives.

Fix: Enable --size 512 --enhancer gfpgan. GFPGAN applies a facial restoration GAN that reconstructs distinct teeth edges and iris reflections.
✂️Issue: Visible neck border or background tearing

Why it happens: Default crop isolates only the face bounding box; when pasted back onto clothing, contrast differences create a seam.

Fix: Switch to --preprocess full or --preprocess extcrop to provide smooth alpha-blended transition margins.
💥Issue: CUDA Out of Memory (OOM) Runtime Error

Why it happens: Running 512px with GFPGAN and a large batch size requires at least 6.5 GB VRAM.

Fix: Set --batch_size 1, downscale to --size 256, or run on free cloud GPUs with our Google Colab notebook →