Verified Windows Guide15 min readTested on Windows OS • NVIDIA Tesla T4 (16GB VRAM)

SadTalker Windows WebUI Installation Guide: Zero to Hero Tutorial

A complete, step-by-step tutorial for installing and running SadTalker WebUI locally on Windows OS. Tested and benchmarked on a dedicated Windows system equipped with an NVIDIA Tesla T4 GPU (16 GB VRAM), including verified solutions for PyTorch CUDA setup, model weights (sadtalker.zip), the Gradio Row.style bug, standalone FFmpeg PATH configuration, LMDB compilation fixes, and empirical execution benchmarks.

SadTalker Gradio Web UI running locally on Windows OS at http://127.0.0.1:7860
Verified local installation: SadTalker Gradio WebUI running at http://127.0.0.1:7860 on a dedicated Windows system with NVIDIA GPU acceleration.

1. Hardware & System Prerequisites

SadTalker generates talking-head video clips by calculating 3D Morphable Model (3DMM) coefficients, audio spectrogram bins, and rendering neural face patches. Running this on a Windows workstation requires adequate GPU compute and dedicated VRAM.

ComponentTested SystemMinimum RequiredRecommended Consumer GPU
Operating SystemWindows Server 2022 (64-bit)Windows 10 (64-bit)Windows 10 / Windows 11 (22H2+)
GPU ModelNVIDIA Tesla T4NVIDIA GTX 1660 / RTX 2060NVIDIA RTX 3060 (12GB) / RTX 4070 / 4090
Video RAM (VRAM)16 GB GDDR66 GB VRAM (256px crop mode)12 GB+ VRAM (512px with GFPGAN)
System RAM16 GB RAM8 GB RAM16 GB – 32 GB RAM
Free Disk Space30 GB available15 GB free spaceFast NVMe SSD for checkpoint loading
Python VersionPython 3.8.20Python 3.8.x strictlyDo not use Python 3.10, 3.11, or 3.14

2. Step 1: NVIDIA GPU Driver & CUDA Verification

Before installing Python or AI libraries, verify that Windows recognizes your NVIDIA graphics hardware and that the display driver provides CUDA compute capability.

1.1 Downloading NVIDIA Driver for Tesla T4 / Workstation

On NVIDIA's official driver portal, select Data Center / TeslaT-SeriesTesla T4Windows Server 2022 (or Windows 10/11 64-bit for GeForce RTX cards):

NVIDIA Driver page showing Data Center Tesla T4 configuration on Windows

1.2 Extracting Driver Installation Files

Run the downloaded installer executable to unpack the driver files to C:\NVIDIA\DisplayDriver\...:

NVIDIA installer unpacking driver files to C:\NVIDIA

1.3 Installing Graphics Driver Components

Proceed through the standard installer dialog and restart Windows when prompted:

NVIDIA Graphics Driver installation progress window

1.4 Verifying GPU via nvidia-smi in PowerShell / CMD

Open PowerShell or Command Prompt and run nvidia-smi to verify hardware telemetry:

nvidia-smi command showing Tesla T4 16GB, Driver 538.15, CUDA 12.2 on Windows
GPU 0: Tesla T4 (UUID: GPU-...)
Driver Version: 538.15 | CUDA Version: 12.2
Total VRAM: 15360 MiB (~15.3 GB available)
Compute Mode: Default (Ready for PyTorch CUDA)
Key Distinction: The CUDA Version: 12.2 displayed by nvidia-smi indicates the maximum CUDA version your driver supports. SadTalker will run PyTorch with CUDA 11.3 wheels without needing a separate full CUDA Toolkit installation.

3. Step 2: Python 3.8, Git & Environment Activation

SadTalker was engineered specifically around Python 3.8. Installing modern versions like Python 3.10, 3.11, or 3.14 will cause severe wheel build failures because older dependencies (such as PyTorch 1.12.1+cu113 and LMDB) do not provide pre-compiled wheels for newer Python ABIs.

2.1 Install Python 3.8.x (64-bit)

Get the official Windows installer: Python 3.8.10 Windows x86-64 executable installer.

