MuseTalk in ComfyUI: Full Setup Guide

Setting up MuseTalk inside ComfyUI enables high-fidelity, real-time audio-driven lip synchronization directly within a visual, node-based workflow.

This zero-to-hero guide provides the complete, tested walkthrough for running MuseTalk in ComfyUI. We documented and verified this setup on an NVIDIA GeForce RTX 4090 with 24 GB VRAM, and previously tested and confirmed full operation on an NVIDIA GeForce RTX 3090 with 24 GB VRAM. Readers with equivalent local hardware can execute this setup directly on their own machine, while cloud users can deploy on on-demand GPU instances in minutes.


MuseTalk Resources to Get Started

Get the verified setup package and tested workflow assets before beginning:

Asset Description Link
MuseTalk ComfyUI Easy v2 Package Custom node bundle, automated installer, isolated environment scripts, and runtime configuration musetalk-comfyui-easy-v2.zip
Tested Workflow & Starter Inputs Exported musetalk-easy-v2.json workflow, starter portrait image, and speech sample MuseTalk-ComfyUI-Workflow-Samples.zip
RTX 4090 Benchmark Output Raw 5-second generated video file produced during our recorded test run musetalk-comfyui-rtx4090-easy-ui-output.mp4

Hardware Specifications & Compatibility

MuseTalk 1.5 combines multiple neural architectures: an SD-VAE autoencoder, a Whisper audio feature extractor, DWPose facial landmark detection, and an audio-conditioned UNet generator. Because these models run concurrently during inference, available VRAM and CUDA capabilities dictate generation speed and batch capacity.

Vast.ai instance template selection with ComfyUI and NVIDIA RTX 4090
Selecting an NVIDIA RTX 4090 GPU instance with pre-configured ComfyUI template

Review the hardware requirements below to decide between running locally or provisioning a cloud GPU:

Configuration Tier GPU & VRAM Supported Settings & Expected Performance
Recommended / Tested NVIDIA GeForce RTX 4090 (24 GB VRAM)
or RTX 3090 (24 GB VRAM)
Full resolution (512×512), Balanced preset, batch size 2, FP16 precision. Real-time generation throughput with zero VRAM bottlenecks.
Mid-Range Workstation NVIDIA RTX 4080 / RTX 3080 (12 GB – 16 GB VRAM) Balanced or Low VRAM preset, batch size 1 to 2, clips up to 15 seconds. Ensure background diffusion models are unloaded from memory.
Entry-Level / Minimum NVIDIA GPU with 8 GB VRAM (RTX 3060 / 4060) Low VRAM preset, batch size 1, FP16 precision, short speech clips (3 to 5 seconds). Suitable for testing and basic clip generation.
macOS / AMD / Intel iGPU Apple Silicon (M-series) / Non-NVIDIA Native CUDA acceleration is required. Mac users should run ComfyUI via a remote Linux GPU instance or test in browser via our Online Playground.

Verifying Your GPU with nvidia-smi

Before executing setup, confirm that your operating system detects the NVIDIA driver and dedicated VRAM:

nvidia-smi
nvidia-smi terminal verification showing NVIDIA RTX 4090 with 24GB VRAM
nvidia-smi command verifying the NVIDIA RTX 4090 with 24,564 MiB total VRAM and CUDA driver

If you are working on your own local Linux workstation equipped with an RTX 4090 or RTX 3090, you can follow every command directly inside your local terminal. If you are using an on-demand cloud provider such as Vast.ai or RunPod, choose an Ubuntu 22.04 base template with PyTorch and CUDA pre-installed.


Why Traditional ComfyUI MuseTalk Nodes Broke

Older third-party community custom nodes attempted to install MuseTalk’s full dependency stack directly into ComfyUI’s root Python virtual environment. This created recurring breakages:

  • MMLab Conflicts: MuseTalk requires specific legacy builds of MMCV, MMEngine, and MMPose compiled against PyTorch 2.0.1+cu118. Updating ComfyUI or installing other modern diffusion nodes often silently upgraded PyTorch to 2.2+, causing MMCV C++ extensions to crash.
  • Hugging Face Hub Incompatibilities: MuseTalk requires pinned transformers and huggingface-hub versions. Modern ComfyUI nodes expecting huggingface-hub 1.x would overwrite these libraries, breaking model weight loaders.
  • Manual Weight Misplacement: Earlier nodes required users to manually sort six different weight repositories across nested diffusers subdirectories, where a single misspelled path resulted in silent failures.

The Isolated Backend Solution

Our Easy UI update decouples the system into two distinct layers:

  1. ComfyUI Host Environment: Retains its standard Python packages, web interface, and workflow management unchanged. No packages are forcefully upgraded or overwritten.
  2. Dedicated MuseTalk Runtime (muse-env): A standalone Python 3.10.18 virtual environment located at /workspace/musetalkai/muse-env. This environment holds the exact pinned PyTorch 2.0.1, MMCV 2.0.1, Whisper, and official MuseTalk 1.5 dependencies.
  3. Custom Node Bridge (MuseTalkAIEasy): When you click Run in ComfyUI, the node passes parameters and file paths to the isolated runtime through a clean subprocess bridge, captures real-time progress, and returns the finished video directly to the canvas player.

