本文档为云音工坊 IndexTTS2 系列 API 接口使用说明,核心围绕语音合成与声音克隆两大核心能力,详细梳理全接口调用流程、参数配置、请求示例及返回规范,助力开发者快速对接集成,高效实现文本转语音、自定义音色克隆等功能,适配各类语音交互场景开发需求。
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 测试,支持三种上传方式。
注意事项
- 音频文件格式必须为 MP3 或 WAV
- 音频文件大小不超过 20MB
- 音频时长在 5 到 30 秒之间
- 每个请求只能使用一种上传方式
- 情感音频文件是可选的
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 测试。
注意事项
- 音色 ID 是创建音色时返回的唯一标识符
- 删除音色后,该音色将无法恢复
- 只能删除用户自己创建的音色
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 测试。
注意事项
- 该接口返回用户所有已创建的个性化音色
- 每个音色包含 ID、名称、描述和创建时间等信息
- 确保 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 测试,支持所有参数配置和情绪控制方式。
注意事项
- 文本内容长度建议不超过 600 字符
- 选择基于情绪音频的控制方式时,需要在克隆阶段上传了情绪参考音频
- 情感向量总和不能超过 1.5,否则会返回错误
- 音色 ID 可以通过查询音色接口获取
- 确保 API 密钥有效且具有合成权限
- 字符统计规则:去空白字符后,汉字计2字符,其他字符计1字符
- 计费逻辑:字符成本 = 字符数 × 字符兑换比例 × 用户类型折扣,最低扣费0.01元
- 计费完整文档请查看《IndexTTS2 API接口使用字符计费说明》
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


评论(0)