本文档面向 API 对接开发者,基于 Fish Audio 官方 TTS 接口规范编写,详细说明请求参数、多人对话模式、情感控制、精细控制等高级功能的使用方法,
API插图
了解更多

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 — 返回转存后的音频 URL
    • data — 直接返回原始音频二进制数据

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
  • 说明: 仅当 formatmp3 时生效。

opus_bitrate

Opus 比特率。

  • 类型: integer
  • 默认值: -1000
  • 可选值: -1000(自动), 24000, 32000, 48000, 64000
  • 单位: bps
  • 说明: 仅当 formatopus 时生效。

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
  • 仅当 formatmp3 时,mp3_bitrate 参数才会生效
  • 仅当 formatopus 时,opus_bitrate 参数才会生效
  • wavpcm 格式不受比特率参数影响

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: 需要使用精细控制(音素标签)时,但需自行处理数字/日期的朗读

多人对话注意事项

  • 确保 models2-pro(s1 不支持多人模式)
  • 每个说话者都需要对应的 reference_idreferences
  • 说话者数量与 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
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。