Fish Audio S2.1 Pro text-to-speech: 83 languages from one model id, twenty free voice clones, and mp3 / wav / pcm / opus output. Two billing tiers run the same model — $0.03 on standard and $0.005 on the economy tier, per 1,000 UTF-8 bytes.
This model is billed on the UTF-8 byte length of your input text, while every other speech model here bills per character. A Latin letter is one byte, a Chinese character is three, an emoji is four. A thousand Chinese characters therefore costs three times a thousand English ones. If you are switching from another speech model, re-estimate CJK workloads on bytes rather than carrying the character count across.
| Text | Bytes | fish-s2.1-pro | fish-s2.1-pro-free |
|---|---|---|---|
| 1,000 English characters | 1,000 | $0.030 | $0.005 |
| 1,000 Chinese characters | 3,000 | $0.090 | $0.015 |
| 500 Chinese + 500 Latin | 2,000 | $0.060 | $0.010 |
Charged only on success. Your first 20 voice clones are free.
$0.03 per 1,000 bytes. Use it whenever a person is waiting on the audio. We measured about 17 seconds for 2,000 bytes. Requests are covered by the provider’s paid-tier data agreement.
$0.005 per 1,000 bytes, same model and same audio quality. Right for auditioning voices, prototyping and non-urgent batches. Three trade-offs below.
The upstream free window also has a published end date and has already been extended four times. Treat the price as temporary.
# ─── 合成一段语音 ───────────────────────────────────────
curl -X POST https://api.apimodels.app/v1/audio/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "fish-s2.1-pro",
"text": "Hello from apimodels.",
"format": "mp3"
}'
# { "code": 200, "data": { "taskId": "clxxx", "state": "pending" } }
# ─── 用克隆出来的音色说话 ────────────────────────────────
curl -X POST https://api.apimodels.app/v1/audio/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "fish-s2.1-pro",
"text": "Now I speak in the cloned voice.",
"reference_id": "YOUR_VOICE_ID",
"format": "wav",
"prosody": { "speed": 1.2 }
}'
# ─── 取结果 ─────────────────────────────────────────────
curl "https://api.apimodels.app/v1/audio/generations?task_id=TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
# { "code": 200, "data": { "state": "completed", "resultUrls": ["https://r2.apimodels.app/..."] } }| Field | Required | Type | Description |
|---|---|---|---|
| model | Yes | string | fish-s2.1-pro / fish-s2.1-pro-free |
| text | Yes | string | The text to speak; up to 100,000 UTF-8 bytes per request |
| reference_id | No | string | Voice id, either one you cloned or one from the Fish voice library. voice_id is accepted as an alias. |
| format | No | string | mp3 (default) / wav / pcm / opus |
| prosody | No | object | { speed, volume }. speed ranges 0.5-2.0. A flat speed field is accepted too. |
| mp3_bitrate | No | number | 64 / 128 / 192, mp3 only |
| sample_rate | No | number | Sample rate, e.g. 44100 |
| latency | No | string | balanced (default, faster first audio) / normal (steadier) |
| chunk_length | No | number | 100-300, default 200. Smaller chunks start sooner; larger ones are more efficient for long text. |
| callback_url | No | string | Webhook URL called when the task completes |
Try it in the Playground
Per 1,000 UTF-8 bytes of input text, not per character. A Latin letter is one byte and a Chinese character is three, so 1,000 English characters costs $0.03 on the standard tier while 1,000 Chinese characters is 3,000 bytes and costs $0.09. The free tier is a sixth of that. Voice cloning is not billed, and failed requests are never charged.
Twenty. Past twenty stored voices each additional slot costs $1, and deleting a voice frees that slot again, so the fee is for holding many voices rather than for cloning itself. Send a clean sample of at least ten seconds, get a voice id in roughly 5 to 20 seconds, then pass it as reference_id on later synthesis requests. The speech you generate afterwards is billed separately at the per-byte rate.
They run the same model, so the audio quality is identical. The free tier is six times cheaper but best-effort: the same 2,000-byte passage took 41 seconds against 17 on the standard tier in our measurement, there is no latency or uptime commitment, the provider may use free-tier requests to improve their models, and the free window has a published end date. Use the free tier to evaluate and prototype, the standard tier when someone is waiting.