Step-by-Step MuseTalk ComfyUI Guide: Zero to Hero

Step 1: Access Your Running ComfyUI

Ensure your ComfyUI server is running. On a local machine, open your browser to your local address (typically http://127.0.0.1:8188). If you are using a cloud GPU instance on Vast.ai, simply click Launch Application next to your running instance to open ComfyUI directly in your browser. You do not need to configure manual SSH tunnels or modify reverse proxy ports.

Accessing ComfyUI directly via the Launch Application button in Vast.ai
Opening ComfyUI directly through the cloud instance application button

Step 2: Upload the Setup Package

Get the musetalk-comfyui-easy-v2.zip package. Upload the archive into your instance workspace folder (e.g. /workspace) using your cloud instance file manager, Jupyter interface, or secure file transfer (SCP).

Uploading musetalk-comfyui-easy-v2.zip into the workspace directory
The musetalk-comfyui-easy-v2.zip archive uploaded into the /workspace directory

Step 3: Extract and Install into ComfyUI

Open your terminal and choose the appropriate installation route below:

Route A: Quick Attach to an Existing Working ComfyUI

If you already have ComfyUI and the MuseTalk backend models installed, attach the updated Easy UI custom node with a single installer script. This backs up any previous node version and registers the new workflows:

cd /workspace
python3 -m zipfile -e musetalk-comfyui-easy-v2.zip /workspace
python3 /workspace/musetalk-comfyui-easy-v2/install_into_comfy.py \
  --comfy /workspace/ComfyUI \
  --base /workspace/musetalkai
Terminal output running unzip and python3 install_into_comfy.py
Terminal execution extracting the package and registering the Easy UI node into ComfyUI

Route B: Full Automated Setup on a Fresh Machine (setup.sh)

If you are setting up on a clean GPU instance or local machine without the backend installed, run the automated setup script. This script installs required system libraries (FFmpeg, libsndfile1), bootstraps Python 3.10 via uv, creates the isolated muse-env virtual environment, clones the official MuseTalk repository, and automatically setup and verifies all model weights:

cd /workspace/musetalk-comfyui-easy-v2
COMFYUI_DIR=/workspace/ComfyUI MUSETALK_BASE=/workspace/musetalkai bash setup.sh

For full manual weight details and file manifests, consult our dedicated MuseTalk Model Weights Guide and Linux Installation Guide.

Step 4: Restart the ComfyUI Service

ComfyUI discovers custom nodes only during initial server startup. Refreshing your browser tab without restarting the backend process will not register the node. In your ComfyUI interface, navigate to Manager → Restart, or restart the ComfyUI process in your cloud supervisor panel.

Restarting ComfyUI service via Manager or Supervisor in Vast.ai
Restarting the ComfyUI service to load the newly registered custom node

To verify from the command line that the node loaded successfully:

curl -sS http://127.0.0.1:18188/object_info/MuseTalkAIEasy | head -n 20

A successfully registered node will return its JSON input schema instead of an empty dictionary {}.

Step 5: Load the MuseTalk Easy v2 Workflow

Refresh your browser. In ComfyUI, open the workflow list and select musetalk-easy-v2.json. Alternatively, drag and drop the musetalk-easy-v2.json file included in the setup archive directly onto the ComfyUI canvas.

Selecting musetalk-easy-v2 workflow in ComfyUI
Selecting the musetalk-easy-v2 workflow from ComfyUI’s default workflow browser

Step 6: Upload Face and Speech Inputs

The Easy UI node features dedicated file picker buttons directly on the node canvas:

  • Click Upload face and choose a portrait photo (PNG or JPG) or an existing portrait video (MP4) from your local computer.
  • Click Upload speech and select your audio speech file (16kHz WAV is recommended; MP3 is fully supported).
MuseTalk Easy Lip Sync custom node with dedicated Upload face and Upload speech controls
The MuseTalk Easy Lip Sync node showing Upload face and Upload speech buttons with live thumbnails

Files upload directly to input/musetalkai/ inside your ComfyUI installation. You can reuse previously uploaded assets at any time via the face and audio dropdown menus without uploading them again. The web interface supports uploads up to 50 MB per file.

Step 7: Configure Generation Settings & Presets

The node provides intuitive presets alongside fine-grained controls for timing, precision, and framing:

Configuring MuseTalk 1.5 parameters including Balanced preset, duration, FPS, and FP16 precision
Configuring generation settings: MuseTalk 1.5 model, Balanced preset, 5 seconds duration, and FP16 precision
Setting Default Value Description & Recommendation
model MuseTalk 1.5 Only verified, installed models appear in this selector. MuseTalk 1.5 provides the sharpest facial detail and most accurate lip closure.
preset Balanced Balanced sets 512px maximum dimension and batch size 2.
Low VRAM sets 512px and batch size 1 for 8 GB–12 GB GPUs.
Custom enables manual dimension and batch size controls.
max_seconds 5 Limits generated video duration between 1 and 30 seconds. Audio is trimmed cleanly; shorter clips are not padded.
audio_start 0.0 Skips the specified number of seconds from the beginning of the speech file before processing.
face_start 0.0 Skips the specified number of seconds from the beginning of a face video. Ignored when using a still photo.
fps 25 Generation framerate: 24, 25, or 30 FPS. Standard MuseTalk models are trained at 25 FPS.
precision FP16 Half-precision floating point reduces VRAM usage significantly while preserving visual quality. Use FP32 only for hardware diagnostics.
face_margin 10 Expands the bounding box around the detected mouth region (0 to 40). Retain default value 10 for natural boundary blending.

Step 8: Queue Inference & Monitor Execution

Click ComfyUI’s standard Queue Prompt or Run button. The canvas highlights the active execution, and progress updates stream in the server log.

ComfyUI execution graph running MuseTalk inference pipeline to completion
Active ComfyUI execution graph running the MuseTalk inference pipeline through completion

Execution Benchmark on NVIDIA RTX 4090 (24 GB VRAM): In our verified benchmark run, generating a complete 5-second 25 FPS video clip (125 rendered frames at 512×512 resolution) took approximately 123.5 seconds end-to-end. This includes face landmark detection via DWPose, Whisper audio latent extraction, diffusion UNet synthesis, and final FFmpeg video/audio re-multiplexing.

Step 9: Output Playback and Video Generation

When generation finishes, the completed video player activates directly inside the MuseTalk node. You can scrub playback with full audio synchronization, verify mouth movement, and click the Open button to save the MP4 to your computer.

Completed 5-second video preview and MP4 download option inside the MuseTalk node
The embedded video player inside the ComfyUI node displaying the finished lip-synced video

Generated videos are also preserved on your host filesystem under ComfyUI/output/musetalkai/<run_id>/result.mp4 along with complete runtime metadata in run.json.


Recorded Video Demonstration

Watch the complete end-to-end recording below showing instance verification on an RTX 4090, node configuration, input uploading, queue execution, and real-time playback:

Recorded demonstration of MuseTalk 1.5 executing inside ComfyUI on an NVIDIA RTX 4090 GPU

Optional: MuseTalk 1.0 Legacy Model Comparison

By default, the model selector offers MuseTalk 1.5 because its weights are verified during initial setup. Checkpoints that are not present on disk are intentionally hidden to prevent execution errors.

If you want to compare outputs against legacy MuseTalk 1.0, you can get the 1.0 model weights (approximately 3.4 GB) into the isolated backend without affecting your 1.5 installation:

cd /workspace/musetalk-comfyui-easy-v2
MUSETALK_BASE=/workspace/musetalkai \
  /workspace/musetalkai/muse-env/bin/python download_legacy.py

Once done, click Refresh files / models in the ComfyUI node. MuseTalk 1.0 (legacy) will appear in the model dropdown. Do not attempt to rename a 1.5 checkpoint to 1.0; both versions utilize distinct UNet architectures.


Troubleshooting & Frequently Asked Questions

Observed Issue Root Cause Resolution Step
Custom node missing or red box in canvas ComfyUI server has not restarted after node installation, or custom node folder was extracted into an invalid path. Ensure custom_nodes/MuseTalkAI exists and restart the ComfyUI server via Manager → Restart. Refresh your browser tab.
Upload buttons not visible in node Browser has cached earlier JavaScript extensions or opened an older workflow. Ensure you loaded musetalk-easy-v2.json and perform a hard refresh in Chrome (Ctrl+F5 or Cmd+Shift+R) to reload preview.js.
CUDA Out of Memory (OOM) VRAM exhausted by high resolution inputs, concurrent diffusion models, or large batch sizes. Switch preset to Low VRAM (batch size 1, FP16), reduce max_seconds to 5, and unload other checkpoints from ComfyUI memory.
No face detected in video / image DWPose facial landmark detector could not locate a frontal face in the input media. Use a clearly illuminated, front-facing portrait. Avoid extreme profile angles, excessive motion blur, or sunglasses.
Workflow JSON export missing media Moving workflow JSON to another computer shows empty file fields or uninstalled models. Workflow JSON files store graph connections, not binary weights or uploads. Install the backend and upload media on the target machine.
Upload failed error Input file exceeds 50 MB upload UI limit or network connection interrupted. Trim large audio/video files locally with FFmpeg prior to upload (see our FFmpeg Setup Guide).

Summary & Next Steps

By encapsulating MuseTalk’s complex machine learning dependencies inside an isolated backend runtime while exposing an intuitive, single-node interface in ComfyUI, you achieve stable lip synchronization without endangering your primary ComfyUI setup. For further optimizations and batch workflows, explore our related guides: