前言说明

IndexTTS 是一款零样本文本转语音(TTS)系统,无需依赖海量说话人样本,即可快速合成高音质、高度个性化的语音。该模型不仅支持音色迁移,还支持通过参考音频、情感向量、文本提示等多种方式灵活调节情绪与语气,让生成的语音在各类场景下都更自然、更具表现力。本文将详细介绍 IndexTTS-2 语音合成接口的对接方法。

IndexTTS-2 语音合成同步接口文档

接口信息

  • 接口地址: https://www.yuntts.com/api/v1/text-to-speech
  • 请求方式: POST
  • Content-Type: application/json
  • 认证方式: Bearer Token (API Key)

请求头

Content-Type: application/json
Authorization: Bearer YOUR_API_KEY

公共参数

参数名 类型 必填 说明
input string 要合成的文本内容
prompt_audio_url string 说话人音色参考音频URL
prompt_text string 参考音频对应的文字内容(用于语义对齐)
stream_mode boolean 是否开启流式模式,默认false
failover_enabled boolean 是否启用故障转移,默认true

四种情感控制模式


模式一:默认模式(无情感控制)

原理

不使用任何情感控制参数,仅使用默认音色合成语音。

适用场景

只需要基础语音合成,不需要特殊情感效果。

请求示例

{
  "input": "欢迎使用IndexTTS语音合成系统,这是一个默认模式的示例。",
  "prompt_audio_url": "https://example.com/speaker.wav",
  "prompt_text": "欢迎使用语音合成系统。",
  "stream_mode": false,
  "failover_enabled": true
}

模式二:通过音频控制语气

原理

上传一段带有目标情绪的参考音频,模型会模仿其中的语气和韵律。

关键参数

参数名 类型 必填 说明
emo_audio_prompt_url string 情感参考音频的地址
emo_alpha float 情感影响强度(0~1,越大情绪越明显),默认0.5

适用场景

已有真实录音作为情感样例,想让模型模仿。

请求示例

{
  "input": "我知道自己不是一个人在战斗,有大家的支持和协作,我相信我们一定能一起把事情做好。",
  "prompt_audio_url": "https://gitee.com/gitee-ai/moark-assets/raw/master/jay_prompt.wav",
  "prompt_text": "对我来讲是一种荣幸,但是也是压力蛮大的。不过我觉得是一种呃很好的一个挑战。",
  "emo_audio_prompt_url": "https://gitee.com/gitee-ai/moark-assets/raw/master/index-tts-2/emo_sad.wav",
  "emo_alpha": 0.5,
  "stream_mode": false,
  "failover_enabled": true
}

模式三:通过文本控制语气

原理

输入一段带有目标情绪的参考文本,模型会根据文字语义推断并模仿对应的语气。

关键参数

参数名 类型 必填 说明
use_emo_text boolean 是否启用情感参考文本,必须设置为true
emo_text string 表达目标情绪的参考文本

适用场景

没有情感音频样例,仅通过文字引导模型生成目标情绪语音。

请求示例

{
  "input": "今天的天气真是太好了,阳光明媚,心情格外舒畅!",
  "prompt_audio_url": "https://example.com/speaker.wav",
  "prompt_text": "欢迎使用语音合成系统。",
  "use_emo_text": true,
  "emo_text": "非常开心和激动,充满了喜悦和兴奋",
  "stream_mode": false,
  "failover_enabled": true
}

模式四:通过向量控制语气

原理

通过设置情感向量,控制合成语音中不同情绪的占比和强度。

关键参数

参数名 类型 必填 说明
emo_vector array 情感强度向量 [happy, angry, sad, afraid, disgusted, melancholic, surprised, calm],数值范围 0~1
emo_alpha float 情感影响强度(0~1,越大情绪越明显),默认0.5

向量维度说明

索引 情绪 说明
0 happy 高兴
1 angry 生气
2 sad 悲伤
3 afraid 害怕
4 disgusted 厌恶
5 melancholic 忧郁
6 surprised 惊讶
7 calm 平静

适用场景

希望精细调节合成语音的情绪比例,无需真实参考音频。

请求示例

示例1:平静温和的语气

{
  "input": "请保持冷静,我们慢慢来,一切都会好起来的。",
  "prompt_audio_url": "https://example.com/speaker.wav",
  "prompt_text": "欢迎使用语音合成系统。",
  "emo_vector": [0.1, 0.0, 0.1, 0.0, 0.0, 0.1, 0.0, 0.9],
  "emo_alpha": 0.6,
  "stream_mode": false,
  "failover_enabled": true
}

示例2:兴奋激动的语气

{
  "input": "太棒了!我们成功了!这真是一个激动人心的时刻!",
  "prompt_audio_url": "https://example.com/speaker.wav",
  "prompt_text": "欢迎使用语音合成系统。",
  "emo_vector": [0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.1],
  "emo_alpha": 0.7,
  "stream_mode": false,
  "failover_enabled": true
}

示例3:悲伤忧郁的语气

{
  "input": "他的爱像秋天的阳光,看似清冷,却总能在我最需要的时候给予温暖。",
  "prompt_audio_url": "https://example.com/speaker.wav",
  "prompt_text": "欢迎使用语音合成系统。",
  "emo_vector": [0.0, 0.0, 0.8, 0.0, 0.0, 0.6, 0.0, 0.2],
  "emo_alpha": 0.5,
  "stream_mode": false,
  "failover_enabled": true
}

响应格式

JSON模式响应(stream_mode: false)

{
  "code": 200,
  "message": "语音合成成功",
  "data": {
    "task_id": "tts_sync_xxxxxxxxxxxx",
    "char_count": 45,
    "cost": 0.45,
    "mode": "audio",
    "status": "completed",
    "audio_url": "https://your-domain.com/wp-content/mp3/download/speech-xxx.wav",
    "message": "语音合成成功"
  }
}

流式模式响应(stream_mode: true)

直接返回音频二进制数据,响应头包含:

Content-Type: audio/wav
Content-Length: 27214
X-Characters: 45
X-Cost: 0.45

高级选项说明

stream_mode(流式模式)

  • false(默认): 音频文件保存到服务器后返回JSON数据,包含音频URL、字符数、费用等信息
  • true: 直接返回音频二进制流,不保存文件到服务器,响应更快但不保留历史记录

failover_enabled(故障转移)

  • true(默认): 当主服务不可用时自动切换到备用服务
  • false: 禁用故障转移功能

错误码说明

错误码 说明
400 请求参数错误
401 API密钥无效或未授权
402 余额不足
405 请求方法不允许
500 服务器内部错误

注意事项

  1. 文本长度: 建议单次合成文本不超过500字符
  2. 音频格式: 参考音频支持 WAV、MP3 格式
  3. 网络超时: 同步接口超时时间为120秒
  4. 情感强度: emo_alpha 建议范围 0.3~0.8,过大可能导致音质下降
  5. 向量总和: 情感向量各维度值相加建议不超过1.5
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。