接口概述

Index-TTS2 同步语音合成 API 是一款支持文件上传的语音合成接口,用户可通过上传说话人音色参考音频与情感参考音频,生成具备特定情感基调与专属音色的语音内容。该接口支持流式输出,可满足实时语音合成需求;同时,考虑到网站用户量大、接口调用频次高可能导致的调用失败问题,已新增其他算力接口作为补充,保障接口调用的稳定性与流畅性。

Index-TTS2 在线API接口文档 1

接口信息

  • 接口地址: https://www.jiaozitts.com/api/v1/indextts`
  • 请求方法: POST
  • 认证方式: Authorization: Bearer <API_KEY>
  • Content-Type: multipart/form-data

请求参数

参数名 类型 必填 默认值 描述
input string - 要合成的文本
speed float 1.0 语速,范围 0.1-4.0
sample_rate int 24000 目标音频采样率,支持 16000、22050、24000
gain float 1.0 音量,范围 0.1-10.0
interval_silence int 200 句子间隔静音 (ms)
use_random boolean false 启用情绪随机性
stream_mode boolean true 启用流式输出
emo_control_method int 0 情绪控制方式:0=无情感参考,1=基于情绪音频,2=基于情绪向量,3=基于情绪文本
emo_alpha float - 情感权重,范围 0.0-1.0,仅在 emo_control_method 不为 0 时有效
emo_vec array - 情绪向量,8个维度:[高兴,生气,悲伤,害怕,厌恶,忧郁,惊讶,平静],每个维度范围 0-1.2,总和不超过1.5,仅在 emo_control_method=2 时有效
emo_text string - 情感文本,仅在 emo_control_method=3 时有效
spk_audio_file file - 说话人音色参考音频,支持 wav、mp3 格式,最大 20MB
emo_audio_file file - 情感参考音频,支持 wav、mp3 格式,最大 10MB,仅在 emo_control_method=1 时必填

情绪向量维度说明

情绪向量包含 8 个维度,顺序如下:

  1. 高兴 - 表示愉快、快乐的情绪
  2. 生气 - 表示愤怒、恼火的情绪
  3. 悲伤 - 表示难过、悲伤的情绪
  4. 害怕 - 表示恐惧、害怕的情绪
  5. 厌恶 - 表示讨厌、厌恶的情绪
  6. 忧郁 - 表示忧郁、消沉的情绪
  7. 惊讶 - 表示惊讶、震惊的情绪
  8. 平静 - 表示平静、安宁的情绪

每个维度的值范围为 [0, 1.2],且所有维度的值相加不能大于 1.5。

请求示例

案例1:无情感参考 (emo_control_method=0)

curl -X POST "https://www.yuntts.com/api/v1/indextts" 
  -H "Authorization: Bearer YOUR_API_KEY" 
  -F "input=你好,欢迎使用 Index-TTS2 语音合成服务" 
  -F "speed=1.0" 
  -F "emo_control_method=0" 
  -F "spk_audio_file=@speaker.wav"

案例2:基于情绪音频 (emo_control_method=1)

curl -X POST "https://www.yuntts.com/api/v1/indextts" 
  -H "Authorization: Bearer YOUR_API_KEY" 
  -F "input=你好,欢迎使用 Index-TTS2 语音合成服务" 
  -F "speed=1.0" 
  -F "emo_control_method=1" 
  -F "emo_alpha=0.6" 
  -F "spk_audio_file=@speaker.wav" 
  -F "emo_audio_file=@emotion.wav"

案例3:基于情绪向量 (emo_control_method=2)

curl -X POST "https://www.yuntts.com/api/v1/indextts" 
  -H "Authorization: Bearer YOUR_API_KEY" 
  -F "input=你好,欢迎使用 Index-TTS2 语音合成服务" 
  -F "speed=1.0" 
  -F "emo_control_method=2" 
  -F "emo_vec=[0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2]" 
  -F "emo_alpha=0.6" 
  -F "spk_audio_file=@speaker.wav"

案例4:基于情绪文本 (emo_control_method=3)

curl -X POST "https://www.yuntts.com/api/v1/indextts" 
  -H "Authorization: Bearer YOUR_API_KEY" 
  -F "input=你好,欢迎使用 Index-TTS2 语音合成服务" 
  -F "speed=1.0" 
  -F "emo_control_method=3" 
  -F "emo_text=开心" 
  -F "emo_alpha=0.6" 
  -F "spk_audio_file=@speaker.wav"

使用 JavaScript 发送请求

// 构建表单数据
const formData = new FormData();
formData.append('input', '你好,欢迎使用 Index-TTS2 语音合成服务');
formData.append('speed', '1.0');
formData.append('emo_control_method', '2');
formData.append('emo_vec', JSON.stringify([0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2]));
formData.append('emo_alpha', '0.6');
formData.append('spk_audio_file', spkAudioFile); // spkAudioFile 是从文件输入获取的文件对象

// 发送请求
const response = await fetch('https://www.yuntts.com/api/v1/indextts', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: formData
});

// 解析响应
const data = await response.json();
if (response.ok) {
  console.log('合成成功:', data);
  console.log('音频URL:', data.data.audio_url);
} else {
  console.error('合成失败:', data.message);
}

使用 Python 发送请求 (基于情绪文本)

import requests

url = "https://www.yuntts.com/api/v1/indextts"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

# 准备表单数据
data = {
    "input": "你好,欢迎使用 Index-TTS2 语音合成服务",
    "speed": "1.0",
    "emo_control_method": "3",
    "emo_text": "开心",
    "emo_alpha": "0.6"
}

# 准备文件数据
files = {
    "spk_audio_file": open("speaker.wav", "rb")
}

# 发送请求
response = requests.post(url, headers=headers, data=data, files=files)

# 处理响应
if response.status_code == 200:
    result = response.json()
    print("合成成功!")
    print(f"音频URL: {result['data']['audio_url']}")
else:
    result = response.json()
    print(f"合成失败: {result['message']}")

# 关闭文件
files["spk_audio_file"].close()
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。