step-tts-2
With step-tts-mini and stepaudio-2.5-tts. All three clone a voice from roughly ten seconds of reference audio and take emotion and delivery as natural-language direction. step-tts-mini is the low-latency, low-cost member.
Nothing matches that. Try a protocol, a capability or an endpoint path.
POST /v1/audio/speech returns the audio itself, not JSON: the body is the encoded file and Content-Type follows response_format, so mp3 comes back as audio/mpeg. model, input and voice are the fields that matter; speed and instructions are optional, and each model publishes its own voice names. Write the response straight to a file — decoding it as text will corrupt it.
curl https://api.chinaapi.ai/v1/audio/speech \
-H "Authorization: Bearer $CHINAAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "step-tts-2",
"input": "ChinaAPI text to speech verification.",
"voice": "cixingnansheng",
"response_format": "mp3"
}' \
--output speech.mp3
# HTTP 200, Content-Type: audio/mpeg
With step-tts-mini and stepaudio-2.5-tts. All three clone a voice from roughly ten seconds of reference audio and take emotion and delivery as natural-language direction. step-tts-mini is the low-latency, low-cost member.
With speech-2.8-turbo. The hd variant is the highest-fidelity option on this endpoint and prices accordingly; turbo trades some of that for latency at roughly half the rate.
With glm-tts. Both are multilingual and priced below the cloning models, which makes them the sensible default when you do not need a specific cloned voice.
voice is safe: each model has a default we send for you — Cherry on qwen3-tts-flash, tongtong on glm-tts, cixingnansheng on step-tts-2, step-tts-mini and stepaudio-2.5-tts, and alloy on mimo-v2.5-tts and both speech-2.8 models. OpenAI's own voice names are accepted everywhere; on the Chinese models they fold to that model's default rather than being rejected, so pointing an existing OpenAI client at this endpoint works unchanged. These are defaults, not the full roster — each vendor publishes more. Two variants take no voice name at all: mimo-v2.5-tts-voiceclone reads a reference clip from voice as a data URL, and mimo-v2.5-tts-voicedesign takes the description in instructions instead.
input, one character to one token, so the cost is known before you send the request. The generated audio is measured too and appears as completion tokens at a thousand tokens to the minute, but it is charged at a rate of zero — a fifty-nine character request that produced about five seconds of speech logged 59 prompt tokens, 83 completion tokens, and was billed on the 59. Punctuation and spaces count as characters.