本文档为云音工坊 IndexTTS2 系列 API 接口使用说明,核心围绕语音合成声音克隆两大核心能力,详细梳理全接口调用流程、参数配置、请求示例及返回规范,助力开发者快速对接集成,高效实现文本转语音、自定义音色克隆等功能,适配各类语音交互场景开发需求。

IndexTTS2 API接口使用说明文档 1

IndexTTS2 音色克隆 API 文档

接口概述

IndexTTS2 音色克隆 API 允许用户上传音频文件,生成个性化语音模型。

接口地址

POST /api/v1/indextts2_cloning

请求方法

  • POST

认证方式

需要在请求头中添加 API 密钥:

Authorization: Bearer YOUR_API_KEY

请求参数

基础参数

参数名 类型 是否必填 说明
name string 音色名称
description string 音色描述

音频上传参数(三选一)

1. 文件上传
参数名 类型 是否必填 说明
speaker_file file 音频文件(MP3/WAV格式,≤20MB,5-30秒)
emotion_file file 情感音频文件(MP3/WAV格式,≤20MB,5-30秒)
2. Base64 上传
参数名 类型 是否必填 说明
speaker_file_base64 string 音频文件的 Base64 编码字符串
emotion_file_base64 string 情感音频文件的 Base64 编码字符串
3. URL 上传
参数名 类型 是否必填 说明
speaker_url string 音频文件的 URL 地址
emotion_url string 情感音频文件的 URL 地址

请求示例

文件上传示例

curl -X POST "https://www.yuntts.com/api/v1/indextts2_cloning" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "name=我的音色" \
  -F "description=个性化语音模型" \
  -F "speaker_file=@speaker.mp3"
文件上传示例(包含情感参考音频)
curl -X POST "https://www.yuntts.com/api/v1/indextts2_cloning" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "name=我的音色" \
  -F "description=个性化语音模型" \
  -F "speaker_file=@speaker.mp3" \
  -F "emotion_file=@emotion.mp3"

Base64 上传示例

curl -X POST "https://www.yuntts.com/api/v1/indextts2_cloning" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "name=我的音色" \
  -F "description=个性化语音模型" \
  -F "speaker_file_base64=BASE64_STRING"
Base64 上传示例(包含情感参考音频)
curl -X POST "https://www.yuntts.com/api/v1/indextts2_cloning" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "name=我的音色" \
  -F "description=个性化语音模型" \
  -F "speaker_file_base64=BASE64_STRING" \
  -F "emotion_file_base64=EMOTION_BASE64_STRING"

URL 上传示例

curl -X POST "https://www.yuntts.com/api/v1/indextts2_cloning" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "name=我的音色" \
  -F "description=个性化语音模型" \
  -F "speaker_url=https://example.com/speaker.mp3"
URL 上传示例(包含情感参考音频)
curl -X POST "https://www.yuntts.com/api/v1/indextts2_cloning" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "name=我的音色" \
  -F "description=个性化语音模型" \
  -F "speaker_url=https://example.com/speaker.mp3" \
  -F "emotion_url=https://example.com/emotion.mp3"

响应格式

成功响应

{
  "code": 200,
  "msg": "上传成功!",
  "id": "uspeech:c73d0681-3ca6-4956-979d-7a4c02ef1bee"
}

错误响应

{
  "code": "error_code",
  "msg": "错误消息",
  "error": {
    "error": {
      "message": "错误详情",
      "type": "error_type",
      "param": "参数名称",
      "code": "error_code"
    }
  }
}

错误码说明

错误码 说明
method_not_allowed 仅支持 POST 请求
empty_name 请输入音色名称
missing_speaker_file 请提供音频文件(三种方式选其一)
invalid_file_format 音频文件格式不支持,请使用 MP3 或 WAV 格式
file_too_large 音频文件大小超过限制,请使用不超过 20MB 的文件
duration_out_of_range 音频时长必须在 5 到 30 秒之间
invalid_emotion_file_format 情感音频文件格式不支持,请使用 MP3 或 WAV 格式
emotion_file_too_large 情感音频文件大小超过限制,请使用不超过 20MB 的文件
emotion_duration_out_of_range 情感音频时长必须在 5 到 30 秒之间
request_failed 请求失败
missing_name 未提供音色名称
missing_speaker 未提供任意一个 speaker_* 字段
invalid_speaker_base64 speaker_file_base64 解码失败
unsupported_audio_format 音频格式不是 MP3/WAV
file_too_large 音频文件太大
sample_rate_too_low 音频采样率过低(需要≥16kHz)

测试工具

可以使用提供的 test-indextts2.html 页面进行 API 测试,支持三种上传方式。

注意事项

  1. 音频文件格式必须为 MP3 或 WAV
  2. 音频文件大小不超过 20MB
  3. 音频时长在 5 到 30 秒之间
  4. 每个请求只能使用一种上传方式
  5. 情感音频文件是可选的

IndexTTS2 删除音色接口 API 文档

接口概述

IndexTTS2 删除音色 API 允许用户删除已创建的个性化音色模型。

接口地址

POST /api/v1/indextts2_delete

请求方法

  • POST

认证方式

需要在请求头中添加 API 密钥:

Authorization: Bearer YOUR_API_KEY

请求参数

参数名 类型 是否必填 说明
voice_id string 要删除的音色 ID

请求示例

curl -X POST "https://www.yuntts.com/api/v1/indextts2_delete" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"voice_id": "uspeech:c73d0681-3ca6-4956-979d-7a4c02ef1bee"}'

响应格式

成功响应

{
  "code": 200,
  "msg": "删除成功!"
}

错误响应

{
  "code": "error_code",
  "msg": "错误消息",
  "error": {
    "error": {
      "message": "错误详情",
      "type": "error_type",
      "param": "参数名称",
      "code": "error_code"
    }
  }
}

错误码说明

错误码 说明
method_not_allowed 仅支持 POST 请求
missing_voice_id 请提供音色 ID
voice_not_found 未找到指定的音色
unauthorized API 密钥无效
forbidden 没有权限删除该音色
request_failed 请求失败

测试工具

可以使用提供的 test-indextts2-delete.html 页面进行 API 测试。

注意事项

  1. 音色 ID 是创建音色时返回的唯一标识符
  2. 删除音色后,该音色将无法恢复
  3. 只能删除用户自己创建的音色

IndexTTS2 查询音色接口 API 文档

接口概述

IndexTTS 查询音色 API 允许用户查询已创建的个性化音色模型列表。

接口地址

POST /api/v1/indextts_query

请求方法

  • POST

认证方式

需要在请求头中添加 API 密钥:

Authorization: Bearer YOUR_API_KEY

请求参数

无额外请求参数,请求体为一个空的 JSON 对象:{}

请求示例

curl -X POST "https://www.yuntts.com/api/v1/indextts_query" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

响应格式

成功响应

{
  "code": 200,
  "msg": "查询成功!",
  "data": [
    {
      "voice_id": "uspeech:c73d0681-3ca6-4956-979d-7a4c02ef1bee",
      "name": "我的音色",
      "description": "个性化语音模型",
      "created_at": "2023-05-15T10:30:00Z"
    },
    {
      "voice_id": "uspeech:d87e1234-5678-90ab-cdef-1234567890ab",
      "name": "另一个音色",
      "description": "另一个个性化语音模型",
      "created_at": "2023-05-16T14:20:00Z"
    }
  ]
}

错误响应

{
  "code": "error_code",
  "msg": "错误消息",
  "error": {
    "error": {
      "message": "错误详情",
      "type": "error_type",
      "param": "参数名称",
      "code": "error_code"
    }
  }
}

错误码说明

错误码 说明
method_not_allowed 仅支持 POST 请求
unauthorized API 密钥无效
forbidden 没有权限查询音色列表
request_failed 请求失败

测试工具

可以使用提供的 test-indextts-query.html 页面进行 API 测试。

注意事项

  1. 该接口返回用户所有已创建的个性化音色
  2. 每个音色包含 ID、名称、描述和创建时间等信息
  3. 确保 API 密钥有效且具有查询权限

IndexTTS2 合成音频接口 API 文档

接口概述

IndexTTS2 合成音频 API 允许用户使用个性化或公共音色生成高质量的语音合成音频。支持多种情感控制方式和高级参数设置。

接口地址

POST /api/v1/indextts2_generate

请求方法

  • POST

认证方式

需要在请求头中添加 API 密钥:

Authorization: Bearer YOUR_API_KEY

请求参数

基础参数

参数名 类型 是否必填 说明
text string 要合成的文本内容,支持中文、英文等多种语言
voice string 音色 ID 或名称
response_format string 输出音频格式(wav, mp3, ogg, flac),默认 wav
interval_silence integer 句子间隔静音时间(ms),默认 200
sample_rate integer 目标音频采样率(16000, 22050, 24000),默认 24000
max_text_tokens integer 单句最大 Token 数,默认 120

高级参数

