前言说明

本接口基于 ChatTTS 开发的语音合成服务,支持系统音色和自定义音色,将文本转换为自然流畅的语音,由云声配音提供技术支持。

API接口插图

核心特性:

  • 按次计费:每次调用固定收费,与文本长度无关
  • 多种预设音色:支持 alloy、echo、fable、onyx、nova、shimmer 六种音色
  • 自定义音色:支持 .pt 格式文件链接自定义音色
  • 口语化控制:支持 [oral_0] ~ [oral_9] 调节口语化程度
  • 音频直出:始终以音频二进制流返回,无需轮询

接口信息

项目 说明
请求地址 POST /api/v1/chattts
请求格式 application/json
认证方式 用户认证 Token(请求头携带)
响应格式 音频二进制流

请求参数

参数 类型 必填 默认值 说明
input string 要合成语音的文本内容
model string ChatTTS 模型名称(接口自动填充,无需传入)
prompt string [oral_1] 口语化程度。取值范围 [0,9],数值越小表达越官方,数值越大表达越生活化。支持直接传数字(如 1)或 [oral_1] 格式
temperature number 0.2 采样温度,控制输出随机性。范围 [0.0, 1.0],值越高输出越随机和创造性,值越低输出越稳定。建议根据需求调整 top_P 或 temperature,避免同时调整两者
top_P number 0.7 从概率最高的前 p% 的候选词中选取 tokens。范围 [0.0, 1.0],当 top_P 为 0 时此参数无效。建议根据需求调整 top_P 或 temperature,避免同时调整两者
top_K integer 20 限制模型在每一步选择下一个词时,只从概率最高的前 k 个词中选取。范围 [0, 20],数值越大文本生成越多样
voice string 条件 预设音色,与 voice_url 二选一。可选值:alloy / echo / fable / onyx / nova / shimmer
voice_url string 条件 .pt 格式的文件链接,用于调整生成语音的音色,与 voice 二选一

请求示例

预设音色合成:

{
    "input": "欢迎使用语音合成服务",
    "voice": "nova"
}

自定义音色合成:

{
    "input": "欢迎使用语音合成服务",
    "voice_url": "https://example.com/voice.pt"
}

默认音色合成(不传 voice/voice_url):

{
    "input": "欢迎使用语音合成服务"
}

响应说明

✅ 成功响应

接口始终以音频二进制流返回,不返回 JSON。

响应头:

响应头 说明 示例
Content-Type 音频 MIME 类型 audio/wav
Content-Length 音频文件大小(字节) 101966
X-Characters 合成文本的加权字符数 42
X-Cost 扣费金额(元) 0.03
X-Task-Id 任务唯一ID chattts_xxxxxxxx

响应体:

原始音频二进制数据,直接作为 HTTP 响应体返回。

❌ 错误响应

接口返回 JSON:

{
    "code": "错误码",
    "message": "错误描述"
}

常见错误码:

HTTP 状态码 错误码 说明
400 invalid_parameters 缺少必要参数(input)或参数冲突(voice 和 voice_url 同时提供)
400 json_decode_failed JSON 解析失败
401 unauthorized 未登录或认证失败
403 insufficient_balance 余额不足
405 method_not_allowed 仅支持 POST 请求
500 missing_api_key API 密钥未配置
500 transaction_failed 合成失败(已退款)

对接示例

cURL

curl -X POST "https://www.yuntts.com/api/v1/chattts" 
  -H "Content-Type: application/json" 
  -H "Authorization: Bearer YOUR_TOKEN" 
  -d '{
    "input": "欢迎使用语音合成服务",
    "voice": "nova"
  }' 
  --output output.wav

JavaScript (Fetch)

const response = await fetch('https://www.yuntts.com/api/v1/chattts', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_TOKEN'
  },
  body: JSON.stringify({
    input: '欢迎使用语音合成服务',
    voice: 'nova'
  })
});

// 获取响应头中的元数据
const charCount = response.headers.get('X-Characters');
const cost = response.headers.get('X-Cost');
const taskId = response.headers.get('X-Task-Id');

// 获取音频 Blob 并播放
const audioBlob = await response.blob();
const audioUrl = URL.createObjectURL(audioBlob);
const audio = new Audio(audioUrl);
audio.play();

Python

import requests

response = requests.post(
    url='https://www.yuntts.com/api/v1/chattts',
    headers={
        'Content-Type': 'application/json',
        'Authorization': 'Bearer YOUR_TOKEN'
    },
    json={
        'input': '欢迎使用语音合成服务',
        'voice': 'nova'
    }
)

# 获取响应头中的元数据
char_count = response.headers.get('X-Characters')
cost = response.headers.get('X-Cost')
task_id = response.headers.get('X-Task-Id')

# 保存音频文件
with open('output.wav', 'wb') as f:
    f.write(response.content)

PHP

$response = wp_remote_post('https://www.yuntts.com/api/v1/chattts', array(
    'headers' => array(
        'Content-Type' => 'application/json',
        'Authorization' => 'Bearer ' . $token,
    ),
    'body' => json_encode(array(
        'input' => '欢迎使用语音合成服务',
        'voice' => 'nova',
    )),
));

// 获取响应头中的元数据
$char_count = wp_remote_retrieve_header($response, 'X-Characters');
$cost = wp_remote_retrieve_header($response, 'X-Cost');
$task_id = wp_remote_retrieve_header($response, 'X-Task-Id');

// 获取音频内容
$audio_content = wp_remote_retrieve_body($response);

// 保存为文件或直接输出
file_put_contents('output.wav', $audio_content);

计费说明

用户类型 每次调用费用
普通用户 ¥0.03
VIP / BOOSVIP ¥0.02

说明:ChatTTS 按次计费,与合成文本长度无关。API 请求失败时自动全额退款。

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