Nodes/ComfyUI-TP-IMtalker/IMTalker Model Loader
ComfyUI Node

IMTalker Model Loader

The boring node that makes IMTalker run

By tpc2233·Created 10 months ago·Updated 10 months ago· 8
IMTalker Model Loader
    • model_bundle
    auto_downloadtrue

    The workhorse of the whole pack, and the one with the least to look at. IMTalkerLoader has exactly one input - a checkbox - and its entire job is to make the other two nodes possible. Think of it as the ignition: nothing renders until this node has fetched gigabytes of weights and spun up three models.

    IMTalker itself is an academic talking-face model (ACM MM 2025, from cbsjtu01), and this node is the ComfyUI side of the load: a renderer, a flow-matching generator, an audio encoder, and a face detector, all loaded once and handed downstream as a single model_bundle. If you've seen the pattern where every talking-head pack has one loader that does everything heavy, this is that node.

    How it works

    On every run it checks ComfyUI/models/imtalker/ and - with auto_download on, which is the default - pulls whatever's missing from the Hugging Face repo cbsjtu01/IMTalker:

    • renderer.ckpt and generator.ckpt (the actual talking-head weights)
    • wav2vec2-base-960h/ - config, weights, and preprocessor files

    That's a few gigabytes on first run, so your first queue hangs on a download bar. After that it loads the IMTRenderer and the flow-matching FMGenerator onto CUDA, initializes the Wav2Vec2 feature extractor, and spins up face-alignment's FAN landmark detector on CPU (its own weights download on first use). Everything gets stuffed into a model_bundle and passed to whichever driven node is downstream.

    Two details worth knowing. First, it deliberately falls back to facebook/wav2vec2-base-960h from your Hugging Face cache if the local copy isn't there, so a flubbed download won't necessarily brick the run. Second, it monkey-patches Wav2Vec2Model.from_pretrained to force attn_implementation="eager" - a fix for an attention-flag error that newer transformers versions throw. If you ever see a transformers attention error in this pack's generator, this is the seam the author was fighting, and it means your transformers version and the model disagree.

    The one input and the output

    • auto_download (default true) - controls whether missing model files get fetched from HF. Turn it off and the node raises FileNotFoundError if the models aren't already in models/imtalker. There's basically no reason to disable it.

    Output is a single model_bundle (custom type IMTALKER_MODEL), which plugs into both IMTalkerAudioDriven and IMTalkerVideoDriven. Yes, you can fan it out to both at once - the bundled workflow does exactly that.

    Install

    Same as the rest of the pack: ComfyUI Manager, search "ComfyUI-TP-IMtalker", or by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/tpc2233/ComfyUI-TP-IMtalker.git
    cd ComfyUI-TP-IMtalker
    pip install -r requirements.txt
    

    The dependency list is real: face-alignment (a heavy one - it drags in a chunk of scientific Python), transformers, librosa, torchdiffeq, timm, einops, huggingface_hub, scipy, tqdm. None of them are trivially small, and face-alignment in particular is the sort of install that makes you go make tea. Note that torchaudio is imported at module load but is not in requirements.txt - the author's tested setup installs the full torch nightly stack explicitly (--pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128). If you open the node menu after installing and the three IMTalker nodes aren't there, missing torchaudio is the classic cause.

    Gotchas

    • It's memory-hungry and it's not lazy. The README quotes up to ~17GB VRAM across the two driven modes. This is not the node for a 6GB card.
    • It keeps everything loaded. The bundle holds the renderer, generator, wav2vec, and face detector in memory for as long as the workflow lives. Re-runs are cheap - no re-download once the files exist - but the first load after a restart takes a beat.
    • It's not an output node. Wire it or it's dead weight in your graph.

    For what it is - a few hundred lines of glue over a serious model - it's honest work. Nothing clever, nothing hidden: you can read the source and see exactly what it downloads and where it puts it. If the audio- or video-driven node is misbehaving and you want to blame the load, look here first.

    CategoryIMTalker

    Inputs (1)

    NameTypeDefaultDescription
    auto_downloadBOOLEANtrue

    Outputs (1)

    NameTypeDescription
    model_bundleIMTALKER_MODEL