1. 基础参数说明
text(必需)
要转换为语音的文本内容。
- 类型: string
- 必填: 是
- 说明: 支持中文、英文、日文等多种语言。文本中的数字、日期、URL 等会被自动规范化处理。
{
"text": "一个汇集全球顶级品牌的AI超市,汇集全球各类顶尖AI模型。"
}
reference_id
音色模型 ID,指定使用哪个已训练好的声音模型。
- 类型: string 或 string[]
- 必填: 与
references二选一 - 单说话者: 传 string(模型 ID)
- 多说话者: 传 string[](多个模型 ID 数组)
{
"reference_id": "738d0cc1a3e9430a9de2b544a466a7fc"
}
references(零样本克隆)
无需提前训练模型,直接传入参考音频进行声音克隆。
- 类型: ReferenceAudio[](单说话者)或 ReferenceAudio[][](多说话者)
- 必填: 与
reference_id二选一 - 说明: 每个参考音频对象包含
audio(Base64 编码的音频数据)和text(参考音频对应的文本)
{
"references": [
{
"audio": "base64_encoded_audio_data",
"text": "This is the reference text."
}
]
}
2. Header 参数
model
指定使用的 TTS 模型。
- 类型: string
- 默认值: s2-pro
- 可选值:
s1— 旧版模型,使用(括号)语法控制情感s2-pro— 最新推荐模型,使用[方括号]自然语言描述控制情感
model: s2-pro
注意:
s2-pro是推荐模型,支持多人对话模式;s1不支持多人模式。
3. Query 参数
response_format
控制音频返回方式。
- 类型: string
- 默认值: url
- 可选值:
url— 返回转存后的音频 URLdata— 直接返回原始音频二进制数据
4. 高级参数
temperature
控制表达性的多样程度。
- 类型: number
- 默认值: 0.7
- 范围: 0 <= x <= 1
- 说明: 值越高,表达越多样;值越低,表达越一致稳定。
top_p
通过 nucleus sampling 控制输出多样性。
- 类型: number
- 默认值: 0.7
- 范围: 0 <= x <= 1
chunk_length
文本分段处理长度。
- 类型: integer
- 默认值: 300
- 范围: 100 <= x <= 300
- 说明: 每段处理的字符数,较小的值减少延迟但可能影响连贯性。
normalize
是否对文本进行标准化处理。
- 类型: boolean
- 默认值: true
- 说明: 开启后会对英文和中文文本进行优化,改善数字、日期的朗读稳定性。设置为
false可以保留音素控制标签,但数字/日期/URL 的朗读稳定性会降低。
sample_rate
音频采样率。
- 类型: integer | null
- 默认值: null(使用各格式默认值)
- 各格式默认采样率:
- WAV/PCM: 44100 Hz
- MP3: 44100 Hz
- Opus: 48000 Hz
mp3_bitrate
MP3 比特率。
- 类型: integer
- 默认值: 128
- 可选值: 64, 128, 192
- 单位: kbps
- 说明: 仅当
format为mp3时生效。
opus_bitrate
Opus 比特率。
- 类型: integer
- 默认值: -1000
- 可选值: -1000(自动), 24000, 32000, 48000, 64000
- 单位: bps
- 说明: 仅当
format为opus时生效。
latency
延迟与质量的权衡。
- 类型: string
- 默认值: normal
- 可选值:
normal— 最佳质量balanced— 降低延迟low— 最低延迟
max_new_tokens
每个文本段生成的最大音频 token 数。
- 类型: integer
- 默认值: 1024
repetition_penalty
重复模式惩罚系数。
- 类型: number
- 默认值: 1.2
- 说明: 高于 1.0 的值会减少音频重复模式。
min_chunk_length
新分段前的最少字符数。
- 类型: integer
- 默认值: 50
- 范围: 0 <= x <= 100
condition_on_previous_chunks
是否使用前一段音频作为上下文。
- 类型: boolean
- 默认值: true
- 说明: 开启可保持语音一致性,建议保持默认。
early_stop_threshold
批量处理提前停止阈值。
- 类型: number
- 默认值: 1
- 范围: 0 <= x <= 1
prosody(韵律控制)
控制输出语音的语速和音量。
- 类型: object
- 属性:
speed— 语速(number),1 为正常速度volume— 音量(number),0 为正常音量normalize_loudness— 是否响度归一化(boolean)
{
"prosody": {
"speed": 1.0,
"volume": 0,
"normalize_loudness": true
}
}
5. 多人对话模式(Multi-Speaker)
注意: 多人模式仅支持
s2-pro模型。
使用已训练的语音模型
通过 reference_id 数组和文本中的 <|speaker:N|> 标签实现多说话者对话。
reference_id: 传入语音模型 ID 数组,如["speaker-0-id", "speaker-1-id"]text: 使用<|speaker:0|>,<|speaker:1|>标签标识说话者切换
{
"text": "<|speaker:0|>Good morning!<|speaker:1|>Good morning! How are you?<|speaker:0|>I'm great, thanks!",
"reference_id": ["model-id-alice", "model-id-bob"],
"model": "s2-pro"
}
使用零样本克隆
无需预训练模型,通过 references 二维数组为每个说话者传入参考音频。
references: 二维数组,每个内部数组对应一个说话者的参考音频reference_id: 标识符数组(零样本时可传任意字符串)
{
"text": "<|speaker:0|>Hello!<|speaker:1|>Hi there!",
"references": [
[
{ "audio": "base64_audio_1", "text": "reference text for speaker 0" }
],
[
{ "audio": "base64_audio_2", "text": "reference text for speaker 1" }
]
],
"reference_id": ["speaker-0", "speaker-1"],
"model": "s2-pro"
}
中文多人对话示例
{
"text": "<|speaker:0|>早上好!<|speaker:1|>早上好!今天天气真不错。<|speaker:0|>是啊,适合出去走走。",
"reference_id": ["alice-model-id", "bob-model-id"],
"model": "s2-pro"
}
6. 情感控制(Emotion Control)
Fish Audio 支持 64+ 种情感表达和声音风格,通过在文本中插入情感标签来控制语音的情感表现。
语法规则
| 模型 | 语法 | 示例 |
|---|---|---|
| s1 | (括号) 语法,使用固定标签 |
(happy) What a beautiful day! |
| s2-pro | [方括号] 语法,使用自然语言描述 |
[happy] What a beautiful day! |
基本情感(24种)
| 情感 | S1 标签 | 说明 | 适用场景 |
|---|---|---|---|
| 高兴 | (happy) |
愉快、乐观的语气 | 好消息、问候 |
| 悲伤 | (sad) |
忧郁、低落的语气 | 同情、坏消息 |
| 生气 | (angry) |
沮丧、侵略性 | 投诉、警告 |
| 兴奋 | (excited) |
充满活力、热情 | 宣布、庆祝 |
| 平静 | (calm) |
平和、放松 | 指令、冥想 |
| 紧张 | (nervous) |
焦虑、不确定 | 免责声明、道歉 |
| 自信 | (confident) |
坚定、自信 | 演讲、销售 |
| 惊讶 | (surprised) |
震惊、惊奇 | 反应、发现 |
| 满意 | (satisfied) |
满足、愉悦 | 确认、评价 |
| 高兴的 | (delighted) |
非常愉悦、欢乐 | 庆祝、赞美 |
| 害怕 | (scared) |
恐惧、害怕 | 警告、恐怖故事 |
| 担心 | (worried) |
关切、困扰 | 关切、提问 |
| 难过 | (upset) |
不安、痛苦 | 投诉、问题 |
| 沮丧 | (frustrated) |
恼怒、无奈 | 技术问题、延误 |
| 抑郁 | (depressed) |
非常悲伤、绝望 | 严肃话题 |
| 共情的 | (empathetic) |
理解、关心 | 支持、咨询 |
| 尴尬 | (embarrassed) |
羞愧、尴尬 | 道歉、错误 |
| 厌恶 | (disgusted) |
排斥、反感 | 负面评价 |
| 感动 | (moved) |
被情感触动 | 感人时刻 |
| 骄傲 | (proud) |
有成就感、满足 | 成就、表扬 |
| 放松 | (relaxed) |
自在、随意 | 日常对话 |
| 感激 | (grateful) |
感谢、欣赏 | 感谢、赞赏 |
| 好奇 | (curious) |
好问、感兴趣 | 提问、探索 |
| 讽刺 | (sarcastic) |
讽刺、嘲弄 | 幽默、批评 |
高级情感(25种)
| 情感 | S1 标签 | 说明 |
|---|---|---|
| 轻蔑 | (disdainful) |
蔑视、鄙视 |
| 不开心 | (unhappy) |
不满、不满意 |
| 焦虑 | (anxious) |
非常担心、不安 |
| 歇斯底里 | (hysterical) |
情绪失控 |
| 冷漠 | (indifferent) |
不关心、中立 |
| 不确定 | (uncertain) |
怀疑、不确定 |
| 怀疑 | (doubtful) |
怀疑、质疑 |
| 困惑 | (confused) |
迷茫、不解 |
| 失望 | (disappointed) |
失望、不满 |
| 后悔 | (regretful) |
抱歉、懊悔 |
| 内疚 | (guilty) |
有罪、负责 |
| 羞愧 | (ashamed) |
深感尴尬 |
| 嫉妒 | (jealous) |
嫉妒、怨恨 |
| 羡慕 | (envious) |
想要别人拥有的 |
| 希望 | (hopeful) |
对未来乐观 |
| 乐观 | (optimistic) |
积极展望 |
| 悲观 | (pessimistic) |
消极看法 |
| 怀旧 | (nostalgic) |
怀念过去 |
| 孤独 | (lonely) |
孤立、独处 |
| 无聊 | (bored) |
无趣、厌倦 |
| 鄙视 | (contemptuous) |
强烈批评 |
| 同情 | (sympathetic) |
表示同情 |
| 怜悯 | (compassionate) |
深度关怀 |
| 坚定 | (determined) |
决心、决定 |
| 顺从 | (resigned) |
接受失败 |
语气标记(5种)
| 语气 | S1 标签 | 说明 | 使用场景 |
|---|---|---|---|
| 匆忙 | (in a hurry tone) |
急促、紧急 | 时间敏感信息 |
| 喊叫 | (shouting) |
大声、呼叫 | 吸引注意 |
| 尖叫 | (screaming) |
非常高亢、恐慌 | 紧急、恐惧 |
| 低语 | (whispering) |
非常轻柔、秘密 | 秘密、安静场景 |
| 柔和 | (soft tone) |
轻柔和缓 | 安慰、摇篮曲 |
音频效果(10种)
| 效果 | S1 标签 | 说明 | 建议文本 |
|---|---|---|---|
| 大笑 | (laughing) |
大笑声 | Ha, ha, ha |
| 轻笑 | (chuckling) |
轻声笑 | Heh, heh |
| 啜泣 | (sobbing) |
大声哭泣 | (可选) |
| 大哭 | (crying loudly) |
强烈哭泣 | (可选) |
| 叹气 | (sighing) |
呼气放松/沮丧 | sigh |
| 呻吟 | (groaning) |
沮丧声音 | ugh |
| 喘息 | (panting) |
气喘吁吁 | huff, puff |
| 倒吸 | (gasping) |
突然吸气 | gasp |
| 打哈欠 | (yawning) |
困倦声音 | yawn |
| 打鼾 | (snoring) |
睡觉声音 | zzz |
特殊效果
| 效果 | S1 标签 | 说明 |
|---|---|---|
| 观众笑声 | (audience laughing) |
人群笑声 |
| 背景笑声 | (background laughter) |
环境笑声 |
| 人群笑声 | (crowd laughing) |
大型群体笑声 |
| 短暂停 | (break) |
短暂停顿 |
| 长暂停 | (long-break) |
延长停顿 |
使用规则
放置规则
英文及大部分语言:情感标签必须放在句子开头。
✅ (happy) What a wonderful day!
❌ What a (happy) wonderful day!
中文:标签同样建议放在句子开头。
✅ (happy) 今天真是美好的一天!
组合使用
可以将多个情感/效果组合使用:
(sad)(whispering) I miss you so much.
(angry)(shouting) Get out of here now!
情感过渡
创建自然的情感变化:
(happy) I got the promotion!
(uncertain) But... it means relocating.
(hopeful) Though it's a great opportunity.
(determined) I'm going to make it work!
强度修饰
通过描述性修饰词微调情感强度:
(slightly sad) I'm a bit disappointed.
(very excited) This is absolutely amazing!
(extremely angry) This is unacceptable!
模型支持矩阵
| 模型 | 基本情感 | 高级情感 | 语气标记 | 音效 | 强度修饰 |
|---|---|---|---|---|---|
| Fish Speech 1.5 | ✅ | 有限 | ✅ | 6/10 | ❌ |
| Fish Audio S1 | ✅ | ✅ | ✅ | ✅ | ✅ |
| Fish Audio S2-Pro | ✅ | ✅ | ✅ | ✅ | ✅ |
情感强度等级
| 基础情感 | 轻度 | 中度 | 强烈 |
|---|---|---|---|
| 高兴 | satisfied | happy | delighted |
| 悲伤 | disappointed | sad | depressed |
| 生气 | frustrated | angry | furious |
| 害怕 | nervous | scared | terrified |
| 兴奋 | interested | excited | ecstatic |
常见组合
| 场景 | 情感组合 |
|---|---|
| 低声说秘密 | (mysterious)(whispering) |
| 愤怒大喊 | (angry)(shouting) |
| 悲伤叹息 | (sad)(sighing) |
| 兴奋大笑 | (excited)(laughing) |
| 紧张提问 | (nervous)(uncertain) |
7. 精细控制(Fine-grained Control)
精细控制允许你精确指定某些字词的发音。
注意: 使用音素控制标签时,需要将
normalize设为false,以防止文本规范化处理破坏标签。
{
"normalize": false,
"text": "我是一个<|phoneme_start|>gong1<|phoneme_end|>..."
}
中文音素控制
使用带声调数字的拼音(tone-number pinyin)来控制中文发音。
声调数字
| 声调 | 示例 | 说明 |
|---|---|---|
| 1 | ma1 | 高平调 |
| 2 | ma2 | 上升调 |
| 3 | ma3 | 低降升调 |
| 4 | ma4 | 下降调 |
| 5 | ma5 | 轻声 |
多音节词
每个字符独立包裹在音素标签中:
我是一个<|phoneme_start|>gong1<|phoneme_end|><|phoneme_start|>cheng2<|phoneme_end|><|phoneme_start|>shi1<|phoneme_end|>。
也可以只标记有歧义的字符,其余保持原样:
请把这个字读作<|phoneme_start|>hang2<|phoneme_end|>。
多音字示例
| 词语 | 拼音控制 |
|---|---|
| 重庆 | chong2 qing4 |
| 重要 | zhong4 yao4 |
| 银行 | yin2 hang2 |
| 行走 | xing2 zou3 |
| 音乐 | yin1 yue4 |
| 快乐 | kuai4 le4 |
使用建议
- 每个汉字/音节使用一个音素标签
- 中文标点、括号、空格放在标签外部
- 多音字和专有名词建议手动选择读音
- 轻声使用 ma5 格式
英文音素控制
使用 CMU Arpabet 进行英文发音控制。
I am an <|phoneme_start|>EH1 N JH AH0 N IH1 R<|phoneme_end|>.
日语音素控制
使用 OpenJTalk 风格的罗马音素和音调标记。
<|phoneme_start|>ha0shi1ga0<|phoneme_end|>見えます。
副语言控制
添加自然的语音元素和停顿:
| 效果 | 标签 | 说明 | 可用版本 |
|---|---|---|---|
| 短暂停 | (break) |
短暂停顿 | V1.6+ |
| 长暂停 | (long-break) |
延长停顿 | V1.6+ |
| 呼吸声 | (breath) |
呼吸声音 | V1.6+ |
| 笑声 | (laugh) |
笑声 | V1.6+(测试中) |
| 咳嗽声 | (cough) |
咳嗽声音 | V1.6+(测试中) |
| 咂嘴声 | (lip-smacking) |
咂嘴声音 | V1.6+(测试中) |
| 叹气声 | (sigh) |
叹声音效 | V1.6+(测试中) |
I am, um, an (break) engineer.
也可以与音素控制结合使用:
I am, um, an (break) <|phoneme_start|>EH1 N JH AH0 N IH1 R<|phoneme_end|>.
8. 音频格式说明
支持的格式
| 格式 | 默认采样率 | 支持采样率 | 说明 |
|---|---|---|---|
| WAV | 44100 Hz | 8k, 16k, 24k, 32k, 44.1k | 16-bit 单声道 |
| PCM | 44100 Hz | 8k, 16k, 24k, 32k, 44.1k | 16-bit 单声道 |
| MP3 | 44100 Hz | 32k, 44.1k | 单声道,比特率 64/128/192 kbps |
| Opus | 48000 Hz | 48k | 单声道,比特率自动/24/32/48/64 kbps |
Content-Type 映射
| 格式 | Content-Type |
|---|---|
| wav | audio/wav |
| mp3 | audio/mpeg |
| pcm | audio/pcm |
| opus | audio/opus |
关于 format 参数
- 默认值: mp3
- 仅当
format为mp3时,mp3_bitrate参数才会生效 - 仅当
format为opus时,opus_bitrate参数才会生效 wav和pcm格式不受比特率参数影响
9. 最佳实践
参数推荐值
| 使用场景 | model | format | latency | chunk_length |
|---|---|---|---|---|
| 实时交互 | s2-pro | mp3 | low | 100 |
| 平衡模式 | s2-pro | mp3 | balanced | 200 |
| 高质量输出 | s2-pro | wav | normal | 300 |
normalize 的使用
- 保持默认
true: 大多数场景,数字、日期、URL 由系统自动优化 - 设置为
false: 需要使用精细控制(音素标签)时,但需自行处理数字/日期的朗读
多人对话注意事项
- 确保
model为s2-pro(s1 不支持多人模式) - 每个说话者都需要对应的
reference_id或references - 说话者数量与
reference_id/references数组长度一致 - 文本中使用的
<|speaker:N|>索引从 0 开始,且不能超出数组范围
情感控制注意事项
- 不要过度使用情感标签,建议每句使用一个主要情感
- s1 模型使用
(括号),s2-pro 使用[方括号]自然语言描述 - 情感标签不消耗 token 配额,不会增加额外延迟
- 每句建议最多组合 3 个情感标签
完整请求示例
{
"text": "<|speaker:0|>Good morning! How can I help you today?<|speaker:1|>I have a question about my order.",
"reference_id": ["support-voice", "customer-voice"],
"model": "s2-pro",
"temperature": 0.7,
"top_p": 0.7,
"chunk_length": 300,
"normalize": true,
"format": "mp3",
"mp3_bitrate": 128,
"latency": "normal",
"prosody": {
"speed": 1.0,
"volume": 0,
"normalize_loudness": true
},
"max_new_tokens": 1024,
"repetition_penalty": 1.2,
"condition_on_previous_chunks": true
}


评论(0)