Fish Audio Drama 3 是做「表演」的语音合成模型:表演指示直接写在文本里,一次请求最多 16 个说话人,人名和术语的读音可以用音素标签钉死。83 个语种,按千 UTF-8 字节计价:$0.065,2026 年 11 月 12 日前特价 $0.025。
和 S2.1 Pro 一样按输入文本的 UTF-8 字节数计价,不是按字符。拉丁字母 1 字节,西里尔字母和带重音的字母 2 字节,汉字、假名、韩文 3 字节。方括号里的表演指示和 <whisper> 这类标签也是文本的一部分,同样计费。
| 文本 | 字节 | 价格 | 特价(至 11-12) |
|---|---|---|---|
| 英文 1,000 字符 | 1,000 | $0.065 | $0.025 |
| 西里尔字母 1,000 个 | 2,000 | $0.13 | $0.05 |
| 中文 / 日文 / 韩文 1,000 字 | 3,000 | $0.195 | $0.075 |
特价到 2026-11-12 00:00 UTC(北京时间 8 点),之后自动按 $0.065 计费,不需要改任何代码。不足 100 字节按 100 字节计。失败不扣费。
Fish 官方授权音色(音色库返回 licensed: true 的)按 2.5 倍计价:每千字节 $0.1625,特价期间 $0.0625。社区音色和你自己克隆的音色照常计价。多人对白里只要有一个授权音色,整单按授权价。
在一句话前面加方括号写状态、意图或节奏,整句都会按这个方式说出来。指示用英文写或直接用中文写都可以,不需要和台词同一种语言。
[barely holding it together, forcing a smile] I'm fine. [强忍着、挤出笑容] 我没事。
只想改几个词,就用成对标签包住它们。支持的标签:
<whisper>…</whisper><emphasis>…</emphasis><soft>…</soft><fast>…</fast><slow>…</slow><stress>…</stress><forceful>…</forceful>Really. <whisper>Go on without me.</whisper>
人名、品牌、术语读不准时,用音素标签把读音写死。英文用 CMU 音标(元音后的数字是重音:1 重读、0 不重读),中文用拼音,日文用罗马音:
<|phoneme_start|>EH1 N JH AH0 N IH0 R<|phoneme_end|>
句中切换语言用语言标签包住要换语言的那几个词,比如:
Thanks for coming. <french>Je voudrais une table pour deux, s'il vous plaît.</french>
语言标签是 Fish Audio 标注的实验功能:不保证每个语种、每个音色都有效,模型也可能自己切换语言。音色最好来自能流利说两种语言的人。
# ─── 一个音色,带表演指示 ─────────────────────────────────
curl -X POST https://api.apimodels.app/v1/audio/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "fish-drama-3",
"text": "[barely holding it together, forcing a smile] I am fine. Really. <whisper>Go on without me.</whisper>",
"reference_id": "VOICE_ID",
"format": "mp3"
}'
# { "code": 200, "data": { "taskId": "clxxx", "state": "pending" } }
# ─── 两个人的对白:reference_id 传数组,<|speaker:N|> 切换 ─────
curl -X POST https://api.apimodels.app/v1/audio/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "fish-drama-3",
"text": "<|speaker:0|>[tired, keeping her voice down] Did you lock the door?<|speaker:1|>[too quickly] Of course I did.<|speaker:0|>[a long pause] Then why is it open?",
"reference_id": ["VOICE_ID_A", "VOICE_ID_B"],
"format": "wav"
}'
# ─── 取结果 ─────────────────────────────────────────────
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/..."] } }| 字段 | 必填 | 类型 | 说明 |
|---|---|---|---|
| model | 是 | string | fish-drama-3 |
| text | 是 | string | 要合成的文本,可含表演指示、标签和 <|speaker:N|>;单次上限 10 万 UTF-8 字节 |
| reference_id | 否 | string | string[] | 一个音色 id,或多人对白时最多 16 个音色 id 的数组。也接受 voice_id 这个写法。 |
| format | 否 | string | mp3(默认)/ wav / pcm / opus |
| callback_url | 否 | string | 任务完成后的回调 URL |
S2.1 Pro 的其余参数(prosody、mp3_bitrate、sample_rate、latency、chunk_length)照样原样转给模型,取值范围见 S2.1 Pro 文档。
试一试:Playground
在一句话前面加方括号,比如「[强忍着、挤出笑容] 我没事。」,整句都会按这个状态说出来。只改几个词就用 <whisper>、<emphasis>、<soft>、<fast>、<slow>、<stress>、<forceful> 包住它们。指示可以用英文写,也可以直接用中文写。
reference_id 传最多 16 个音色 id 的数组,每段台词前写 <|speaker:N|>,N 是数组下标、从 0 开始。音色可以来自 Fish 音色库,也可以是你自己克隆的。数组只有 fish-drama-3 接受,发给 fish-s2.1-pro 会返回 400。
每千 UTF-8 字节 $0.065,2026 年 11 月 12 日前特价 $0.025。拉丁字母 1 字节、汉字 3 字节,所以英文 1000 字符 $0.065,中文 1000 字 $0.195(特价期间 $0.025 和 $0.075)。不足 100 字节按 100 字节计,失败不扣费。