MuseTalk 1.5 vs LatentSync 1.6: Tested on RTX 3090

Tested 15 October 2026 on an RTX 3090. On one shared 3.632-second speech sample, MuseTalk 1.5 finished its complete offline process sooner and used less sampled device memory than LatentSync 1.6. Both produced playable clips. This is a matched case study with three runs per model, not a general quality ranking.

Swipe tables sideways to compare both models.

Which should you choose?

Your use case Recommendation from this evidence
Short iterations on this stationary face MuseTalk 1.5. Lower measured wait and memory; the mouth movement is easier to see in our examples.
Offline editing where local texture matters Review both clips. LatentSync preserves more visible skin texture here, but its weaker mouth movement is not evidence of better synchronization.
Repeated avatar requests Consider MuseTalk’s prepared-avatar workflow; use the separate timing guide. This test ran a new process for every clip.
Moving heads, profiles, other languages or long videos No verdict. This sample does not test those conditions.

Measured results

Measure MuseTalk 1.5 LatentSync 1.6
Run 1 process time 38.970 s 81.862 s
Run 2 process time 29.822 s 81.293 s
Run 3 process time 29.730 s 81.433 s
Median process time 29.822 s 81.433 s
Highest sampled device memory 7,774 MiB 17,394 MiB
Video frames / video duration 90 / 3.60 s 92 / 3.68 s
Canvas and playback rate 512 × 512 / 25 fps 512 × 512 / 25 fps
Successful runs / full decode checks 3 / 3 3 / 3

Process time starts before Python launches and ends when it exits: imports, model loading, preprocessing, generation and encoding are included. Setup, model transfers, output transfer and independent validation are excluded. These values are neither generation-only throughput nor live application latency. Later runs have warm file/library caches; setup also reads the model files before run 1.

Memory is the maximum whole-device value sampled every 0.5 seconds, including an existing idle ComfyUI process (about 265 MiB total baseline). It is not an exact per-model allocation or minimum VRAM requirement. Both audio tracks last 3.632 seconds; different audio chunking produces the unequal video lengths. Frame counts were retained, not normalized for timing.

Visual review: subjective

At matched frames 20, 40 and 60 (0.80, 1.60 and 2.40 seconds), MuseTalk shows wider mouth openings and a smoother mouth/chin area. LatentSync retains more local skin texture; its mouth is slightly open at 0.80 seconds and close to the input’s closed shape at 1.60 and 2.40 seconds. For this stationary sample, I would choose MuseTalk for more visible articulation.

More movement does not prove phoneme accuracy, and a smaller edit does not prove better synchronization. We did not run a blind preference study, listening panel or validated automatic sync/perceptual evaluation.

Paired results: same input and audio

Left: shared input. Centre: MuseTalk 1.5. Right: LatentSync 1.6. The combined view uses the first successful run of each model, trims to their common 3.60-second interval and re-encodes for presentation. It is a viewing aid; the original individual clips below retain their native frame counts and encoding.

Watch original MuseTalk output · Watch original LatentSync output · View shared source video · Listen to shared speech

Real input and outputs at 1.60 seconds, with whole frames and identical mouth crops; arrows remain in the clear margin
Real browser capture of the saved result viewer. Both output crops use x=176, y=248, width=160, height=144 and equal enlargement. Frames are unretouched. View original screenshot without arrows.
View all repeated output clips

LatentSync’s three fixed-seed output files had identical SHA-256 hashes on this environment. MuseTalk’s repeated output hashes differed; no seed was supplied to its CLI.

Versions, settings and test method

Condition MuseTalk LatentSync
Release 1.5 1.6
Official code commit 0a89dec45a0192b824e3cf4daf96c239440c5ed8 a229c3948406bc2cf6eaf4873e662e70c6a04746
Model revision 2bcb936e2fddb4d86db4c62fd45b387d0c061571 c42c7e6c8e9c213626389fa7d9a3c444b8536353
Internal face resolution 256 × 256 512 × 512
Software Python 3.10.18; Torch 2.0.1+cu118; NumPy 1.23.5; MMCV 2.0.1; diffusers 0.30.2 Python 3.10.13; Torch 2.5.1+cu121; NumPy 1.26.4; diffusers 0.32.2; ONNX Runtime GPU 1.21.0
Inference settings FP16; batch 2; bbox_shift 0; extra_margin 10; parsing_mode jaw; cheek widths 90/90; no seed supplied FP16; 20 steps; guidance 1.5; seed 1247; DeepCache on (interval 3, branch 0); stage2_512 config; 16-frame windows

Hardware: NVIDIA GeForce RTX 3090, 24,576 MiB VRAM; driver 595.84; configured power limit 275 W; AMD EPYC 7402P host. Four OMP/MKL/OpenBLAS threads per test. Environments were isolated; the existing ComfyUI service was left running. We make no claim of exclusive host ownership.

Inputs: the permitted shared fictional face video (512 × 512, 25 fps, 91 frames, 3.64 seconds, no original audio) and unchanged synthetic English speech (mono 16 kHz, 3.6318125 seconds): “Please bring me a blue mug. We can meet on Friday.” Both models received byte-identical source files; their complete hashes are in the method record.

Schedule: LatentSync 1, MuseTalk 1, MuseTalk 2, LatentSync 2, LatentSync 3, MuseTalk 3. Each used a new process and result folder without a saved avatar or face-coordinate cache. All six exited with code 0 and passed complete video/audio decoding. Setup validation and model preparation happened before timing. Tracked inference source and checkpoints were unchanged.

Fairness limits: equal source files do not make the pipelines equivalent. Internal face resolution, temporal chunking, detection, software, encoder paths and inference controls differ. We did not equalize compute budgets, normalize encoding, tune either model to this clip or randomize/cool the host between runs. One short stationary scene magnifies startup costs and cannot test broad quality or real head motion. These settings are recorded conditions, not universal best values.

Setup implications and retained exceptions

The RTX 3090 completed both workflows. LatentSync’s official release guide lists 18 GB minimum inference VRAM for 1.6; do not transfer the older 1.5 requirement to this model. Our sampled memory is a separate observation.

LatentSync’s decord 0.6.0 package embeds a CPython 3.6 wheel tag, so pip/uv platform checks flagged it under Python 3.10. Actual imports, all 91 input frames and generation worked; package constraint checks found no missing/conflicting requirements. The face detector initially fell back to CPU because an installed CUDA library was outside the loader path. Adding the isolated environment’s NVIDIA library directories fixed that; both active detector sessions reported CUDA first and detected this sample before timing.

The LatentSync stack uses pretrained InsightFace models with a non-commercial research policy distinct from the code licence. No model weights are redistributed with this guide.

Evidence and next steps

View every measurement (CSV) · View exact settings, commands and model hashes · Read evaluation notes · MuseTalk dependency record · LatentSync dependency record

View setup and saved-evidence screenshots
Saved setup record with model revisions and verified CUDA detector; arrows in the margin
Original setup screenshot.
Saved evidence index with six verified clips, timings and checksums
Original evidence screenshot.

Continue with GPU requirements, the quality guide, matched quality examples, the video tutorial, the photo tutorial and prepared-avatar timing.

Primary implementation references: pinned MuseTalk source, pinned LatentSync inference settings, and the LatentSync 1.6 model revision.

Also compare MuseTalk with Wav2Lip using the same sample assets. That later test uses another RTX 3090 host and power limit; do not compare timings across the articles as equal conditions. Read the MuseTalk vs Wav2Lip comparison.

2 thoughts on “MuseTalk 1.5 vs LatentSync 1.6: Tested on RTX 3090”

Leave a Comment