Skip to content

创建声音定制任务

说明

Cicada-TTS的语音模型提供方便的声音复刻能力,支持用户使用克隆的音色合成试听音频,以及在语音合成阶段使用自己的音色。

使用流程

定制声音功能的实现具体流程如下:

  1. 上传待克隆的音频
  • 支持上传的文件需要遵循以下规范:

上传的音频文件格式需为: mp3、wav、m4a格式;

上传的音频文件的有效音频时长范围在30秒到5分钟,其中有效的说话人音频时长不低于10秒;

文件大小不超过 100 M;

  1. 选取相应的模型
  • 目前支持cicada1.0, cicada3.0以及cicada3.0-Turbo
  1. 上传声音预览文案
  • 声音预览文案不能超过50个字符,且不能仅传数字
  1. 调用声音定制接口
  • 输入上述入参,调用 声音定制接口 克隆音色并获取trace_id

注意: 此任务QPS 10/min,具体进度通过查询接口查看

请求地址

http
POST /open/v1/create_customised_audio
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传入参数格式错误
10400AccessToken验证失败
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)