AIIA Ditto Loader
The talking head that skips the TensorRT torture
- pipe
Ditto is Ant Group's talking-head model, and the official way to run it involves compiling TensorRT engines - which is a whole afternoon of CUDA version roulette that most people don't survive. The AIIA pack's contribution is a pure PyTorch port: same model, no TensorRT build step, drops straight into ComfyUI. That "no compiler toolchain required" framing is the entire reason this node exists, and it's a good reason. This loader is the first half of that story - it gets the ~1.2GB model into memory as a DITTO_PIPE that the pack's AIIA Ditto Sampler then runs for inference.
How it works
The loader offers a single model choice (ditto-talkinghead), pulls the weights from HuggingFace (digital-avatar/ditto-talkinghead), and builds the pipeline. On first run it tries to auto-download; if that fails, the README gives a manual path into ComfyUI/models/ditto/ with the specific layout (ditto_pytorch/audio2motion.pth plus the ditto_cfg/ config pickle). The pipe output carries the whole loaded model - motion synthesis plus the image-rendering side - so the sampler can drive video frames from audio without touching the model again.
The inputs
- model_name - one option:
ditto-talkinghead. There's nothing to pick, which is the point; it's a single-model loader. - device -
cudadefault,cpufor the desperate. Ditto is a diffusion-ish talking head; CPU will be slow enough that you'll want to reconsider.
Output: pipe (DITTO_PIPE) → AIIA Ditto Sampler.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/havvk/ComfyUI_AIIA.git
# restart ComfyUI
The model auto-downloads on first run into ComfyUI/models/ditto/. If it chokes (or you're offline), the manual route from the README:
cd ComfyUI/models
hf download digital-avatar/ditto-talkinghead --local-dir ditto
Note the README's warning to download into ditto directly rather than nesting a ditto-talkinghead subfolder - the loader expects a specific layout and the double-nesting breaks it.
Where it fits
The sampler does the real work (reference image + audio + the long list of Ditto controls - blink mode, mouth amplitude, silent-pause relaxation, OOM-safe disk mode). This loader is deliberately boring: pick device, run, get your pipe. Its job is to make sure the model exists, loads cleanly, and doesn't demand a TensorRT build. If you've ever tried Ditto the official way, "boring" here is a feature.
Gotchas
- Auto-download failure is the main hiccup - the manual HF path above is the fix, and folder layout is the thing to get right.
- It's the heavy half of a heavy pair. Ditto runs best with a clean square reference photo and a 25fps drive track (the sampler's docs are specific about this), but that's sampler territory.
- PyTorch-only means you trade a bit of speed for sanity. The official TensorRT build is faster at inference; this port is faster at actually working. For most people that's the right trade.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | 1 options: ditto-talkinghead | |
| device | COMBO | cuda | 2 options: cuda, cpu |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | DITTO_PIPE | — |