Fish Audio S2.1 Pro text-to-speech: 83 languages from one model id, free and unlimited voice cloning, and mp3 / wav / pcm / opus output. Two billing tiers run the same model — $0.03 on standard and $0.005 on the free 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. Voice cloning costs nothing.
$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.
Yes, and we found no cap on how many voices an account can store — three clone slots created back to back were each billed at zero. 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. You only pay for the speech generated afterwards.
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.