接口概述
Index-TTS2 同步语音合成 API 是一款支持文件上传的语音合成接口,用户可通过上传说话人音色参考音频与情感参考音频,生成具备特定情感基调与专属音色的语音内容。该接口支持流式输出,可满足实时语音合成需求;同时,考虑到网站用户量大、接口调用频次高可能导致的调用失败问题,我们已新增其他算力接口作为补充,保障接口调用的稳定性与流畅性。
如需要在线使用Index-TTS2 语音合成,请访问Index-TTS2在线语音合成,可选模式1进行体验!
接口信息
| 项目 | 值 |
|---|---|
| URL | /api/v1/indextts2_infer |
| 方法 | POST |
| Content-Type | multipart/form-data |
| 认证 | Authorization: Bearer {api_key} |
请求参数
Body(multipart/form-data)
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
payload |
string (JSON) | 是 | - | 合成参数 JSON 字符串,见下方 payload 结构 |
spk_audio_file |
file | 是 | - | 说话人参考音频,MP3/WAV,最大 20MB |
emo_audio_file |
file | 条件 | - | 情感音频,仅模式 1 时必填,MP3/WAV,最大 20MB |
stream_mode |
boolean | 否 | true |
true=流式直接返回 WAV 音频;false=返回 JSON(含 audio_url) |
四种模式 payload 示例
模式一:基础合成(无情感控制)
{
"input": "你好,欢迎使用语音合成服务",
"use_random": false,
"emo_control_method": 0
}
可省略
emo_control_method,默认为 0。不需要额外上传情感音频。
模式二:音频情感控制
{
"input": "今天真是太开心了!",
"use_random": false,
"emo_control_method": 1,
"emo_alpha": 0.8
}
必须同时上传
emo_audio_file文件,否则返回missing_emo_file错误。
模式三:向量情感控制
emo_vec 支持两种传参格式:
数组格式(推荐):
{
"input": "这个消息让我感到非常震惊",
"use_random": false,
"emo_control_method": 2,
"emo_vec": [0.5, 0, 0.1, 0, 0, 0.3, 0.5, 0],
"emo_alpha": 0.6
}
字符串格式:
{
"input": "这个消息让我感到非常震惊",
"use_random": false,
"emo_control_method": 2,
"emo_vec": "[0.5, 0, 0.1, 0, 0, 0.3, 0.5, 0]",
"emo_alpha": 0.6
}
8 个维度依次为:happy, angry, sad, afraid, disgusted, melancholic, surprised, calm。每个值范围 [0, 1.2],总和 ≤ 1.5。
模式四:文本情感控制
{
"input": "谢谢大家的支持与鼓励",
"use_random": false,
"emo_control_method": 3,
"emo_text": "用温柔而感激的语气说",
"emo_alpha": 0.7
}
通过自然语言描述目标情感,后端根据文本判断情感方向。
响应
流式模式 (stream_mode=true,默认)
| 场景 | Content-Type | 说明 |
|---|---|---|
| 成功 | audio/wav |
直接返回 WAV 音频二进制流 |
| 失败 | application/json |
返回 JSON 错误 |
流式响应头:
Content-Type: audio/wav
Content-Disposition: inline
X-Accel-Buffering: no
非流式模式 (stream_mode=false)
成功响应 (200):
{
"code": 200,
"message": "合成成功!",
"data": {
"audio_url": "https://example.com/wp-content/uploads/audio/processed/xxx.wav",
"format": "wav",
"char_count": 15,
"points_deducted": 0.0045
}
}
| 字段 | 类型 | 说明 |
|---|---|---|
audio_url |
string | 合成后的 WAV 音频文件下载地址 |
format |
string | 固定值 "wav" |
char_count |
int | 合成文本的实际计费字符数 |
points_deducted |
float | 实际扣除的积分/金额 |
错误响应
{
"code": 400,
"error": "empty_text",
"message": "请输入要合成的文本!"
}
常见错误码
| HTTP | error | 说明 |
|---|---|---|
| 400 | invalid_payload |
payload 不是有效的 JSON 字符串 |
| 400 | empty_text |
input 字段为空 |
| 400 | text_too_long |
文本超过 600 字符 |
| 400 | missing_spk_file |
缺少说话人参考音频 |
| 400 | invalid_spk_file |
音频格式不符或超过 20MB |
| 400 | missing_emo_file |
模式 1 时缺少情感音频文件 |
| 400 | invalid_emo_control_method |
值不在 0~3 范围 |
| 400 | invalid_emo_vec |
情绪向量维度/范围不符合要求 |
| 401 | empty_key |
缺少 Authorization 请求头 |
| 401 | invalid_key |
API Key 无效 |
| 403 | insufficient_balance |
账户余额不足 |
| 500 | api_error |
上游服务合成失败 |
| 500 | missing_api_key |
服务端 API 密钥未配置 |
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


评论(0)