Seed Speech 2.0 · Text to Speech
41 voices, knobs for speed and pitch, no filter
- audio
- task id
Script goes in, a 24 kHz mono MP3 comes out in one of 41 preset voices, for $0.072 per 1,000 characters. Bottle that and wire it into a video workflow and you've got narration without ever opening another app.
This is a full-featured TTS node by the standards of what else is in the pack. It has the things you'd hope for - a voice list, a language override, and a plain-language instructions field for delivery - and three knobs the Gemini TTS nodes don't expose at all: speed, pitch and volume. If you want to make a voice read faster and a semitone or two lower without reaching for a plugin, this is the node that lets you.
What it does
Your text is sent to SpicyAPI along with the voice and delivery settings; the hosted model returns audio, and the pack hands it back as a ComfyUI AUDIO value. Nothing runs on your hardware, so there's no model download and no VRAM cost - the sensible trade for a machine that can't host a voice model, and the sensible one anyway when you don't want to keep one warm.
There's a detail in the output worth knowing before you wire anything up: several results can come back as a batch, and Save Audio writes one file per result. If you were expecting one file and got three, that's why.
The inputs that matter
text- spoken exactly as written, and billed per 1,000 characters. This is the field that determines the price, so it's the one to trim.voice_id- 41 presets,stokie_enby default. The suffix tells you which languages the voice was built for, so check it before you write a French script for a voice tagged_en.instructions- tone, emotion, pace or volume in plain language. Not spoken, not billed: free direction, use it. "Read it like a tired documentary narrator" genuinely does something.speed- 0.5 to 2, where 1 is the voice's natural pace.pitch- minus 12 to plus 12 semitones, 0 is neutral.volume- a 0.5 to 2 multiplier.language- leave it on the default to auto-detect from the text, or force it.output_format-mp3, oropusfor an Ogg Opus file.sample_rate- the model uses 24000 Hz when you leave it alone.
Outputs: audio, and task id - a STRING identifying the request in SpicyAPI's logs.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI, open Settings > SpicyAPI, paste a key from spicyapi.ai/console/keys (or export SPICY_API_KEY), restart again. ComfyUI Manager: search SpicyAPI. No dependencies, no model files - the pack is a client for a host, which is why it works on a CPU-only build of ComfyUI.
Costing speech
$0.072 per 1,000 characters, so a 300-word voiceover is cheap and a 12-minute script is not. The rate shows on the node, and the quote taken before submission is what actually gets charged. Set Settings > SpicyAPI > Max cost per run and an over-budget read is refused before it starts. The instructions field is free, which makes it the best value on the node - fix delivery there before you consider paying for a retake. Seeds default to fixed so re-queueing doesn't double-bill; a cancelled run keeps generating server-side and is charged if it succeeds.
When it misbehaves
No SpicyAPI key is set for a missing or malformed key, 40310 for an unverified email, 40004 when the combination of voice, language and format isn't served - the message names the field, and nothing is charged. If a voice speaks with an odd accent, check language isn't forcing a reading the voice wasn't built for. And if a model isn't in your node menu, restart ComfyUI so the catalogue is rebuilt from your account.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | The words to be spoken, exactly as written. Billed per 1,000 characters. | |
| voice_id | COMBO | stokie_en | Preset voice. The suffix shows the languages it is built for. |
| instructions | STRING | How to read the text: tone, emotion, pace or volume. Not spoken and not billed. | |
| speed | FLOAT | 1.000.5–2 | Speaking rate; 1 is the voice's normal pace. |
| pitch | INT | 0-12–12 | Pitch shift in semitones; 0 keeps the voice's own pitch. |
| volume | FLOAT | 1.000.5–2 | Loudness multiplier; 1 is the normal level. |
| language | COMBO | model default | Forces the reading language. Leave empty to detect it from the text. |
| output_format | COMBO | mp3 | File format of the result; opus is an Ogg Opus file. |
| sample_rate | COMBO | model default | Sample rate in Hz. The model uses 24000 when omitted. |
| seed | INT | 00–2147483647 | This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | Several results come back as a batch; Save Audio writes one file each. |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |