前言说明
本接口基于 ChatTTS 开发的语音合成服务,支持系统音色和自定义音色,将文本转换为自然流畅的语音,由云声配音提供技术支持。
核心特性:
- 按次计费:每次调用固定收费,与文本长度无关
- 多种预设音色:支持 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 请求失败时自动全额退款。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


评论(0)