训练专属音色模型
● 服务正常
按量计费
POST
语音合成
文档 doc/128
上传 30 秒左右的人声音频,训练出专属音色模型。拿到 modelId 后调「文字转语音」即可用这个声音朗读任意文本。
POSThttps://api.vidtidy.cn/api/v1/voice-clone
鉴权:请求头 X-API-KEY: sk_live_…(也支持 key 查询参数)。
请求参数
| 名称 | 必填 | 类型 | 说明 |
name | 必填 |
string | 模型名称,自己起,用于区分 |
audioUrl | 必填 |
string | 人声音频直链,建议 30 秒,最长 5 分钟 |
description | 选填 |
string | 音频对应的参考文本(选填,填了通常更准) |
返回参数
| 名称 | 类型 | 说明 |
modelId | string | 语音模型 id,请务必自行保存 |
modelName | string | 模型名称 |
cost | string | 本次扣费金额(元,4 位小数) |
balance | string | 扣费后账户余额(元) |
返回示例
{
"code": 200,
"msg": "SUCCESS",
"data": {
"modelId": "94c1a586-405f-467c",
"modelName": "我的音色"
},
"cost": "1.5000"
}
说明:modelId 只返回一次,平台不替你保存,请立刻写进自己的数据库。同一音色可无限次用于文字转语音。
计费口径
| 项目 | 说明 |
| 计费方式 | 按次计费,每成功调用一次扣一次 |
| 我方单价 | 1.5 元/次 |
| 上游原价 | 1 元/次(我方含接入、重试、对账与技术支持的加价部分) |
| 预扣与退款 | 按秒/按字类接口在提交时预扣,上游返回业务失败码时 全额自动退回,无需申请 |
| 免费接口 | 任务查询类接口永远免费,高频轮询不会产生费用 |
| 最低余额 | 余额不足以支付本次预扣时会直接返回 402,不会先调用上游再报错 |
错误码
| code | 含义 | 处理建议 |
200 | 成功 | — |
-1 | 业务异常 | 见 msg。链接不支持 / 文件不可下载 / 时长超限最常见 |
401 | 密钥无效 | 检查请求头,或到控制台确认密钥未停用 |
402 | 余额不足 | 充值后重试,本次不扣费 |
429 | 频率超限 | 按 5 次/秒 退避 |
500 | 服务异常 | 上游故障,已自动退款 |
cURL
curl -X POST "https://api.vidtidy.cn/api/v1/voice-clone" \
-H "X-API-KEY: sk_live_你的密钥" \
-d "name=示例值" \
-d "audioUrl=示例值" \
-d "description=示例值"
Python
import requests
r = requests.post(
"https://api.vidtidy.cn/api/v1/voice-clone",
headers={"X-API-KEY": "sk_live_你的密钥"},
data={"name": "示例值", "audioUrl": "示例值", "description": "示例值"},
timeout=120,
)
print(r.json())Node.js
const body = new URLSearchParams({
"name": "示例值",
"audioUrl": "示例值",
"description": "示例值",
});
const res = await fetch("https://api.vidtidy.cn/api/v1/voice-clone", {
method: "POST",
headers: { "X-API-KEY": "sk_live_你的密钥" },
body,
});
console.log(await res.json());PHP
true,
CURLOPT_HTTPHEADER => ["X-API-KEY: sk_live_你的密钥"],
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query(["name" => "示例值", "audioUrl" => "示例值", "description" => "示例值"]),
]);
$out = curl_exec($ch);
curl_close($ch);
echo $out;