IndexTTS‑2高清音质接口对接文档

模型:IndexTTS‑2 专业会员版,支持音色复刻、4 种情感控制模式,支持非流式 JSON 返回 与流式二进制音频流返回两种输出方式。

一、基础信息

1. 请求头认证

请求头 值 必填 说明
Content‑Type application/json 是 请求体 JSON 格式
Authorization Bearer {你的API‑KEY} 是 身份鉴权密钥,替换为平台分配的 key

2. 输出模式说明

通过stream_mode控制返回形式,业务推荐优先使用 **stream_mode:true**流式模式:

  1. stream_mode: false(默认):非流式,返回 JSON 结构,返回音频可访问下载地址audio_url。

  2. stream_mode: true:流式模式,HTTP 直接返回audio/wav二进制音频流;合成字符数、扣费金额从自定义响应 Header 读取:X‑Characters、X‑Cost。

流式模式前端开发提示:服务端返回 Access‑Control‑Expose‑Headers: X‑Characters, X‑Cost,浏览器端才能正常读取这两个自定义响应头。

二、四种调用模式(互斥,仅可选择其中一种)

公共基础字段说明

  • input:string,必填,待合成文本。

  • prompt_audio_url:string,必填,https 协议公网可访问的音色参考音频 URL,用于复刻说话人音色。

  • prompt_text:string,选填,参考音频对应的文字内容,用于语义对齐,默认为空字符串。

  • stream_mode:boolean,选填,是否流式输出,默认false。

  • failover_enabled:boolean,选填,是否开启故障转移降级,生产环境建议保持默认true。

模式一:基础音色模式(无情感控制 mode=none)

仅复刻参考音频音色,不对语音做额外情感干预。

请求体示例

json 复制代码
{
    "input": "欢迎使用IndexTTS语音合成系统,这是一个默认模式的示例。",
    "prompt_audio_url": "https://xxx/sample.mp3",
    "prompt_text": "欢迎使用语音合成系统。",
    "stream_mode": true,
    "failover_enabled": true
}

模式二:音频情感控制(mode=audio)

提取参考音频中的情绪风格叠加到目标音色,四种模式中情感优先级最高。

新增必填参数:

  • emo_audio_prompt_url:https 公网 URL,情感参考音频地址

  • emo_alpha:0.0‑1.0,步长 0.1,情感作用强度,默认 0.5。数值越大,情绪对生成语音影响越强。

请求体示例

json 复制代码
{
    "input": "今天心情真好,阳光明媚!",
    "prompt_audio_url": "https://xxx/spk.mp3",
    "prompt_text": "欢迎使用语音合成系统。",
    "emo_audio_prompt_url": "https://xxx/emotion.wav",
    "emo_alpha":0.8,
    "stream_mode":false
}

模式三:文本情感控制(mode=text)

通过文本描述指定合成语音的情绪、语气风格。

新增必填参数:

  • use_emo_text:布尔值,必须固定填写为true

  • emo_text:非空字符串,描述期望的情绪语气

请求体示例

json 复制代码
{
    "input": "今天真是太开心了!",
    "prompt_audio_url":"https://xxx/spk.mp3",
    "prompt_text":"欢迎使用语音合成系统。",
    "use_emo_text":true,
    "emo_text":"高兴的语气,充满活力",
    "stream_mode":false
}

模式四:向量情感控制(mode=vector)

8 维情绪向量做精细化情感调控,向量顺序固定:[happy, angry, sad, afraid, disgusted, melancholic, surprised, calm],每一项取值范围0‑1.0,步长 0.1。

  • emo_vector:支持 8 位数字数组,也可传入 JSON 格式字符串

  • emo_alpha:0.0‑1.0,情感影响强度,默认 0.5

请求体示例

json 复制代码
{
    "input":"这是一个悲伤的故事",
    "prompt_audio_url":"https://xxx/spk.mp3",
    "prompt_text":"欢迎使用语音合成系统。",
    "emo_vector":[0.1,0,0.8,0,0,0.7,0,0.2],
    "emo_alpha":0.6,
    "stream_mode":false
}

三、返回结果

1、非流式模式 stream_mode=false(JSON 返回)

成功响应示例

json 复制代码
{
    "code": 200,
    "message": "语音合成成功",
    "data": {
        "task_id": "tts_sync_67f8a9b0c1d2e",
        "status": "completed",
        "char_count": 26,
        "cost": 0.01,
        "mode": "none",
        "audio_url": "https://xxx/speech‑xxx.wav",
        "message": "语音合成成功"
    }
}
data 字段 说明
task_id 任务唯一 ID,问题排查时提供给服务商
status 同步接口固定返回completed
char_count 本次计费统计字符数量
cost 本次扣费金额,单位元
mode none/audio/text/vector,对应四种工作模式
audio_url wav 格式音频公网下载链接

2、流式模式 stream_mode=true(二进制音频)

HTTP 响应头:

Plain 复制代码
HTTP/1.1 200 OK
Content‑Type: audio/wav
X‑Characters: 26
X‑Cost: 0.01
Access‑Control‑Expose‑Headers: X‑Characters, X‑Cost

响应 Body 直接输出 wav 二进制音频流,不会返回 JSON 结构体。

浏览器 JS 流式调用示例

javascript 复制代码
fetch('https://www.yuntts.com/api/v1/text-to-speech', {
    method: 'POST',
    headers: {
        'Content‑Type': 'application/json',
        'Authorization': 'Bearer your‑api‑key'
    },
    body: JSON.stringify({
        input: '你好',
        prompt_audio_url: 'https://example.com/sample.wav',
        stream_mode: true
    })
}).then(async r => {
    const blob = await r.blob();
    const audio = new Audio(URL.createObjectURL(blob));
    audio.play();
    console.log(`字符数: ${r.headers.get('X‑Characters')},费用: ${r.headers.get('X‑Cost')}元`);
});

四、错误码对照表

错误响应统一 JSON 格式:{"code": number,"error":"错误标识","message":"可读错误描述"}

code error 字段 message 说明 对接处理建议
400 empty_text 请输入要合成的文本 input 参数不能为空字符串
400 missing_prompt_audio 请提供说话人音色参考音频 URL prompt_audio_url 必须是可公网访问 https 链接
400 missing_emo_text 使用文本情感控制需要提供 emo_text 模式三必须传emo_text并且use_emo_text=true
400 invalid_vector 情感向量格式错误,应为包含 8 个数值的数组 emo_vector 严格为 8 个 0‑1 之间数字
400 invalid_vector_value 情感向量第 N 个值超出范围,应为 0.0~1.0 校验向量每个元素取值区间
401 - 认证失败 检查 Authorization Bearer 的 API‑KEY 是否正确
402 insufficient_balance 余额不足,需要 xx 元,当前余额 xx 元 前往平台账户充值
405 method_not_allowed 仅支持 POST 请求 HTTP 请求方法修改为 POST
500 save_failed 音频文件保存失败,已退款 服务内部异常,直接重试,该场景不会扣费

错误响应示例

json 复制代码
{"code": 402, "error": "insufficient_balance", "message": "余额不足,需要0.01元,当前余额0.00元"}

五、对接重要注意事项

  1. prompt_audio_url、emo_audio_prompt_url必须为公网可访问 https 链接,禁止传入本地文件路径、内网地址。

  2. 四种模式参数互斥,禁止同时传入多套模式参数,例如不要同时传递emo_audio_prompt_url与emo_text。

  3. 流式模式响应体是 wav 二进制,不能按 JSON 解析;计费与字符统计信息全部读取 HTTP 响应头。

  4. failover_enabled=true开启故障转移,主链路异常自动降级,线上业务建议保持开启。

  5. emo_alpha情感权重,过高会破坏原始音色,推荐业务取值区间 0.3‑0.8。

  6. 向量模式 8 个情绪顺序不可变更:[happy, angry, sad, afraid, disgusted, melancholic, surprised, calm]。

六、cURL 完整调用示例

示例 1:基础音色模式,流式输出保存 wav 文件

bash 复制代码
curl --location --request POST 'https://www.yuntts.com/api/v1/text-to-speech' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content‑Type: application/json' \
--data-raw '{
    "input":"测试语音合成",
    "prompt_audio_url":"https://xxx/spk.mp3",
    "stream_mode":true
}' --output output.wav

示例 2:音频情感模式,非流式获取音频 URL

bash 复制代码
curl --location --request POST 'https://www.yuntts.com/api/v1/text-to-speech' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content‑Type: application/json' \
--data-raw '{
    "input":"今天真是开心的一天",
    "prompt_audio_url":"https://xxx/spk.mp3",
    "emo_audio_prompt_url":"https://xxx/happy.wav",
    "emo_alpha":0.6,
    "stream_mode":false
}'
相关推荐
Alluxio13 分钟前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
数据库急诊室_阿哲4 小时前
一次加索引建议的复核记录:从报告到签字
数据库·ai数据库
青瓦梦滋5 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
慧都小妮子5 小时前
Wyn商业智能国产数据库适配:数据接入、分析缓存与审计日志验证清单
数据库·数据分析·数据可视化·审计日志·商业智能
Joy T6 小时前
Redis Lua 原子限流:Lua 脚本、竞态条件与并发控制
数据库·redis·lua·限流·竞态条件·redis scripting
杨凯凡7 小时前
MySQL 死锁怎么排查?InnoDB 锁等待与 Spring Boot 整事务重试实战
数据库·spring boot·mysql
Aloudata7 小时前
Claude 做数据分析的这两年:一份复盘与发展线索
大数据·数据库·人工智能·数据挖掘·数据分析·dataagent
Decay__7 小时前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构
zhanghaha13147 小时前
C# 系列教程_12 字符串 string 保姆级系统教程(面向新手,大量示例 + 原理讲解)
开发语言·数据库·c#
韩曙亮7 小时前
【错误记录】安卓 adb 调试 5037 端口占用排查 ( adb 的三层结构 | 找出本机占用 5037 的进程 )
android·数据库·adb·安卓·错误记录