创建声音定制任务
说明
Cicada-TTS的语音模型提供方便的声音复刻能力,支持用户使用克隆的音色合成试听音频,以及在语音合成阶段使用自己的音色。
使用流程
定制声音功能的实现具体流程如下:
- 上传待克隆的音频
- 支持上传的文件需要遵循以下规范:
上传的音频文件格式需为: mp3、wav、m4a格式;
上传的音频文件的有效音频时长范围在30秒到5分钟,其中有效的说话人音频时长不低于10秒;
文件大小不超过 100 M;
- 选取相应的模型
- 目前支持cicada1.0, cicada3.0以及cicada3.0-Turbo
- 上传声音预览文案
- 声音预览文案不能超过50个字符,且不能仅传数字
- 调用声音定制接口
- 输入上述入参,调用 声音定制接口 克隆音色并获取trace_id
注意: 此任务QPS 10/min,具体进度通过查询接口查看
请求地址
http
POST /open/v1/create_customised_audio
Header
http
access_token: {{access_token}}
Content-Type: application/json
请求参数 Body
字段 | 类型 | 是否必传 | 说明 |
---|---|---|---|
name | 字符串 | 是 | 声音名称 |
url | 字符串 | 是 | 声音链接,支持 mp3,wav,m4a, 目前只支持以下四种编码:audio/x-wav, audio/mpeg, audio/m4a, video/mp4 录制环境要安静,无背景杂音,正常语速,嚼字清晰,连续讲话不低于10秒,最好带有情感讲话 时长30秒-5分钟,文件大小不超过 100 M |
model_type | 模型类型 | 否 | 默认模型为cicada1.0,支持cicada1.0、cicada3.0,具体收费参考 计费说明 |
language | 语种 | 否 | 默认为cn,支持en英文,其他语种暂不支持,如有特殊语种需要支持,请联系客服 |
text | 字符串 | 否 | 声音预览文案,文本内容不得超过50个字符,不得仅传数字 |
callback | 字符串 | 否 | 回调地址,任务结束后会向该地址发送一个 POST 请求。请求体的格式和获取声音详情查询结果返回的data相同 |
请求示例
json
{
"name": "example",
"url": "https://example.com/abc.mp3",
"callback": "https://example.com/callback"
}
响应
响应JOSN
json
{
"trace_id": "2f0f50951d0bae0a3be3569097305424",
"code": 0,
"msg": "success",
"data": "C-Audio-53e4e53ba1bc40de91ffaa74f20470fc"
}
响应字段说明
字段 | 说明 |
---|---|
code | 响应状态码 |
msg | 响应消息 |
data | 声音的 id |
响应状态码说明
code | 说明 |
---|---|
0 | 响应成功 |
400 | 传入参数格式错误 |
10400 | AccessToken验证失败 |
APP状态错误 | |
40000 | 参数错误 |
40001 | 超出QPS限制 |
50000 | 系统内部错误 |
请求示例
bash
curl -X "POST" "https://www.chanjing.cc/api/open/v1/create_customised_audio" \
-H 'access_token: {你的 access_token}' \
-d '{
"name": "example",
"url": "https://example.com/abc.mp3",
"callback": "https://example.com/callback"
}'
go
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://www.chanjing.cc/api/open/v1/create_customised_audio"
method := "POST"
payload := strings.NewReader("%7B%0A%20%20%22name%22%3A%20%22example%22%2C%0A%20%20%22url%22%3A%20%22https%3A%2F%2Fexample.com%2Fabc.mp3%22%2C%0A%20%20%22callback%22%3A%20%22https%3A%2F%2Fexample.com%2Fcallback%22%0A%7D=")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("access_token", "{你的 access_token}")
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
java
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "{
\"name\": \"example\",
\"url\": \"https://example.com/abc.mp3\",
\"callback\": \"https://example.com/callback\"
}=");
Request request = new Request.Builder()
.url("https://www.chanjing.cc/api/open/v1/create_customised_audio")
.method("POST", body)
.addHeader("access_token", "{你的 access_token}")
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.build();
Response response = client.newCall(request).execute();
py
import requests
url = "https://www.chanjing.cc/api/open/v1/create_customised_audio"
payload = '%7B%0A%20%20%22name%22%3A%20%22example%22%2C%0A%20%20%22url%22%3A%20%22https%3A%2F%2Fexample.com%2Fabc.mp3%22%2C%0A%20%20%22callback%22%3A%20%22https%3A%2F%2Fexample.com%2Fcallback%22%0A%7D='
headers = {
'access_token': '{你的 access_token}',
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)