Nodes/ComfyUI-OrpheusTTS-LMStudio/Orpheus TTS (LM Studio)
ComfyUI Node

Orpheus TTS (LM Studio)

Natural-sounding speech in ComfyUI, without the two-minute waits

By phazei·Created about a year ago·Updated 12 months ago· 5
Orpheus TTS (LM Studio)
    • audio
    textHello there. <chuckle> This should sound natural.
    voice
    model_key
    max_tokens4096
    temperature0.60
    top_p0.90
    repeat_penalty1.10
    timeout_seconds300
    auto_unloadFalse
    unload_delay0
    stop_at_eottrue
    seed-1
    debugfalse
    custom_stop

    Text-to-speech inside ComfyUI is usually a sad little corner. Most TTS nodes are either cloud-keyed, painfully slow, or both. This one is different: it runs the Orpheus 3B model through LM Studio and decodes the audio itself, and the author's whole pitch is that it's fast - about 0.5x realtime on an RTX 3090, meaning a 15-second clip takes roughly 30 seconds. For local TTS that's actually decent. The catch is the setup: it doesn't ship the model, and it depends on LM Studio being up and serving on its own. Get past that and you've got genuinely expressive, natural voices with emotion tags, no API key, no cloud.

    How it works

    Orpheus is a small Llama-style model fine-tuned to emit audio tokens instead of words. This node doesn't reimplement any of that - it hands the whole inference job to LM Studio, which runs the GGUF quant and serves it on localhost. The node formats your text as <|audio|>{voice}: {text}<|eot_id|>, streams the model's <custom_token_N> output over LM Studio's API, then maps each token ID back through the Orpheus codebook layout.

    Here's the clever bit: decoding tokens to sound uses SNAC, a neural audio codec, and the node runs that in a separate worker thread. Audio tokens stream in from LM Studio while the SNAC decoder crunches the previous batch at the same time, so the UI doesn't freeze and the progress bar reflects the slower of the two paths. Output is 24 kHz mono PCM, handed to ComfyUI as a standard AUDIO tensor.

    Two things get downloaded on first run: SNAC's weights (hubertsiuzdak/snac_24khz, small) pull from Hugging Face automatically, and the Orpheus model itself you fetch inside LM Studio. If the model never emits audio tokens, the node quietly returns 100ms of silence - so a "successful" run with no sound means something upstream is wrong.

    The inputs that matter

    Only a few deserve your attention:

    • text - what you want spoken. Orpheus understands emotion tags like <chuckle> and <sigh> right in the text; the default shows the trick.
    • voice - one of the eight built-in English voices: tara, leah, jess, leo, dan, mia, zac, zoe. No cloning here, you pick a preset.
    • model_key - paste the path-like identifier shown at the top of LM Studio's server window (e.g. orpheus-3b-0.1-ft). Leave it blank and it uses whatever model LM Studio currently has loaded.
    • temperature (0.6), top_p (0.9), repeat_penalty (1.1) - standard LLM knobs. Drop temperature if you want steadier delivery, raise it for more dramatic reads.
    • seed - -1 means random; set a value to make output reproducible.
    • timeout_seconds (300) - long scripts can blow past this; bump it if you get timeouts.

    The rest you can leave alone: auto_unload/unload_delay manage the model in LM Studio's memory, stop_at_eot controls whether generation halts at the end token, debug prints detailed LLM-vs-SNAC timing to your console, and custom_stop lets you add an extra stop string. The single audio output wires straight into any AUDIO consumer - VHS' SaveAudio, a VLC node, or video nodes that accept a soundtrack.

    Installing it

    Easiest via ComfyUI Manager: search "ComfyUI-OrpheusTTS-LMStudio" and hit install. Manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/phazei/ComfyUI-OrpheusTTS-LMStudio
    cd ComfyUI-OrpheusTTS-LMStudio
    pip install -r requirements.txt
    

    The real requirements are lmstudio>=1.5.0, snac>=1.2.1, torch>=2.1, numpy>=1.23, and transformers - note the README still says lmstudio>=0.2.20, but the shipped file needs 1.5+. You'll already have torch; the rest are light except for the one-time SNAC download. Restart ComfyUI.

    The LM Studio side

    This is the part that trips everyone up. In LM Studio: search and download isaiahbjork/orpheus-3b-0.1-ft-Q4_K_M-GGUF (a 3B quant, runs comfortably on 8GB VRAM), load it, then click the Local Server tab and hit Start Server. That server is the backend - if it's not running, the node fails with a connection error. Port is usually 1234.

    Troubleshooting

    • Connection errors → LM Studio's server isn't started, or a firewall is blocking port 1234.
    • Node not appearing → restart ComfyUI after install.
    • Runs but outputs silence → the model isn't emitting audio tokens; check model_key and confirm the loaded model is the Orpheus GGUF.
    • Slow → flip debug on. The timers tell you whether the LLM phase or the SNAC decode phase is the bottleneck.

    It's a one-node pack from a smaller author, so don't expect a huge community around it - but for a single trick (good local TTS that doesn't take minutes), it does the job cleanly.

    CategoryOrpheus/LM Studio

    Inputs (14)

    NameTypeDefaultDescription
    textSTRINGHello there. <chuckle> This should sound natural.
    voiceCOMBO8 options: tara, leah, jess, leo, dan, mia, +2
    model_keySTRING
    max_tokensINT4096256–131072
    temperatureFLOAT0.600–2
    top_pFLOAT0.900–1
    repeat_penaltyFLOAT1.101–2
    timeout_secondsINT3005–3600
    auto_unloadCOMBOFalse2 options: True, False
    unload_delayINT00–3600
    stop_at_eotBOOLEANtrue
    seedINT-1-1–18446744073709550000
    debugBOOLEANfalse
    custom_stopoptSTRING

    Outputs (1)

    NameTypeDescription
    audioAUDIO