Nodes/Anymatix/Anymatix Chatterbox pack (from fetcher)
ComfyUI Node

Anymatix Chatterbox pack (from fetcher)

The adapter that feeds a downloaded voice pack into Chatterbox's dropdown without patching Chatterbox

By Anymatix·Created about a year ago·Updated 2 days ago· 0
Anymatix Chatterbox pack (from fetcher)
    • model_pack_name
    fetched_pack_name

    Voice cloning in ComfyUI usually means Chatterbox, the community TTS pack where a "voice pack" is a folder of weights under models/tts/chatterbox and you pick one from a dropdown. The friction: AnymatixFetcher hands you a voice pack as a plain STRING, and ComfyUI refuses to let a STRING output wire into a dropdown/COMBO input - the graph compiler treats them as incompatible types, even when the value would be right. AnymatixChatterboxPackFromFetchedName exists to bridge exactly that gap. It takes the STRING pack name from a fetcher and re-emits it as a properly typed COMBO value that Chatterbox's own widgets will accept.

    That's the whole job, and the node description says it plainly: "Converts AnymatixFetcher STRING pack id to Chatterbox COMBO input (no ComfyUI-Chatterbox edits)." No edits to Chatterbox, no patching - the bridge works from the outside, which is the polite way to do it when you don't control the upstream pack.

    How it works

    The clever bit is how the node learns what a valid pack name is. It reads the real list of voice packs by loading Chatterbox's own handler module - if ComfyUI-Chatterbox/modules/chatterbox_handler.py exists next to this pack - and uses that list as its allowed output values. If Chatterbox isn't installed, it degrades to a single placeholder option (resembleai_default_voice) so the node still validates without crashing. When you run it, it checks that the fetched name is genuinely one of the installed packs, because a voice pack folder has to exist on disk before Chatterbox can use it.

    Two things to know:

    • The fetcher has to run first. The node's own docstring says it: files must exist under models/tts/chatterbox/<pack> before this will pass. If the pack was never downloaded, you get an error listing what is installed.
    • It's Chatterbox-specific. The optional sibling only loads if ComfyUI-Chatterbox is present, so this node silently doesn't help other TTS packs.

    Inputs and output

    • fetched_pack_name (STRING) - wire AnymatixFetcher's output here; the fetcher's URL type should be one of the chatterbox pack types so it downloads into the right folder.
    • Output: model_pack_name (COMBO) → Chatterbox's model-pack dropdown input.

    Install

    Same pack, plus one extra requirement - the sibling it bridges to:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Anymatix/anymatix-comfy-nodes
    git clone https://github.com/.../ComfyUI-Chatterbox  # the TTS pack itself
    

    Then restart. Without Chatterbox installed, this node still appears but has nothing real to feed.

    Issues to expect

    The classic failure is ordering: you wire the graph, hit run, and the node refuses because the voice pack isn't on disk yet - the fetcher ran but downloaded to the wrong place, or never ran because ComfyUI skipped it as an orphan. Remember this pack marks fetchers as always-execute precisely to avoid that, so if the pack is genuinely missing, check the download's destination folder before assuming the bridge is broken.

    CategoryAnymatix/audio

    Inputs (1)

    NameTypeDefaultDescription
    fetched_pack_nameSTRINGWire AnymatixFetcher output (chatterbox_model_pack) here.

    Outputs (1)

    NameTypeDescription
    model_pack_nameresembleai_default_voice