⚠️ CRITICAL: Check the box labeled “Add Python 3.8 to PATH” at the bottom of the first setup screen before clicking Install Now.

2.2 Install Git for Windows

Download and install Git for Windows (64-bit). Keep default settings during setup.

2.3 Verifying Python & Git Versions in Windows Terminal

Open a new Command Prompt or PowerShell window and verify that Python 3.8 and Git are detected:

Verifying python 3.8.20, conda 24.11.3, and git 2.47.1 versions in terminal
C:\> python --version
Python 3.8.20
C:\> git --version
git version 2.47.1.windows.1

2.4 Creating & Activating the “sadtalker” Environment

To keep your Windows system clean and isolate package versions, create a dedicated Python 3.8 environment named sadtalker:

Step 2.4a • Accept Conda Terms of Service (if prompted):
Accepting Conda Terms of Service prompt
Step 2.4b • Create Python 3.8 Environment:
conda create -n sadtalker python=3.8 output in terminal
conda create -n sadtalker python=3.8 -y
Step 2.4c • Activate Environment:
conda activate sadtalker active prompt showing (sadtalker) in terminal
conda activate sadtalker

4. Step 3: Install PyTorch with CUDA in Activated Environment

Immediately after activating the environment, you must install the CUDA-accelerated PyTorch build. Do not wait until running scripts later. SadTalker requires PyTorch 1.12.1 compiled with CUDA 11.3:

3.1 Running pip install torch torchvision torchaudio

With (sadtalker) active, run the CUDA wheel installation command:

pip torch 1.12.1+cu113 and torchvision during installation in Windows environment
(sadtalker) C:\> pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

Note: The PyTorch wheel is ~2.2 GB. Let the installation finish completely before proceeding to the next step.

5. Step 4: Standalone FFmpeg Setup (Why Conda Fails)

FFmpeg is required by SadTalker to extract audio waveforms, encode video streams, and multiplex audio onto animated frames. However, on Windows, installing FFmpeg through Conda causes dynamic library linking failures.

The Windows FFmpeg Gotcha

Why “conda install ffmpeg” Fails on Windows

When installing FFmpeg via Conda on Windows, executing FFmpeg triggers missing entry point errors:libfontconfig-1.dll was not found andlibintl_dgettext could not be located:

Windows DLL error popup showing libfontconfig-1.dll and libintl_dgettext entry point failure with Conda FFmpeg

The Foolproof Solution: Standalone Gyan.dev Release Essentials

To avoid all DLL conflicts, get a statically compiled release build from Gyan.dev (the official Windows build maintainer recognized by FFmpeg.org):

Step 4.1 • Download ffmpeg-release-essentials.zip:

Download: Gyan.dev FFmpeg Builds Portal (select ffmpeg-release-essentials.zip):

 ffmpeg-release-essentials.zip from gyan.dev
Step 4.2 • Extract to C:\ffmpeg\bin:

Extract the zip so that the bin folder contains ffmpeg.exe, ffplay.exe, and ffprobe.exe:

Extracted C:\ffmpeg bin folder showing ffmpeg.exe, ffplay.exe, ffprobe.exe
Step 4.3 • Add FFmpeg to Windows PATH:

For your current command prompt session:

set PATH=C:\ffmpeg\ffmpeg-9.0.2-essentials_build\bin;%PATH%

Permanent: Open Windows “Edit the system environment variables” → “Environment Variables” → select “Path” → New → paste your bin path.

6. Step 5: Clone SadTalker Repository

Open Command Prompt or PowerShell, navigate to your desired directory, and clone the official SadTalker repository:

5.1 Cloning the Repository via Git

git clone https://github.com/OpenTalker/SadTalker.git running in Windows Command Prompt
cd C:\Users\Administrator
git clone https://github.com/OpenTalker/SadTalker.git
cd SadTalker

7. Step 6: Get Model Weights (sadtalker.zip & GFPGAN)

SadTalker requires two sets of model files to operate offline: the SadTalker checkpoints and the GFPGAN offline face restoration weights.

Direct Links for Model Weights

1. SadTalker Weights Archive (sadtalker.zip)
Contains 256px, 512px safetensors & mapping models
Get sadtalker.zip (Google Drive)
2. GFPGAN Offline Weights Package
Contains GFPGANv1.4, ResNet50 detection, parsing & alignment models
Get GFPGAN Weights (Google Drive)

