Orpheus TTS Model Loader
The boring node that does all the heavy lifting
- model
Every workflow needs its unglamorous first node, and for ComfyUI-Orpheus-TTS that's OrpheusModelLoader. It loads the two models that make the pack work - the Orpheus 3B TTS model and the SNAC audio codec - and hands them to the generate node as one model bundle. There's nothing to tune and nothing exciting happens visually. You just need it, because nothing else in the pack runs without it.
If you've installed any other model-heavy custom node, you know the drill from the ComfyUI ecosystem playbook: this is where the real first-run cost lives. The loader pulls both models down from Hugging Face on first use, so your first "run" is really a download in disguise.
What it actually loads
Two components, each with a default from the author:
orpheus_model_path(defaultcanopylabs/orpheus-3b-0.1-ft) - the Orpheus TTS transformer. The loader downloads the config and the safetensors (~6 GB), loads it in bfloat16, and moves it to CUDA if available, falling back to CPU otherwise.snac_model_path(defaulthubertsiuzdak/snac_24khz) - the SNAC neural codec that turns the model's predicted audio codes into a real waveform at 24 kHz. The loader wraps it in a compatibility layer because different SNAC versions expose different APIs; the wrapper figures out which decode method the model has and uses it.
Both paths are plain strings, and here's the nice bit: they don't have to be Hugging Face repo IDs. Point orpheus_model_path at a local folder that already contains the model and the loader will use it as-is instead of re-downloading - handy if you've already fetched Orpheus for Unsloth or a Colab run and don't want to duplicate several gigabytes.
Inputs and output
snac_model_path(optional, defaulthubertsiuzdak/snac_24khz)orpheus_model_path(optional, defaultcanopylabs/orpheus-3b-0.1-ft)
Output: a single model of type ORPHEUS_MODEL - a bundle holding the SNAC model, the Orpheus model, its tokenizer, and the device it lives on. That output plugs into the model input on OrpheusGenerate and nowhere else.
Installing
ComfyUI Manager (search "Orpheus") or:
cd ComfyUI/custom_nodes
git clone https://github.com/ShmuelRonen/ComfyUI-Orpheus-TTS.git
Then install the dependencies into ComfyUI's Python environment:
pip install torch numpy soundfile transformers huggingface_hub nltk snac
WSL 2 users: the pinned snac version can fail to build there; install from source instead - pip install git+https://github.com/hubertsiuzdak/snac.git. Restart ComfyUI after that.
Gotchas worth knowing
The first load is slow because it's downloading. Give it a few minutes on a normal connection; the console shows progress. If you're on a machine with less than ~8 GB of VRAM, note that this pack has no quantization - the 3B model sits in bfloat16, so a low-VRAM card either spills or stalls, and CPU-only mode is a waiting game.
Private or rate-limited Hugging Face repos need a token. The pack reads an hf_config.json file in its own directory containing {"token": "YOUR_HF_TOKEN"} - drop that in, restart, and the loader authenticates. For public models you'll never need it.
And one thing that trips people up: the loader downloads the model, but the generate node does the generating. If you hit Run and it looks like the loader is doing everything, it is - the actual speech comes out one node later.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| snac_model_pathopt | STRING | hubertsiuzdak/snac_24khz | — |
| orpheus_model_pathopt | STRING | canopylabs/orpheus-3b-0.1-ft | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | ORPHEUS_MODEL | — |