Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build WAN MultiTalk audio-driven talking-avatar / lip-sync video workflows — MeiGen-AI MultiTalk on WAN 2.1 14B I2V via kijai WanVideoWrapper (portrait + audio → lip-synced video)
.claude/skills/artokun-wan-multitalk/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 76% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 158% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 161% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 40% | 0% |
MultiTalk (MeiGen-AI) drives a still portrait's lip-sync and head motion from an audio track. It runs on WAN 2.1 14B Image-to-Video via kijai's ComfyUI-WanVideoWrapper. Wav2Vec speech embeddings condition the WAN sampler so the mouth and expression follow the speech, while the lightx2v step-distill LoRA keeps it to a few sampling steps.
Use it for talking heads, dubbing, and single-speaker avatar clips (~10s at 480p). It is distinct from wan-animate (pose/motion-driven character animation). This is audio → lip-sync, not reference-video motion transfer.
Pack: wan-multitalk (480p, ~10s). Higher-res/longer variants exist in the source bundle (720p, long-context) as VRAM/duration knobs on the same graph.
LoadImage (portrait) ─┐
LoadAudio ─ AudioSeparation ─ AudioCrop ─ DownloadAndLoadWav2VecModel ─ MultiTalkWav2VecEmbeds ─┐
▼
WanVideoModelLoader (WAN 2.1 14B I2V GGUF) ─ MultiTalkModelLoader ─ WanVideoLoraSelect (lightx2v)
+ LoadWanVideoT5TextEncoder (umt5) + WanVideoTextEncode + WanVideoClipVisionEncode (clip_vision_h)
+ WanVideoVAELoader ──────────────────────────────────────────────────────────────────────────┘
▼
WanVideoImageToVideoMultiTalk ─ WanVideoSampler ─ WanVideoDecode ─ VHS_VideoCombineKey nodes (all kijai WanVideoWrapper unless noted):
run (no manifest entry needed).
embeddings that steer the mouth and expression.
on top of the WAN I2V model.
voice from music/noise before embedding and trim the segment you want to animate.
mux to mp4.
| File | Loader | Folder | |------|--------|--------| | Wan2.1_14b_Image_to_Video_480p_GGUF_Q8.gguf | WanVideoModelLoader | diffusion_models/ | | WanVideo_2_1_Multitalk_14B_fp8_e4m3fn.safetensors | MultiTalkModelLoader | diffusion_models/ | | umt5_xxl_fp16.safetensors | LoadWanVideoT5TextEncoder | text_encoders/ | | Wan2_1_VAE_bf16.safetensors | WanVideoVAELoader | vae/ | | clip_vision_h.safetensors | CLIPVisionLoader | clip_vision/ | | Wan21_I2V_14B_lightx2v_cfg_step_distill_lora_rank64.safetensors | WanVideoLoraSelect | loras/ |
Sources: kijai Kijai/WanVideo_comfy, MeiGen-AI MeiGen-AI/MeiGen-MultiTalk, GGUF city96/Wan2.1-I2V-14B-480P-gguf, and Comfy-Org's repackaged UMT5. See packs/wan-multitalk/manifest.yaml (some URLs are best-effort; verify per mirror). Wav2Vec auto-downloads. The bundled WanVideoWrapper loader rejects the scaled_fp8 UMT5 checkpoint; use the UMT5 fp16 file above, not generic t5xxl_fp16 weights.
best. Resized by ImageResizeKJv2 to the target (480p).
AudioCrop selects the segment (drives clip length).
rarely helps and costs time.
to CPU on lower-VRAM cards.
| Target | Approx VRAM | Lever | |--------|-------------|-------| | 480p 10s | ~8–12 GB | base | | 480p low-VRAM | ~6–8.4 GB | more BlockSwap, GGUF quant, lower quality | | 720p 10s | ~11–16 GB | higher res |
Pair with the VRAM launch-flags guidance (see troubleshooting): --use-sage-attention + appropriate --*vram mode; MultiTalk benefits from --reserve-vram headroom for the Wav2Vec + VAE round-trips.
music-heavy track makes the mouth chase the wrong signal.
multi-embed variant (not in this pack).
WanVideoImageToVideoMultiTalk (not bypassed), and that the audio isn't silent after AudioCrop.
packs/ and observed renders; not a vendor prompting guide.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 14,785 | 12,627 | -15% | 1 | 1 | 0% | 2,195 | 3,862 | +76% | 0 | 0 | — |
case-02 | fail→pass | 10,250 | 10,206 | -0% | 1 | 1 | 0% | 1,294 | 3,337 | +158% | 0 | 0 | — |
case-03 | fail→pass | 10,350 | 29,475 | +185% | 1 | 1 | 0% | 1,557 | 4,063 | +161% | 0 | 0 | — |
case-04 | pass→fail | 10,280 | 3,753 | -63% | 1 | 1 | 0% | 1,766 | 2,113 | +20% | 0 | 0 | — |
case-05 | pass→pass | 11,747 | 8,880 | -24% | 1 | 1 | 0% | 1,796 | 2,062 | +15% | 0 | 0 | — |
case-06 | pass→pass | 9,541 | 4,090 | -57% | 1 | 1 | 0% | 1,389 | 2,035 | +47% | 0 | 0 | — |
case-07 | pass→pass | 9,796 | 3,879 | -60% | 1 | 1 | 0% | 1,678 | 2,012 | +20% | 0 | 0 | — |
case-08 | pass→pass | 9,427 | 3,598 | -62% | 1 | 1 | 0% | 1,195 | 1,851 | +55% | 0 | 0 | — |
case-09 | pass→pass | 6,906 | 2,884 | -58% | 1 | 1 | 0% | 1,100 | 1,851 | +68% | 0 | 0 | — |
case-10 | pass→pass | 4,478 | 3,019 | -33% | 1 | 1 | 0% | 662 | 1,811 | +174% | 0 | 0 | — |
case-11 | pass→pass | 14,451 | 4,138 | -71% | 1 | 1 | 0% | 1,194 | 2,080 | +74% | 0 | 0 | — |
case-12 | fail→pass | 18,894 | 3,439 | -82% | 1 | 1 | 0% | 1,755 | 1,921 | +9% | 0 | 0 | — |
case-13 | fail→pass | 13,199 | 9,422 | -29% | 1 | 1 | 0% | 2,106 | 2,952 | +40% | 0 | 0 | — |
case-14 | fail→pass | 18,114 | 10,536 | -42% | 1 | 1 | 0% | 2,667 | 3,102 | +16% | 0 | 0 | — |
case-15 | fail→pass | 27,718 | 10,968 | -60% | 1 | 1 | 0% | 2,692 | 3,106 | +15% | 0 | 0 | — |
case-16 | pass→pass | 12,393 | 6,037 | -51% | 1 | 1 | 0% | 1,767 | 2,396 | +36% | 0 | 0 | — |
case-17 | fail→pass | 12,244 | 3,825 | -69% | 1 | 1 | 0% | 1,704 | 1,894 | +11% | 0 | 0 | — |
case-18 | pass→pass | 9,702 | 4,012 | -59% | 1 | 1 | 0% | 1,471 | 1,856 | +26% | 0 | 0 | — |
case-19 | fail→pass | 15,632 | 4,997 | -68% | 1 | 1 | 0% | 2,461 | 1,876 | -24% | 0 | 0 | — |
case-20 | fail→pass | 7,951 | 2,937 | -63% | 1 | 1 | 0% | 1,193 | 1,879 | +58% | 0 | 0 | — |
case-21 | fail→pass | 8,363 | 3,279 | -61% | 1 | 1 | 0% | 1,155 | 1,937 | +68% | 0 | 0 | — |
case-22 | fail→fail | 42,944 | 16,164 | -62% | 1 | 1 | 0% | 2,795 | 3,788 | +36% | 0 | 0 | — |
case-23 | pass→pass | 24,956 | 8,491 | -66% | 1 | 1 | 0% | 3,001 | 2,670 | -11% | 0 | 0 | — |
case-24 | pass→pass | 10,097 | 6,974 | -31% | 1 | 1 | 0% | 1,441 | 2,502 | +74% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +42 percentage points is the difference between those two pass rates over the 24 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 9/3/2026 | +55% |
| gemini-3.6-flash | verified | 8/27/2026 | +60% |
| gemini-3.6-flash | verified | 8/21/2026 | +68% |
Other measured skills in the registry, with their headline benchmark lift.