6.1 Downloading Weights from Google Drive

Click Download Anyway to obtain the zipped model packages:

Google Drive for SadTalker checkpoints and GFPGAN weights archive

6.2 Verifying Folder Placement via “dir” Command

Extract sadtalker.zip into SadTalker\checkpoints\ and the GFPGAN weights into SadTalker\gfpgan\weights\. Then verify in terminal:

dir checkpoints and dir gfpgan\weights in PowerShell verifying required weight files
Checkpoints Directory (C:\Users\Administrator\SadTalker\checkpoints\):
  • • mapping_00109-model.pth.tar (155 MB)
  • • mapping_00229-model.pth.tar (155 MB)
  • • SadTalker_V0.0.2_256.safetensors (279 MB)
  • • SadTalker_V0.0.2_512.safetensors (279 MB)
GFPGAN Directory (C:\Users\Administrator\SadTalker\gfpgan\weights\):
  • • alignment_WFLW_4HG.pth (198 MB)
  • • detection_Resnet50_Final.pth (109 MB)
  • • GFPGANv1.4.pth (348 MB)
  • • parsing_parsenet.pth (84 MB)

8. Step 7: Launch SadTalker WebUI (webui.bat)

Now that Python, PyTorch with CUDA, FFmpeg, and model weights are in place, start the local Gradio interface using the Windows batch launcher webui.bat:

7.1 Starting the Batch Launcher

Run webui.bat inside the SadTalker directory. The terminal initializes the environment and reports the local URL:

webui.bat execution in Windows Command Prompt showing local server launch on http://127.0.0.1:7860
✓ Look for: Running on local URL: http://127.0.0.1:7860

9. Step 8: Fixing Gradio Row.style Error

The Error: AttributeError: 'Row' object has no attribute 'style'

If your launcher pulled a newer Gradio version during installation, SadTalker crashes immediately with:

AttributeError: 'Row' object has no attribute 'style'

The Permanent Fix (Gradio 3.30.0):

Press Ctrl + C in your terminal to stop the process, then force-install Gradio 3.30.0 into the environment:

pip install gradio==3.30.0

If you are using the virtual environment created by webui.bat:

.\venv\Scripts\python.exe -m pip install gradio==3.30.0

Then relaunch:

webui.bat
✓ Open your Windows browser to: http://127.0.0.1:7860

10. Step 9: Verify PyTorch CUDA & GPU Access in Python

Do not rely solely on nvidia-smi. Confirm that Python actively detects your NVIDIA GPU device:

9.1 One-Line CUDA Detection Test

python -c "import torch; print('Torch:', torch.__version__); print('CUDA available:', torch.cuda.is_available()); print('GPU:', torch.cuda.get_device_name(0))"
Torch: 1.12.1+cu113
CUDA available: True
GPU: Tesla T4

11. Step 10: Edge Cases: Visual C++ & LMDB Wheels

If you ever manually install requirements (pip install -r requirements.txt), the lmdb package attempts to compile native C++ code, throwing:Microsoft Visual C++ 14.0 or greater is required.

10.1 Option A: Visual Studio Build Tools Setup

Install Visual C++ Build Tools and check Desktop development with C++:

Visual Studio Build Tools options showing Desktop development with C++ selected

10.2 Option B: Fast Pre-Built LMDB Wheel (Bypassing Compiler)

Alternatively, bypass installing the multi-gigabyte Visual Studio toolchain by installing the compatible binary wheel:

pip install lmdb==1.4.1 command output showing pre-built wheel installation
pip install lmdb==1.4.1

12. Step 11: Live Inference Showcase (Input vs Output)

Below is the verified test run executed on our dedicated Windows workstation. We supplied a high-resolution static female portrait together with a 14.36-second speech narration audio file. SadTalker synthesized natural 3D head motion, eye blinks, and mouth lip-sync without any camera footage:

11.1 Input 1: Source Portrait (1122×1402)

A high-resolution photo of a presenter with clear facial features and front-facing lighting:

