ComfyUI Node

Echo_LoadModel

The LoadModel node that spends your VRAM budget before you even sample

By lieding·Created 8 months ago·Updated 7 months ago· 0
Echo_LoadModel
    • model
    • info
    vae
    lora
    denoisingtrue
    infer_mode
    lowvramtrue
    teacache_offloadtrue
    block_offloadtrue
    use_mmgp
    version

    This is the node that loads EchoMimic V3's weights into VRAM so the rest of the pipeline can run. It's the first of three nodes - Echo_LoadModelEcho_PredataEcho_Sampler - in a pack that turns a still portrait plus an audio clip into a talking-head video. EchoMimic is the audio-driven portrait animation line from Ant Group (the "Lifelike Audio-Driven Portrait Animations" paper), and this fork is a trimmed-down V3-flash port of the better-known smthemex/ComfyUI_EchoMimic pack. If you've seen the "photo that talks" clips floating around r/StableDiffusion, this is the family they come from.

    A warning up front, because it will save you a wasted evening: despite the dropdowns, this pack is V3-flash only. The version selector lists V3_flash, V3, V2, and V1, but open the source and V1/V2 are empty pass stubs. Set version to V3_flash and don't look back. Same story for infer_mode and denoising - they're carried over from the parent pack and don't change anything in this fork. The one knob that actually matters alongside version is block_offload, which the README says must be on for the flash model.

    How it works

    The node builds the whole generation stack in one call: the echomimicv3-flash-pro transformer (a Wan 2.1-based 1.3B model from the BadToBest/EchoMimicV3 repo), the Wan 2.1 VAE, a CLIP image encoder for appearance conditioning, and the Chinese wav2vec2 audio encoder that turns your clip into per-frame embeddings. The model output is a pipe object holding all of that; the info output is a dict that carries your settings (version, lowvram, block_offload, config) down to the next node. So this node is both the expensive part and the messenger.

    It's also the part you pay for on every queue. There's no caching here - each run re-loads the transformer and VAE, so expect a multi-second stall before sampling starts and a VRAM spike the moment you hit Queue.

    Inputs that matter

    • vae - a dropdown of your ComfyUI/models/vae folder. The loader resolves the Wan 2.1 VAE; in this build the code pins the internal path to wan_2.1_vae.safetensors, so if nothing loads, make sure that exact filename is sitting in your vae folder.
    • version - set V3_flash. V3/V2/V1 are decorative here.
    • lowvram - gates transformer quantization. On the parent pack this is where you'd toggle mmgp's fp8 for more quality; here it just decides how hard the loader squeezes.
    • block_offload - keep it on; flash needs it. It moves the pipeline to CPU and streams transformer blocks, which is why flash can run 768×768 on 12 GB.
    • teacache_offload and use_mmgp - VRAM-reduction flags. use_mmgp offers presets like LowRAM_LowVRAM; it's inherited from upstream and isn't actually loaded in this fork (mmgp isn't in this pack's requirements), so treat partial_video_length and block_offload as your real memory levers.
    • lora - optional, from your loras folder. The README's V3 tips point at Kijai's lightx2v LoRA (10 steps, or 4 with LCM).

    Outputs

    • model (MODEL_PIPE_E) - wire into the Echo_Sampler node's model input.
    • info (MODEL_INFO_E) - wire into Echo_Predata's info input.

    Installing it

    ComfyUI Manager: search for ComfyUI_EchomimicV3_DL. Or the manual way:

    cd ComfyUI/custom_nodes
    git clone https://github.com/lieding/ComfyUI_EchomimicV3_DL
    cd ComfyUI_EchomimicV3_DL
    pip install -r requirements.txt
    

    Then restart ComfyUI. The requirements are the usual suspects - torch, diffusers, transformers, librosa, moviepy, ffmpeg-python, numpy pinned to 2.1 - and the README's heavy extras (mmgp, retina-face, tensorflow) belong to the parent pack's non-flash V3, not this fork. Ignore them.

    Models

    V3 flash needs four things, all under ComfyUI/models/:

    models/echo_mimic/echomimicv3-flash-pro/   # diffusion_pytorch_model.safetensors + config.json
    models/echo_mimic/chinese-wav2vec2-base/   # config + preprocessor + model.safetensors
    models/clip_vision/models_clip_open-clip-xlm-roberta-large-vit-huge-14.pth
    models/vae/wan_2.1_vae.safetensors
    

    The repo ships a download_model.py that fetches all of them for you - that's the "DL" in the pack name. Fair warning: that script has a Hugging Face token committed in plaintext. Don't reuse that token anywhere; if you'd rather not run it, grab the files manually from the links above.

    Common issues

    OOM on load or queue. Your real levers are block_offload (on), resolution (768×512 instead of 768×768), and partial_video_length on the next node - 65 for 12 GB, 97 for 16 GB, 113 for bigger cards. If the load itself dies, double-check the model filenames and the wan_2.1_vae.safetensors placement.

    "Module missing" errors. pip install the named module; the requirements list covers what this fork actually imports.

    README confusion. The README is copied verbatim from upstream, so it tells you to clone a different repo and walks through V1/V2 model sets you don't need. Trust the repo's own clone URL and requirements.txt instead.

    CategoryEchoMimic

    Inputs (9)

    NameTypeDefaultDescription
    vaeCOMBO0 options:
    loraCOMBO1 options: None
    denoisingBOOLEANtrue
    infer_modeCOMBO5 options: audio_drived, audio_drived_acc, pose_normal_dwpose, pose_normal_sapiens, pose_acc
    lowvramBOOLEANtrue
    teacache_offloadBOOLEANtrue
    block_offloadBOOLEANtrue
    use_mmgpCOMBO6 options: None, LowRAM_LowVRAM, VerylowRAM_LowVRAM, LowRAM_HighVRAM, HighRAM_LowVRAM, HighRAM_HighVRAM
    versionCOMBO4 options: V3_flash, V3, V2, V1

    Outputs (2)

    NameTypeDescription
    modelMODEL_PIPE_E
    infoMODEL_INFO_E