How to run MuseTalk on a cloud GPU
Rent a GPU on Deploy, then open a terminal in JupyterLab or over SSH. Install MuseTalk from the official repository, run the Linux download script after you read it, run sh inference.sh v1.5 normal or the Gradio app, and copy the results directory off the instance before you destroy it. Destroying the instance deletes its disk.
Only animate a face you have the right to use. A source video is a recording of a person. The README disclaimer says the code is released under the MIT License, with no limitation for academic or commercial use of the code, and that the trained model is available for any purpose, even commercially. It also says other open-source models used must comply with their own licenses, and that the test data are collected from the internet and are available for non-commercial research purposes only. Users are expected to comply with local laws and use the tool responsibly. The developers do not assume responsibility for misuse. Read that disclaimer. This page does not restate the other licenses.
The commands below are copied from the upstream files named in each step. They were not run on a CloudGPU instance for this page. Anything this page adds around them is marked.
What the README says about memory
The MuseTalk README says it supports real-time inference with 30fps+ on an NVIDIA Tesla V100 (read 2026-11-12). That sentence does not state a VRAM size. Catalog V100 16G is 16 and V100 32G is 32 in gpu-prices.json. Those are catalog values, not the README’s test size. This page did not re-measure the 30fps sentence.
The Gradio section says the system was tested on a Windows environment using an NVIDIA GeForce RTX 3050 Ti Laptop GPU with 4GB VRAM, and that in fp16 mode, generating an 8-second video takes approximately 5 minutes. That card is not in the catalog. This page did not re-measure that sentence. It is an inference duration in the README, not a startup time.
The training section has per-GPU memory tables for stage 1 and stage 2, measured on a machine with 8 NVIDIA H20 GPUs. This page leaves those tables in the README. They are training figures, not an inference requirement. Catalog H20 96G is 96 in gpu-prices.json. That is the catalog value, not a cell in those tables.
The model API for TMElyralab/MuseTalk on 2026-11-12 reported gated: false and license: mit. The card text was not a second VRAM source. The README’s license section is the one quoted above.
GET /v1/public/compute-capabilities does not list GPUs. It returns feature flags. The memory column is vram_gb from gpu-prices.json, updated_at 2026-11-12T16:09:18.550Z. GET /v1/public/gpu-catalog the same day (generated_at 2026-11-12T16:09:17.753Z) listed the same names and the same vram_gb values, plus Ascend 910B, which is not in gpu-prices.json and is not listed here. The catalog response also includes an availability field. This page does not copy it. The only inference GB figure above is the 4GB laptop GPU, which is not in the catalog, so this page does not mark any catalog vram_gb as enough or not enough. Which listing you can start is on Deploy. This page does not say which listings are available.
| Catalog name | vram_gb |
|---|---|
| RTX 2080 | 8 |
| RTX 3080 | 10 |
| RTX 2080 Ti | 11 |
| RTX 3080 Ti | 12 |
| V100 16G | 16 |
| A30 | 24 |
| RTX 3090 | 24 |
| RTX 4090 | 24 |
| RTX 4090D | 24 |
| RTX 4080 SUPER 32G | 32 |
| RTX 5090 | 32 |
| RTX 5090D | 32 |
| V100 32G | 32 |
| A100 40G | 40 |
| A800 40G | 40 |
| A40 | 48 |
| RTX 4090 48G | 48 |
| RTX 4090D 48G | 48 |
| RTX A6000 | 48 |
| NVIDIA RTX PRO 5000 72G | 72 |
| RTX PRO 5000 72G | 72 |
| A100 80G | 80 |
| A800 80G | 80 |
| H800 | 80 |
| RTX 6000D | 83 |
| H20 96G | 96 |
| RTX PRO 6000 96G | 96 |
| RTX PRO 6000 Max-Q | 96 |
Portrait animation from a driving video, a different repository: How to run LivePortrait on a cloud GPU. Where MuseTalk sits in a short-film pipeline: AI short film production.
Install on Linux
On Deploy, choose Raw GPU. The README says it recommends Python 3.10 and CUDA 11.7. The environment and the two torch options, copied:
conda create -n MuseTalk python==3.10
conda activate MuseTalk
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
The README’s second torch option is conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia. The pip line above is cu118. The README’s CUDA sentence says 11.7. This page does not resolve that difference. How to install a specific PyTorch CUDA version says to use an index that is not newer than the CUDA Version in the nvidia-smi header. If conda is not on PATH, use how to set up a conda environment on a cloud GPU. This page did not check whether the Raw GPU image already has conda.
The clone is not printed as its own block in the install section. This page adds it. It was not run.
git clone https://github.com/TMElyralab/MuseTalk
cd MuseTalk
The rest of the install, copied:
pip install -r requirements.txt
pip install --no-cache-dir -U openmim
mim install mmengine
mim install "mmcv==2.0.1"
mim install "mmdet==3.1.0"
mim install "mmpose==1.1.0"
requirements.txt pins torch nowhere. It pins diffusers==0.30.2, transformers==4.39.2, gradio==5.24.0, and huggingface_hub==0.30.2, among other lines (read 2026-11-12). The torch pin is the install section above, not that file.
The inference prerequisites say to run ffmpeg -version, and on Linux sudo apt-get install ffmpeg if it is not found. The earlier FFmpeg section says to download a static build and, on Linux:
export FFMPEG_PATH=/path/to/ffmpeg
The example under that export is export FFMPEG_PATH=/musetalk/ffmpeg-4.4-amd64-static. This page did not download that build.
Weights
The README’s Linux download command, copied:
sh ./download_weights.sh
download_weights.sh (read 2026-11-12) exports HF_ENDPOINT before the downloads. This page does not copy that assignment. Remove that line if you want the default Hugging Face host. The same script then runs pip install -U "huggingface_hub[cli]". requirements.txt pins huggingface_hub==0.30.2. The Hub v1.0 migration doc says the deprecated huggingface-cli command has been removed, and that hf (added in v0.34) replaces it. An unpinned upgrade can remove the command the script calls on the next lines. Delete that pip install -U line before you run the script, so the pin from requirements.txt stays. This page did not run the edited script. The script also runs pip install gdown. Three of its huggingface-cli download lines name Hub ids this page does not copy. Copy those three lines from the script. The two lines this page does copy, and the two non-Hub downloads, are:
huggingface-cli download TMElyralab/MuseTalk \
--local-dir models \
--include "musetalk/musetalk.json" "musetalk/pytorch_model.bin"
huggingface-cli download TMElyralab/MuseTalk \
--local-dir models \
--include "musetalkV15/musetalk.json" "musetalkV15/unet.pth"
huggingface-cli download yzd-v/DWPose \
--local-dir models/dwpose \
--include "dw-ll_ucoco_384.pth"
gdown --id 154JgKpzCPW82qINcVieuPH3fZ2e0P812 -O models/face-parse-bisent/79999_iter.pth
curl -L https://download.pytorch.org/models/resnet18-5c106cde.pth \
-o models/face-parse-bisent/resnet18-5c106cde.pth
The models/ prefix on --local-dir matches the script’s CheckpointsDir="models". The README’s manual section says the finished tree has musetalk, musetalkV15, syncnet, dwpose, face-parse-bisent, sd-vae, and whisper under ./models/. The three lines this page does not paste are the ones that fill sd-vae, whisper, and syncnet. cloudgpu-net is not in the README. The download speed guide says to leave it off during pip, then turn it on for a weight download. How to download a Hugging Face model is the hf download reference. The script prints huggingface-cli download, not hf download.
Inference
configs/inference/test.yaml sets task 0 to data/video/yongen.mp4 and data/audio/yongen.wav, and task 1 to the same video with data/audio/eng.wav and bbox_shift: -7. The README says those files in the test data are for non-commercial research only. The Linux commands, copied. The README marks 1.5 as recommended.
sh inference.sh v1.5 normal
sh inference.sh v1.0 normal
inference.sh sets result_dir to ./results/test for normal mode and ./results/realtime for realtime mode. The realtime commands, copied:
sh inference.sh v1.5 realtime
sh inference.sh v1.0 realtime
The README says to set preparation to True when processing a new avatar, then to False for more videos of the same avatar, and that generation can reach 30fps+ on an NVIDIA Tesla V100. The faster command it prints:
python -m scripts.realtime_inference --inference_config configs/inference/realtime.yaml --skip_save_images
For MuseTalk 1.0, the README’s bbox example is python -m scripts.inference --inference_config configs/inference/test.yaml --bbox_shift -7. This page did not run these scripts.
Gradio
The README command, copied. The ffmpeg_path in it is a Windows path. The same paragraph says the parameter has to match your FFmpeg install. On Linux, if ffmpeg -version already succeeds, app.py does not prepend --ffmpeg_path.
python app.py --use_float16 --ffmpeg_path ffmpeg-master-latest-win64-gpl-shared\bin
app.py defaults --ip to 127.0.0.1, --port to 7860, and does not pass --share unless you set that flag. It writes the Gradio result under ./results/output/v15/. On your own computer:
ssh -N -L 7860:127.0.0.1:7860 -p <ssh-port> <ssh-user>@<ssh-host>
Then open http://localhost:7860. How to use SSH port forwarding is the forwarding reference. This page did not run app.py. The README says you can remove --use_float16 for better quality, and that doing so increases VRAM usage and inference time. It does not give a second GB figure.
The README’s third-party section links a ComfyUI project and says the project has not verified, maintained, or updated third-party integrations. This page does not copy that project. For the ComfyUI template itself, see how to choose a rental GPU for ComfyUI.
When it fails
CUDA out of memory. The published inference test is the 4GB laptop GPU above, which is not in the catalog. The README says removing --use_float16 increases VRAM usage. Then use how to fix CUDA out of memory on a cloud GPU.
“CUDA error: no kernel image is available” on an RTX 5090. Catalog RTX 5090 and RTX 5090D are 32 GB. That is the catalog value, not a MuseTalk requirement. The README’s pip torch line is torch==2.0.1 from the cu118 index. The RTX 5090 guide says that card needs a PyTorch build for CUDA 12.8 or newer. This page did not re-test the cu118 wheel on an RTX 5090.
FFmpeg missing. app.py prints a warning when ffmpeg -version fails, and the inference prerequisites say to install it. The Linux line in that section is sudo apt-get install ffmpeg.
Missing weight files. app.py exits if models/musetalkV15/unet.pth, models/sd-vae/config.json, models/whisper/config.json, models/dwpose/dw-ll_ucoco_384.pth, models/syncnet/latentsync_syncnet.pt, or the two face-parse files are absent, and it tells you to run ./download_weights.sh. Delete the HF_ENDPOINT export and the unpinned pip install -U "huggingface_hub[cli]" line first, as the weights section says. The three Hub lines this page does not paste are what fill sd-vae, whisper, and syncnet.
Save the mp4, then destroy
Copy the results directory before you destroy the instance. Normal inference uses results/test, realtime inference uses results/realtime, and Gradio uses results/output. Save your work before you destroy a cloud GPU is the checklist. The terms say data on local instance storage is permanently deleted when the instance is destroyed. Billing is per minute, with a 1-minute minimum, and it stops when you destroy the instance. The billing rule is on the pricing page. Prices are not copied here.
Frequently asked questions
How much VRAM does MuseTalk publish?
The Gradio section of the MuseTalk README says it tested on an NVIDIA GeForce RTX 3050 Ti Laptop GPU with 4GB VRAM, and that in fp16 mode, generating an 8-second video takes approximately 5 minutes (read 2026-11-12). That card is not in the catalog. This page did not re-measure that sentence. The README also says real-time inference with 30fps+ on an NVIDIA Tesla V100. That sentence does not state a VRAM size. Catalog V100 16G is 16 and V100 32G is 32 in gpu-prices.json. Those are catalog values, not the VRAM size in that sentence. The training tables stay in the README. This page does not mark any catalog vram_gb as enough or not enough. Which listing you can start is on https://cloudgpu.app/deploy.
How do I open the Gradio app?
The README command is python app.py --use_float16 --ffmpeg_path followed by a Windows ffmpeg path. app.py defaults --ip to 127.0.0.1 and --port to 7860. On Linux, the inference prerequisites say to install ffmpeg if ffmpeg -version fails. If ffmpeg is already on PATH, app.py does not prepend the Windows default. This page did not run app.py. Only animate a face you have the right to use.
Does the official MuseTalk README document ComfyUI?
The third-party section of the README links a ComfyUI project and says the project has not verified, maintained, or updated third-party integrations. This page does not copy that project. The Gradio command is python app.py.
Can I animate any face?
Only animate a face you have the right to use. The README disclaimer says the code is under the MIT License, the trained model is available for any purpose, even commercially, other open-source models must comply with their own licenses, and the test data are for non-commercial research purposes only. Read that disclaimer. Copy the results directory before you destroy the instance.
Sources (read 2026-11-12, Asia/Shanghai)
- MuseTalk README (Python 3.10, torch 2.0.1 cu118, mmcv pins, download script, inference.sh, Gradio, 4GB laptop test, Tesla V100 30fps sentence, third-party ComfyUI note, disclaimer): https://github.com/TMElyralab/MuseTalk/blob/main/README.md
- download_weights.sh (
HF_ENDPOINTexport not copied;pip install -U "huggingface_hub[cli]"removed before running sohuggingface_hubstays at 0.30.2; three Hub ids not copied; TMElyralab and yzd-v lines copied): that repository - Hugging Face Hub v1.0 migration (
huggingface-cliremoved;hfadded in v0.34): https://huggingface.co/docs/huggingface_hub/en/concepts/migration - inference.sh (
results/test,results/realtime, v1.5 usesmodels/musetalkV15/unet.pth): that repository - configs/inference/test.yaml (
yongen.mp4,yongen.wav,eng.wav,bbox_shift: -7): that repository - app.py (default 127.0.0.1 port 7860,
./results/output/v15/, missing-file check): that repository - requirements.txt (no torch pin;
gradio==5.24.0): that repository - Model API for
TMElyralab/MuseTalk(gated: false,license: mit) - Public GPU memory: https://cloudgpu.app/gpu-prices.json (
updated_at2026-11-12T16:09:18.550Z) and https://cloudgpu.app/v1/public/gpu-catalog (generated_at2026-11-12T16:09:17.753Z).GET /v1/public/compute-capabilitiesreturned feature flags and no GPU list.
Cards you can start are on the Deploy page. Prices are on https://cloudgpu.app/pricing and are not repeated here.
Last updated: 2026-11-12 (Asia/Shanghai).