Baseline input portrait: professional female speaker
File: speaker-image.webp
11.2 Input 2: Driven Audio Track (14.36s Narration)

Standard 16kHz mono speech audio narration used to drive mouth articulation and head trajectory:

File: sadtalker-female-narration-audio.wav (Duration: 14.36 seconds)
Synthesized Result • 1120×1036

11.3 SadTalker Generated Video Output

Generation Parameters: --preprocess full --still
Render Duration: 359 total video frames @ 25 FPS (14.36 seconds).
Video Compression: Re-encoded to H.264/AAC at 1.5 MB with faststart metadata (54% smaller than raw output).

13. Step 12: Empirical Inference Benchmark on NVIDIA Tesla T4

To profile latency on Windows without Gradio overhead, we executed the model directly via PowerShell's Measure-Command utility:

12.1 PowerShell Measure-Command Terminal Output

Progress bars and stopwatch duration recorded on our dedicated Windows workstation:

PowerShell Measure-Command execution output on Windows showing stage progress and 5m 54s execution time
powershell -Command "Measure-Command { python inference.py --driven_audio .\narration.wav --source_image .\speaker.png --result_dir .\results_benchmark --preprocess full --still }"
Execution StageProgress & SpeedElapsed TimeTechnical Explanation
Stage 1: Landmark Det1/1 [10.47 it/s]0.09sDetects facial contour and 68 landmark points on the static input image.
Stage 2: 3DMM Extraction1/1 [76.57 it/s]0.01sReconstructs 3D Morphable Model head shape coefficients.
Stage 3: Mel Spectrogram359/359 [27,500 it/s]0.01sExtracts acoustic frequency bins across the 14.36s audio track.
Stage 4: Audio2Exp Net36/36 [288.44 it/s]0.12sMaps audio phonemes into animated facial expression coefficients.
Stage 5: Face Renderer180/180 [1.55 it/s]1 min 56 secNeural generator renders warped facial frames on NVIDIA Tesla T4 Tensor Cores.
Stage 6: SeamlessClone Blending359/359 [1.99 it/s]3 min 00 secPoisson seamless cloning pastes animated face back into the full-size portrait.
Total Wall-Clock Time359 Frames @ 25 FPS5 min 54.16 sec354.16 seconds total (~24.6 seconds of render time per second of video).
Latency Analysis:

Stages 1 through 4 take less than 0.3 seconds combined. The two primary computational steps are Face Renderer (1.55 it/s) and CPU-bound seamlessClone (1.99 it/s). If you run with --preprocess crop instead of full, the seamlessClone stage is bypassed, cutting total generation time in half (under 2 minutes).

14. Step 13: WebUI Usage & Parameter Guide

Once http://127.0.0.1:7860 opens in your Windows browser, configure each parameter according to your desired quality:

Preprocess Mode

  • crop: Crops tightly around the face. Fastest render speed.
  • resize: Scales input directly without face detection cropping.
  • full (Recommended): Preserves the full image composition and seamlessly blends animated face back.
  • extcrop / extfull: Extended bounding boxes for wider head tilts.

Still Mode

Enabling Still Mode restricts head rotation and keeps the neck/torso stationary, focusing animation on lips and eye blinks.

Best for: Corporate headshots, avatar presentations, and news broadcasts.

Face Enhancer (GFPGAN)

Restores fine facial texture, sharpening teeth, eyelids, and skin pores on the final video output.

Impact: Increases visual fidelity substantially, but increases render time by ~20-30%.

Expression Scale & Pose

Controls facial movement intensity (Default: 1.0). Higher values (1.2 to 1.5) produce wider mouth shapes and stronger emotion.

Pose Style: Range 0 to 45 adjusts the head pose variety.

15. Step 14: Quick Daily Startup Script

Once setup is complete, you never need to repeat any installation steps. Create a desktop shortcut or batch script namedstart_sadtalker.batfor one-click daily launches:

start_sadtalker.bat
@echo off
cd /d C:\Users\Administrator\SadTalker
set PATH=C:\ffmpeg\ffmpeg-9.0.2-essentials_build\bin;%PATH%
call webui.bat

16. Frequently Asked Questions

Related Guides & Benchmarks