Groq Orpheus TTS
Instant TTS that doesn't melt your GPU
- audio
If you want text-to-speech inside ComfyUI and you don't want to babysit a local model, Groq's hosted Orpheus voices are the fastest thing you'll touch this week. This node wraps Groq's OpenAI-compatible audio endpoint, so "render" happens on Groq's servers in a second or two, and your machine just converts the WAV into a ComfyUI AUDIO tensor. No VRAM, no model files, no CUDA dance.
Orpheus is Canopy Labs' TTS model, hosted by Groq, and Groq's whole thing is speed - this is the TTS to reach for when you're iterating on a voice-over line by line and don't want a 30-second synth stall between takes.
How it works
The node calls client.audio.speech.create() against https://api.groq.com/openai/v1 - Groq serves an OpenAI-compatible API, so the node uses the OpenAI Python client pointed at Groq. The response comes back as WAV bytes, which soundfile (a pack dependency) decodes into a float waveform, reshaped into a Comfy AUDIO dict with the sample rate. The seed is used for ComfyUI's change-detection, so changing it re-runs the node.
The inputs that matter
- text - what gets spoken. Multiline, so write freely.
- model -
canopylabs/orpheus-v1-english, or the newercanopylabs/orpheus-arabic-saudiif you need Arabic. English by default. - voice - twelve named voices. The English set is
autumn,diana,hannah,austin,daniel,troy(the default); the Arabic set isabdullah,fahad,sultan,lulwa,noura,aisha. They're characterful, not generic-sounding - try a couple before you settle. - speed -
0.5to5.0, default1.0. Great for the "give me the rough cut fast" workflow. - seed and api_key - the seed controls ComfyUI re-runs; the key goes in the field or as a
.envvariable name.
The output
One AUDIO output. Wire it to a preview node or a saver (Video Helper Suite has audio save/preview nodes) and you're done. Because it's already a waveform tensor, it also plays nicely with Comfy's built-in audio handling.
Installing it
This is one node in the Aryan185/ComfyUI-ExternalAPI-Helpers pack, so the install is pack-wide:
cd ComfyUI/custom_nodes
git clone https://github.com/Aryan185/ComfyUI-ExternalAPI-Helpers.git
cd ComfyUI-ExternalAPI-Helpers
pip install -r requirements.txt
Restart ComfyUI and you'll find "Groq Orpheus TTS" under audio/generation. Manager works too - search "ExternalAPI-Helpers". The dependency that actually matters here is soundfile; the rest of the pack's requirements you mostly have already.
You need a Groq API key from console.groq.com - free tier is genuinely generous for TTS. Paste it in api_key, or set GROQ_API_KEY in a .env file (copy .env.example) and put GROQ_API_KEY in the field.
Where people get burned
The one real gotcha: seed here is not sent to the API the way you'd expect - it's used so ComfyUI knows the node changed. TTS quality varies slightly run to run; if you need a perfectly reproducible read, don't rely on the seed alone. Also, keep the text input wired to something real - an empty prompt returns an error from the API rather than silence, so guard against it if your text comes from another node.
Honestly, for the "I need a narration track and I need it now" case, this node is the one I'd reach for in this pack. It's the least setup, fastest feedback, and the voices are good.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| model | COMBO | canopylabs/orpheus-v1-english | 2 options: canopylabs/orpheus-v1-english, canopylabs/orpheus-arabic-saudi |
| voice | COMBO | troy | 12 options: autumn, diana, hannah, austin, daniel, troy, +6 |
| speed | FLOAT | 1.00.5–5 | — |
| seed | INT | 420–2147483646 | — |
| api_key | STRING | Directly put Groq API key or .env variable name (GROQ_API_KEY) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |