一、接口概述

IndexTTS-1.5 是一款高品质语音合成模型,只需上传参考音频即可快速精准复刻音色,轻松生成专属个性化语音;云声配音现已上线 IndexTTS-1.5 官方语音合成接口,可直接调用使用。

API 接口插图

模型介绍

IndexTTS-1.5 是 IndexTTS 团队于 2025 年 5 月 14 日发布的一款基于 GPT 风格 Transformer 架构的先进开源文本转语音模型,它在 XTTS 和 Tortoise 技术基础上进行了深度优化,采用 Conformer 条件编码器、GPT 声学模型和 BigVGAN2 声码器的核心架构,经过数万小时语音数据训练,在多项基准测试中表现优于 XTTS、CosyVoice2、Fish-Speech 和 F5-TTS 等主流 TTS 系统。该版本显著提升了模型稳定性和英语语音合成能力,支持高质量中英文双语合成,具备零样本语音克隆功能,仅需 5-10 秒参考音频即可实现高相似度的语音复制,主观评价平均得分达 4.01。它创新性地引入了中文字符 - 拼音混合建模方法,用户可通过拼音精确纠正多音字发音,同时支持通过标点符号灵活控制任意位置的停顿,断句准确率高达 98.6%。IndexTTS-1.5 对硬件要求友好,6-8G 显存即可流畅运行,推理速度快,长文本生成连贯性出色,完全开源的特性使其在内容创作、智能客服、无障碍阅读等多个领域得到广泛应用。

接口特性

特性 说明
接口类型 REST API
请求方式 POST
音色克隆 支持通过参考音频克隆音色
计费方式 按次计费

其他说明

本站还提供了:IndexTTS-2 语音合成同步接口文档


二、接入准备

2.1 获取访问凭证

在使用接口前,您需要先获取 API 访问凭证:

  1. 登录系统后台
  2. 进入「API 设置」页面
  3. 获取 Authorization Token

2.2 接口地址

POST https://www.yuntts.com/api/v1/indextts-1.5

三、请求参数

3.1 请求头

参数名 类型 必填 说明
Authorization string Bearer Token
Content-Type string application/json

示例:

Authorization: Bearer sk-5313cff75c508b8093b457a2710cc030
Content-Type: application/json

3.2 请求体

{
    "input": "专注Ai人工智能 声音克隆、图片生成、视频生成领域",
    "prompt_audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250211/tixcef/cherry.wav"
}
参数名 类型 必填 说明
input string 需要合成语音的文本,最大1000字符
prompt_audio_url string 说话人音色参考音频URL

四、响应说明

4.1 成功响应

当请求成功时,接口直接返回音频二进制数据:

响应头 说明
Content-Type audio/mp3
Content-Length 音频数据字节数
X-Characters 计费字符数
X-Cost 本次费用(元)
X-Task-Id 任务ID

4.2 失败响应

当请求失败时,返回 JSON 格式错误信息:

{
    "code": 400,
    "error": "empty_text",
    "message": "请输入要合成的文本"
}

五、代码示例

5.1 cURL

curl -X POST https://www.yuntts.com/api/v1/indextts-1.5 
  -H "Authorization: Bearer sk-5313cff75c508b8093b457a2710cc030" 
  -H "Content-Type: application/json" 
  -d '{
    "input": "专注Ai人工智能 声音克隆、图片生成、视频生成领域",
    "prompt_audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250211/tixcef/cherry.wav"
  }' 
  --output output.mp3

5.2 JavaScript (Fetch)

async function synthesizeSpeech(text, audioUrl) {
    const response = await fetch('https://www.yuntts.com/api/v1/indextts-1.5', {
        method: 'POST',
        headers: {
            'Authorization': 'Bearer sk-5313cff75c508b8093b457a2710cc030',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            input: text,
            prompt_audio_url: audioUrl
        })
    });

    if (!response.ok) {
        const error = await response.json();
        throw new Error(error.message);
    }

    const blob = await response.blob();
    return URL.createObjectURL(blob);
}

// 使用示例
const audioUrl = await synthesizeSpeech(
    '专注Ai人工智能 声音克隆、图片生成、视频生成领域',
    'https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250211/tixcef/cherry.wav'
);

5.3 Python

import requests

def synthesize_speech(text, audio_url, token):
    url = 'https://www.yuntts.com/api/v1/indextts-1.5'
    headers = {
        'Authorization': f'Bearer {token}',
        'Content-Type': 'application/json'
    }
    data = {
        'input': text,
        'prompt_audio_url': audio_url
    }

    response = requests.post(url, headers=headers, json=data)

    if response.status_code != 200:
        error = response.json()
        raise Exception(error['message'])

    return response.content

# 使用示例
audio_data = synthesize_speech(
    '专注Ai人工智能 声音克隆、图片生成、视频生成领域',
    'https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250211/tixcef/cherry.wav',
    'sk-5313cff75c508b8093b457a2710cc030'
)

with open('output.mp3', 'wb') as f:
    f.write(audio_data)

5.4 PHP

<?php
function synthesizeSpeech($text, $audioUrl, $token) {
    $url = 'https://www.yuntts.com/api/v1/indextts-1.5';

    $data = json_encode([
        'input' => $text,
        'prompt_audio_url' => $audioUrl
    ]);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: Bearer ' . $token,
        'Content-Type: application/json'
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpCode !== 200) {
        $error = json_decode($response, true);
        throw new Exception($error['message']);
    }

    return $response;
}

// 使用示例
$audioData = synthesizeSpeech(
    '专注Ai人工智能 声音克隆、图片生成、视频生成领域',
    'https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250211/tixcef/cherry.wav',
    'sk-5313cff75c508b8093b457a2710cc030'
);

file_put_contents('output.mp3', $audioData);
?>

六、错误码说明

HTTP状态码 错误码 说明
400 empty_text 文本内容为空
400 missing_prompt_audio 缺少参考音频URL
401 unauthorized 未授权或Token无效
402 insufficient_balance 余额不足
405 method_not_allowed 不支持的请求方法
500 transaction_failed 服务端错误

七、计费说明

7.1 计费规则

用户类型 单价(元/次)
普通用户 0.03
VIP用户 0.02
BossVIP用户 0.02

7.2 余额查询

在调用接口前,建议先检查用户余额:

// 伪代码示例
const balance = await getUserBalance(userId);
const cost = isVIP ? 0.02 : 0.03;

if (balance < cost) {
    throw new Error('余额不足');
}

八、注意事项

  1. 参考音频要求
    • 格式:WAV 或 MP3
    • 时长:建议3-10秒
    • 内容:清晰的语音样本
  2. 文本长度限制:最大1000字符
  3. 音频格式:接口返回 MP3 格式音频
  4. 错误处理:当接口返回非200状态码时,需检查响应体中的错误信息
  5. 重试机制:建议在网络异常时实现重试逻辑

九、FAQ

Q1:如何获取参考音频URL?

A:您可以上传音频文件到云存储(如阿里云OSS、腾讯云COS等),获取公开访问URL。

Q2:支持哪些语言?

A:目前主要支持中文和英文语音合成。

Q3:音频质量如何?

A:IndexTTS-1.5 采用先进的语音合成技术,音频质量高,音色自然。

Q4:如何处理大文本合成?

A:建议将大文本分段处理,每段建议不超过1000字符。


文档版本: v1.0
更新日期: 2026年5月
适用接口: IndexTTS-1.5
官方域名: https://www.yuntts.com

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