MiniMax Speech 2.8 Turbo · Text to Speech
Same 400 voices, 40% cheaper per character
- audio
- task id
Identical inputs to the HD node. Same voices, same emotion control, same thirteen fields. The only differences are the rate - 10.8 credits ($0.108) per 1,000 characters against HD's 18 - and whatever fidelity you give up for it. For a first pass on a long script, or anything going under music, that trade is usually the right one.
What it is
MiniMax Speech 2.8 Turbo as a PopNow node: text in, ComfyUI AUDIO out, no local model, no GPU. It's the throughput tier of the same model family, and the pack exposes the full parameter set rather than a cut-down version, which is not always the case with hosted TTS wrappers.
Where it earns its place in a graph: dialogue for a video, narration for a slideshow, scratch tracks while you're still editing the script. All of those are cases where you'll re-render three or four times, and per-character billing makes the cheaper tier compound into real money saved.
How it works
Your text and voice settings go out as one request; PopNow renders the speech and the node decodes the returned audio into the standard AUDIO dict that Save Audio understands. No caching, no reuse - every run is a fresh render at the per-character rate, which is exactly why a 400-character audition costs almost nothing and a 5000-character chapter doesn't.
The formatting details are the ones people miss. output_format defaults to mp3; pcm gives you headerless 16-bit little-endian samples if something downstream parses raw audio. sample_rate, bitrate and audio_channels sit on model default unless you change them, which the model reads as 32000 Hz, 128000 bps and mono - sensible, but worth knowing if you're matching an existing track.
The inputs
text- exactly what gets spoken, up to 5000 characters. Sound tags in parentheses, like(sighs)or(laughs), are performed rather than said aloud.voice_id-Calm_Womanby default, out of a list of 400-plus, labelled with the language each was built for. The English selection is enormous and uneven -English_expressive_narratorandEnglish_Aussie_Blokeare the two I'd audition first for a normal read.emotion-neutral, plushappy,sad,angry,fearful,disgusted,surprised. This is the field that does the acting.speed,pitch,volume- rate, semitones, loudness multiplier. Small moves.language- pronunciation hint;autodetects from the text, and setting it helps on mixed-language lines.english_normalization- off by default; on makes numbers, dates and abbreviations read the way a person says them.pronunciation_dict- JSON list of{"alias", "pronunciation"}objects for the names the voice keeps getting wrong.
Outputs: audio and task id.
Swapping Turbo for HD without wrecking your mix
The temptation is to draft on Turbo and re-render the final on HD with the same settings. Do it - but listen to the swap before you commit. Two models at the same declared pitch, speed and emotion still deliver differently, and a line that sounded wry on Turbo may land flatter on HD. Re-audition the three or four key lines rather than the whole script.
Also resist stacking delivery settings. emotion: sad plus speed: 0.7 plus pitch: -6 doesn't give you a sadder read, it gives you a slowed-down robot. Pick the emotion, keep speed near 1, and let the voice do the work.
Install
Manager → search PopNow → Install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Restart, add a key from popnow.ai/api/console/keys via Settings > PopNow, restart again so the node list comes from your account. Nothing else installs: the pack's dependency list is empty and audio decoding uses ComfyUI's bundled PyAV.
Troubleshooting
PopNow 40201 means the wallet is empty - at this rate that takes real volume. PopNow 40310 means the account's email isn't verified, which can look like a broken voice list until you read the error. A 400 naming pronunciation_dict is malformed JSON: it wants a list of objects, not a plain dictionary. And if you cancel a long render, the job keeps running on PopNow and is charged if it succeeds - the node stops waiting, not the job.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | The words to be spoken, exactly as written. Sound tags such as (sighs) or (laughs) are performed. Billed per 1,000 characters. | |
| voice_id | COMBO | Calm_Woman | System voice. The label shows the voice name and, where known, the language it is built for. |
| emotion | COMBO | neutral | Emotion of the reading. |
| 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.00.1–10 | Loudness multiplier; 1 is the normal level. |
| language | COMBO | auto | Language hint that improves pronunciation; auto detects it from the text. |
| output_format | COMBO | mp3 | File format of the result; pcm is headerless 16-bit little-endian samples. |
| sample_rate | COMBO | model default | Sample rate in Hz. The model uses 32000 when omitted. |
| bitrate | COMBO | model default | MP3 bitrate in bits per second; ignored for other formats. The model uses 128000 when omitted. |
| audio_channels | COMBO | model default | Mono or stereo output. Mono when omitted. |
| english_normalization | BOOLEAN | false | Read numbers, dates and abbreviations in English text the way a person would say them. |
| pronunciation_dict | STRING | Custom pronunciations: each alias in the text is read as its pronunciation. JSON. A list of objects with "alias", "pronunciation". |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | Several results come back as a batch; Save Audio writes one file each. |
| task id | STRING | The PopNow task id, for the API console logs or support. |