参数名 类型 是否必填 说明
speed float 语速,取值范围 0.1-4.0,默认 1.0
gain float 音量,取值范围 0.1-10.0,默认 1.0
emo_random boolean 是否启用情绪随机性,默认 false
emo_control_method integer 情绪控制方式(0: 无情绪控制, 1: 基于情绪音频, 2: 基于情绪向量, 3: 基于情绪文本),默认 0
emo_weight float 情绪权重,取值范围 0.0-1.0,默认 0.6

情绪向量参数(当 emo_control_method=2 时)

参数名 类型 是否必填 说明
emo_vec array 情绪向量数组,包含8个维度,顺序为:[高兴, 生气, 悲伤, 害怕, 厌恶, 忧郁, 惊讶, 平静],每个维度取值范围 0.0-1.2

注意

  • 情绪向量数组长度必须为8
  • 所有情感维度的值相加不能超过 1.5
  • 示例格式:[0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.5]

情绪文本参数(当 emo_control_method=3 时)

参数名 类型 是否必填 说明
emo_text string 情绪描述文本,如 "开心"、"悲伤" 等

请求示例(无情绪控制)

curl -X POST "https://www.yuntts.com/api/v1/indextts2_generate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "欢迎使用 IndexTTS2 语音合成服务!",
    "voice": "jack_cheng",
    "response_format": "wav",
    "sample_rate": 24000
  }'

请求示例(基于情绪音频)

curl -X POST "https://www.yuntts.com/api/v1/indextts2_generate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "欢迎使用 IndexTTS2 语音合成服务!",
    "voice": "jack_cheng",
    "response_format": "wav",
    "sample_rate": 24000,
    "emo_control_method": 1,
    "emo_weight": 0.6
  }'

请求示例(基于情绪文本)

curl -X POST "https://www.yuntts.com/api/v1/indextts2_generate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "欢迎使用 IndexTTS2 语音合成服务!",
    "voice": "jack_cheng",
    "response_format": "wav",
    "sample_rate": 24000,
    "speed": 1.0,
    "gain": 1.0,
    "emo_control_method": 3,
    "emo_text": "开心",
    "emo_weight": 0.6
  }'

请求示例(基于情绪向量)

curl -X POST "https://www.yuntts.com/api/v1/indextts2_generate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "欢迎使用 IndexTTS2 语音合成服务!",
    "voice": "jack_cheng",
    "response_format": "wav",
    "sample_rate": 24000,
    "emo_control_method": 2,
    "emo_weight": 0.6,
    "emo_vec": [0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 0.5]
  }'

响应格式

成功响应

{
  "code": 200,
  "msg": "合成成功!",
  "audio_url": "https://www.yuntts.com/wp-content/audio/modelverse_694fe2b909cf7_1766843065.wav",
  "format": "wav",
  "char_count": 26,
  "cost": 0.04,
  "balance": 99.96 // 统一使用balance字段
}

错误响应

{
  "code": "error_code",
  "msg": "错误消息",
  "error": {
    "error": {
      "message": "错误详情",
      "type": "error_type",
      "param": "参数名称",
      "code": "error_code"
    }
  }
}

错误码说明

错误码 说明
method_not_allowed 仅支持 POST 请求
missing_text 请提供要合成的文本
missing_voice 请提供音色信息
invalid_voice 无效的音色 ID 或名称
invalid_response_format 无效的音频格式
invalid_sample_rate 无效的采样率
invalid_speed 语速超出允许范围
invalid_gain 音量超出允许范围
invalid_emo_control_method 无效的情绪控制方式
invalid_emo_weight 情绪权重超出允许范围
emotion_vector_sum_exceeded 情感向量总和超过限制(最大 1.5)
insufficient_quota 用户余额不足,无法完成语音合成
unauthorized API 密钥无效
forbidden 没有权限使用该音色
request_failed 请求失败

测试工具

可以使用提供的 test-indextts2-generate.html 页面进行 API 测试,支持所有参数配置和情绪控制方式。

注意事项

  1. 文本内容长度建议不超过 600 字符
  2. 选择基于情绪音频的控制方式时,需要在克隆阶段上传了情绪参考音频
  3. 情感向量总和不能超过 1.5,否则会返回错误
  4. 音色 ID 可以通过查询音色接口获取
  5. 确保 API 密钥有效且具有合成权限
  6. 字符统计规则:去空白字符后,汉字计2字符,其他字符计1字符
  7. 计费逻辑:字符成本 = 字符数 × 字符兑换比例 × 用户类型折扣,最低扣费0.01元
  8. 计费完整文档请查看《IndexTTS2 API接口使用字符计费说明
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。