How to Download and Organize MuseTalk Model Weights?

Ask around in MuseTalk support threads and you’ll notice something: most people’s first failed run has nothing to do with their GPU, their Python version, or their input files. It’s the weights. Either a file didn’t finish downloading, or it landed in the wrong folder, and MuseTalk has no way of telling you which of those two things happened. You just get an error and a shrug.


Why There Are So Many Files

Here’s something that trips up newcomers. MuseTalk is not one model in one file. It’s a small collection of models working together, and only one of them was actually trained by the MuseTalk team.

The rest are borrowed, already trained pieces doing supporting jobs:

  • MuseTalk’s own weights do the actual mouth generation
  • The VAE compresses face images and decodes them back afterward
  • Whisper reads the audio and turns it into something the model can work with
  • DWPose handles pose and face detection
  • The face parsing weights figure out which pixels belong to which part of the face
  • SyncNet is used during training to measure lip accuracy

That’s why the download step feels heavier than you might expect. You’re assembling a toolkit, not grabbing a single file.


Option 1: The Download Scripts (Do This One)

The MuseTalk repository ships with scripts that fetch everything and put it in the right place automatically.

If you have a working internet connection and enough disk space, there is almost no reason to do this by hand.

Make sure you’re inside your cloned MuseTalk folder with the conda environment activated, then run the one for your system.

Linux:

sh ./download_weights.sh

Windows:

download_weights.bat

Then leave it alone for a while. This pulls several gigabytes across multiple sources, so on a slower connection it can take a good stretch of time.

Resist the urge to cancel and restart, since a partially downloaded file is exactly the kind of thing that causes confusing errors later.

When it finishes, skip ahead to the verification section below to confirm everything landed correctly.


Option 2: Manual Download

Sometimes the scripts fail. A source might be temporarily unreachable, a corporate network might block something, or you might simply prefer knowing exactly what you’re putting on your machine.

Manual download is completely supported.

You’ll need seven downloads in total.

1. MuseTalk’s trained weights

huggingface.co/TMElyralab/MuseTalk

This is the main event, and it covers both model versions. Version 1.0 uses musetalk.json and pytorch_model.bin. Version 1.5 uses musetalk.json and unet.pth. Grab both sets if you want the option to compare them later.

2. The VAE

huggingface.co/stabilityai/sd-vae-ft-mse

You need config.json and diffusion_pytorch_model.bin from this one.

3. Whisper tiny

huggingface.co/openai/whisper-tiny

Three files here: config.json, pytorch_model.bin, and preprocessor_config.json. All three matter, and forgetting the preprocessor config is a common slip.

4. DWPose

huggingface.co/yzd-v/DWPose

You want dw-ll_ucoco_384.pth.

5. SyncNet

huggingface.co/ByteDance/LatentSync

The file is latentsync_syncnet.pt. This one is used for training rather than inference, so if you only plan to generate videos and never train your own model, it’s less critical. Include it anyway to keep your folder matching the reference structure.

6. Face parsing weights

Google Drive link from the official README

This gives you 79999_iter.pth. Note that it’s hosted on Google Drive rather than Hugging Face, which is occasionally why an automated script chokes on this particular file.

7. ResNet18

download.pytorch.org/models/resnet18-5c106cde.pth

A direct download. It pairs with the face parsing weights and lives in the same folder.


The Folder Structure (Get This Exactly Right)

This is the part that matters most. MuseTalk looks for these files at specific paths, and it will not search your drive to find them if you guess wrong.

Inside your MuseTalk project folder, everything belongs in a models directory arranged like this:

./models/
├── musetalk
│   └── musetalk.json
│   └── pytorch_model.bin
├── musetalkV15
│   └── musetalk.json
│   └── unet.pth
├── syncnet
│   └── latentsync_syncnet.pt
├── dwpose
│   └── dw-ll_ucoco_384.pth
├── face-parse-bisent
│   ├── 79999_iter.pth
│   └── resnet18-5c106cde.pth
├── sd-vae
│   ├── config.json
│   └── diffusion_pytorch_model.bin
└── whisper
    ├── config.json
    ├── pytorch_model.bin
    └── preprocessor_config.json

A few details people get wrong here, worth calling out:

Folder names are literal. sd-vae is the folder name, even though the source repository is called sd-vae-ft-mse. Copying the source name across is a mistake that’s easy to make and annoying to spot.

Version 1.0 and 1.5 are separate folders. musetalk holds the older version, musetalkV15 holds the newer one, and they use different filenames inside. Mixing them up produces errors that look like corrupted weights rather than misplaced ones.

There’s a nested folder trap. If you download a Hugging Face repository as a zip and extract it, you can end up with something like models/whisper/whisper-tiny/config.json instead of models/whisper/config.json.

Always open the folder and check that files sit directly inside, not one level deeper.


Using ComfyUI Instead? The Path Is Different

Worth flagging clearly, because it catches a lot of people.

The community ComfyUI node expects its own path:

ComfyUI/models/diffusers/TMElyralab/MuseTalk/

The folder names inside also differ slightly from the standalone layout. If you’re running both setups on the same machine, keep them separate and don’t try copying one models folder into the other.


How to Verify Everything Is In Place?

Before running your first inference, spend two minutes checking. It’s far faster than debugging afterward.

Check file sizes. The largest files should be measured in hundreds of megabytes or gigabytes, not kilobytes. A file that’s a few hundred bytes is almost certainly a failed download that saved an error page instead of the model.

Check the folder tree. On Linux or macOS you can print the structure directly:

find ./models -type f

On Windows Command Prompt:

dir /s /b models

Compare that output line by line against the structure above.

Check for stray nesting. Any path with a repeated folder name in it, something like models/sd-vae/sd-vae-ft-mse/, needs fixing before you run anything.


Common Problems

“Model file not found” or a path error on startup

Nine times out of ten this is a folder name or a nested folder issue, not a missing download. Compare against the tree above before redownloading anything.

Download script stops partway through

Rerun it. Failing that, work out which files are already present and manually fetch the ones missing. The Google Drive hosted face parsing file is the most frequent point of failure, since Google Drive sometimes blocks automated downloads.

Errors mentioning corrupted or unreadable weights

Usually an incomplete download. Check the file size of whatever the error names, delete it, and fetch it again on a stable connection.

Everything looks right but MuseTalk still can’t find the weights

Confirm you’re running commands from inside the MuseTalk project folder itself. The models directory path is relative, so running from a parent or sibling folder breaks it.

Running low on disk space

If you’re certain you’ll only ever use one model version, you can skip the other version’s folder. SyncNet is also optional if you never plan to train. Everything else is required.