Short answer: StepAudio 3 TTS is StepFun's flagship text-to-speech model, available on EmpirioLabs through the standard OpenAI-style speech endpoint. Send up to 1,000 characters to POST /v1/audio/speech with model: "stepaudio-3-tts", pick one of twelve system voices, and describe the delivery you want in ordinary English with instruction.
Your first request
curl https://api.empiriolabs.ai/v1/audio/speech \
-H "Authorization: Bearer $EMPIRIOLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "stepaudio-3-tts",
"input": "Your call is being connected. Thanks for waiting.",
"voice": "lively-girl"
}'
The response carries a signed URL to the generated audio. The default format is mp3 at 24,000 Hz.
Choosing a voice
Twelve system voices ship with the model. Seven carry over from StepAudio 2.5, and five are new: Alfie, Ethan, Matthew, qingshunvsheng, and tianrunnvsheng.
| Voice | Character | Good for |
|---|---|---|
lively-girl | Bright, energetic female | Assistants, product walkthroughs |
vibrant-youth | Warm young male | Audiobooks, video dubbing |
soft-spoken-gentleman | Calm, gentle male | Long-form narration |
magnetic-voiced-male | Deep, weighty male | Trailers, dramatic reads |
elegantgentle-female | Sincere, reassuring female | Support lines, education |
livelybreezy-female | Light and persuasive | Marketing, short video |
zixinnansheng | Confident male | Audiobooks, training |
The full list is on the model reference. A custom cloned voice ID is accepted in the same field.
Directing the delivery
Instead of preset emotion tags, you write what you want and the model performs it. instruction sets the tone for the whole passage and accepts up to 500 characters.
{
"model": "stepaudio-3-tts",
"input": "We found something in the logs.",
"voice": "magnetic-voiced-male",
"instruction": "Slow and deliberate, like a trailer voice. Let the pause land."
}
For a single word or phrase, put the direction in parentheses inside input instead.
Languages
Set language to en, zh, ja, ko, fr, or es. Japanese, Korean, French, and Spanish are in preview. Leave it out and the model reads English.
Output formats
Choose mp3, wav, flac, opus, or pcm with response_format, and set sample_rate to 8000, 16000, 22050, or 24000.
Three things that catch people out
- Parentheses are direction, not words. Anything inside
()ininputis read as a delivery cue and never spoken. If you need a bracketed aside read aloud, rewrite it without parentheses. - 48,000 Hz is not available on this model. It appears in some general text-to-speech documentation, but StepAudio 3 TTS rejects it. Stay on 24,000 Hz for the highest quality.
instructionandvoice_labelare not interchangeable. StepAudio 3 TTS takesinstructionand rejectsvoice_label. Step TTS 2 is the opposite. Porting a request between them means swapping that field.
Pricing and limits
Billing is per character of input, pay as you go, with no subscription and no minimum. One Chinese character counts as one character, and two English letters count as one. The live rate is on the model page and the pricing page. Requests cap at 1,000 characters, so split longer scripts into sentence-sized calls and join the audio yourself.
Try it without writing code
Open StepAudio 3 TTS in the playground to audition voices and instructions, then copy the settings into your request. Full parameter reference: docs.empiriolabs.ai/models/stepaudio-3-tts.



