MiniMax Speech 2.8 Turbo is the better first choice for adult narration and character dialogue: $0.072 per 1,000 characters, against $0.12 for HD. Both share the same 472 system voices and the same delivery controls. Based on our September 2026 tests, both read explicit adult scripts word for word and perform sound tags such as (breath) and (gasps) instead of speaking them.
The quality gap is small. In Artificial Analysis's blind listening arena, HD scores about 1173 Elo and Turbo about 1153, and their confidence margins overlap. HD costs two-thirds more for that edge, so start on Turbo and move a line to HD only when you hear a specific problem, such as stiff phrasing or an awkward emotional turn.
Price and capability comparison
Billing is per character, including spaces, punctuation, line breaks and inline sound tags, with no rounding up to 1,000: a 115-character line costs $0.0083 on Turbo and $0.0138 on HD.
| Detail | Speech 2.8 Turbo | Speech 2.8 HD |
|---|---|---|
| Per 1,000 characters | $0.072 | $0.12 |
| Maximum request: 5,000 characters, about 6 to 7 minutes of speech | $0.36 | $0.60 |
| Ten-minute narration, about 7,750 characters in 2 requests | $0.56 | $0.93 |
| System voices | 472 | 472 |
| Emotion, speed, pitch, volume, pronunciation dictionary | Available | Available |
| Default audio | Mono MP3, 32 kHz | Mono MP3, 32 kHz |
| Other formats | WAV, FLAC, raw PCM | WAV, FLAC, raw PCM |
The Turbo task and HD task are asynchronous single-voice generators, so neither suits a live voice agent. Voice cloning, which MiniMax's own API offers, is not available on these routes, and neither is a multi-speaker array: two characters need two requests and an audio edit. Generated audio is kept for 14 days, so download what you plan to use.
Adult scripts and sound tags
Both versions read explicit adult vocabulary as written, in direct passages and audiobook-style narration, with nothing skipped or truncated. Cue-heavy passages with (breath), (pant), (groans) and (gasps) came back with those sounds performed, not read out as words.
MiniMax's documentation lists 19 tags for Speech 2.8: (laughs), (chuckle), (coughs), (clear-throat), (groans), (breath), (pant), (inhale), (exhale), (gasps), (sniffs), (sighs), (snorts), (burps), (lip-smacking), (humming), (hissing), (emm) and (sneezes). Write the tag inside text where the sound should happen. The script for the Turbo teasing-rival sample starts with (laughs); the HD late-night voice note script includes (sighs). Play the samples to check the delivery of those cues.
A useful first character input
For a fictional adult sending a playful voice message, paste this as the input of a Turbo task (the model page's Playground takes the same fields):
{
"text": "(laughs) You took your time. I saved you a seat, but you'll have to tell me what kept you. Stay for one more drink?",
"voice_id": "Calm_Woman",
"language": "en",
"emotion": "neutral",
"speed": 1,
"pitch": 0,
"volume": 1,
"output_format": "mp3"
}This costs $0.0083 on Turbo and $0.0138 on HD. MiniMax has no free-form instructions field, and the API rejects it; direction comes from the voice, the emotion value and the numeric controls. Calm_Woman is the default voice, and Deep_Voice_Man is another system ID for a lower male voice. Choose a different preset when you need a different timbre; pushing pitch down an octave does not replace casting a suitable voice.
To compare HD, keep this exact input and switch only the model. If you also change the script or voice, you can no longer tell what the model change did.
The controls that change a performance
| Control | Range or options | Useful starting decision |
|---|---|---|
emotion | neutral, happy, sad, angry, fearful, disgusted, surprised | Start neutral; happy can make a playful line more animated |
speed | 0.5 to 2; normal is 1 | Try 0.9 if the line is rushed |
pitch | -12 to +12 semitones; normal is 0 | Keep 0 until you have chosen the voice |
volume | 0.1 to 10; normal is 1 | Keep 1; set final mix levels in your editor |
language | auto by default; 40 languages, including en, es, ja, ko | Set it for short or mixed-language scripts; it does not translate the text |
english_normalization | Boolean; defaults to false | Turn it on for numbers and dates in English prose |
emotion applies to the whole request. If a character shifts from playful to fearful, generate those passages separately with the same voice_id and different emotion values, then join them.
For a name the voice keeps misreading, add a pronunciation dictionary entry instead of changing the character:
{
"text": "Good evening, Celine. I was hoping you'd call.",
"voice_id": "Calm_Woman",
"language": "en",
"pronunciation_dict": [
{"alias": "Celine", "pronunciation": "seh LEEN"}
]
}The dictionary takes up to 100 entries. alias is the spelling in your script and cannot contain a slash. pronunciation can be plain respelled words or IPA in parentheses, such as (rɪˈzjuːm). It does not change the price.
Choose the right audio format
Use MP3 for a web preview and WAV or FLAC for further editing. MP3 bitrate is 32,000, 64,000, 128,000 (the default) or 256,000 bits per second and applies only to MP3. Sample rate is 8,000, 16,000, 22,050, 24,000, 32,000 (the default) or 44,100 Hz; choose 44,100 only if your editing project needs it, because a higher rate does not fix a mispronounced line.
Raw PCM is headerless 16-bit little-endian audio that browsers cannot play. Choose WAV unless your software already knows the sample rate and channel count. audio_channels accepts mono or stereo; stereo does not put different characters on separate tracks.
Fix the problem you can actually hear
| Problem | First repair |
|---|---|
| A production note is spoken | Remove it from text; only the tags listed above belong inline |
| A character name sounds wrong | Add a pronunciation dictionary entry |
| A playful line sounds angry | Set emotion to neutral or happy; keep the words and voice unchanged |
| Two characters share one voice | Generate each turn with its own voice_id; speaker labels in one text field do not switch voices |
| A clip is too rushed | Try speed 0.9, or shorten a sentence that carries too much |
| A breath is badly placed | Move or remove that tag instead of changing the model |
| Audio is distorted after a large volume boost | Return volume to 1 and adjust the accepted file in your editor |
For a ten-scene project with 2,000 characters per scene, one Turbo pass costs $1.44 and one HD pass $2.40. Regenerating a single 200-character line costs $0.0144 on Turbo or $0.024 on HD, so fixing one line is far cheaper than buying a second full pass.
Start with Turbo, solve delivery problems with the controls above, and send only the lines that still sound wrong to HD. If you need a voice reference or a different price model, see the comparison of uncensored text-to-speech APIs.







