音色注册接口

音色注册

服务概述

  • 通过云上曲率人工智能技术,提取音色特征,克隆音色。
  • 克隆完成后,使用该接口返回的音色名,进行语音合成。

服务申请

语音合成API采用全流程自助申请的模式。在云上曲率官网(https://www.ilivedata.com/) 注册并激活账号后,在控制台创建语音合成项目,即可获得appId和服务密钥。

如需开通更多服务,可在管理控制台-总览页面开通其他服务。

接入方式

参数规范

请求URL: https://tts.ilivedata.com/api/v1/speech/synthesis/voice/register

HTTP请求头

请求头 描述
Content-Type application/json;charset=UTF-8 请求体类型
Accept application/json;charset=UTF-8 接受的返回类型
X-AppId 例:81900001 项目或应用的唯一标识符
X-TimeStamp 例:2024-07-01T07:59:59Z 请求的UTC时间戳。需要把时间戳按W3C标准格式化,例如: 2024-07-01T07:59:59Z. (http://www.w3.org/TR/xmlschema-2/#dateTime)。
Authorization 例:Njl86M/jY6zZaZoGhZdGO+GI/8+yGFECusGH1yQHUFE= 签名值

请求方法:POST

请求体:

参数 是否必需 类型 描述
voiceName String 音色名称,不传则采用系统自动生成
language String 音频对应的语种,不传则采用语种检测结果
audio String 音频文件地址
text String 音频文本内容,不传则采用语种识别结果
gender Number 音频性别,0: 女声,1: 男声,默认女声

请求体示例

Request Sample

{
  "text" : "您好,欢迎来到云上曲率.",
  "language" : "zh-CN",
  "voiceName": "demo0001",
  "gender": 0,
  "audio": "https://aaaa.wav"
}

请求签名:

当用户请求语音合成API时,可以使用appId和secretKey对请求做签名,当API收到带签名信息的请求之后,将使用相同的算法验证签名,如果发现签名不一致,API将会返回401给用户。

如果API验证签名一致,且appId对应的用户有权限操作请求的资源,则请求成功,否则API返回401。

通过 HTTP 请求 Header 发送签名

方法: 在请求中加入名为 Authorization 的 Header,值为签名值。如下:

Authorization: Njl86M/jY6zZaZoGhZdGO+GI/8+yGFECusGH1yQHUFE=

签名计算方法

1.构造规范化的请求字符串(Canonicalized Query String)

将请求体JSON字符串以UTF-8字符编码做sha256编码后转换为16进制字符串(注意不是Base64)

CanonicalizedQueryString = hex(sha256(jsonBody))

2.构造被签名字符串 StringToSign ("\n” 代表ASCII里的换行符)

StringToSign = HTTPMethod + "\n" +
               HostHeaderInLowercase + "\n" +
               HTTPRequestURI + "\n" +
               CanonicalizedQueryString <从上一步得到> + "\n" +
               "X-AppId:" + SAME_APPID_IN_HEADER + "\n" +
               "X-TimeStamp:" + SAME_TIMESTAMP_IN_HEADER

HTTPRequestURI是请求URI的绝对路径,不包含请求串。如果HTTPRequestURI为空,也要保留一个正斜杠 ( / )

使用 HMAC-SHA256 协议创建基于哈希的消息身份验证代码 (HMAC),然后计算签名。

3.StringToSign作为签名字符串,secretKey作为秘钥,SHA256作为哈希算法

有关 HMAC 的更多信息,请参阅 https://tools.ietf.org/html/rfc2104

4.将上一步的结果转换为BASE64串

5.将BASE64串放入HTTP请求Header的Authorization

签名示例

下面是appId & secretKey & audio的示例

appId=81900001
secretKey=****
audio_base64="IyFBTVItV0IKJFACQCLrVZflEqx2xCbkB6pst/TYz3z1zlzeTP"

下面是示例请求体

{"text":"您好,欢迎来到云上曲率.","language":"zh-CN","voiceName":"demo0001","gender":0,"audio":"https://aaaa.wav"}

生成CanonicalizedQueryString

3ff89070a25e4091c94f03ad3cf014d712aaf9e069ef654b0e7e58b2b4550e31

生成StringToSign

POST
tts.ilivedata.com
/api/v1/speech/synthesis/voice/register
3ff89070a25e4091c94f03ad3cf014d712aaf9e069ef654b0e7e58b2b4550e31
X-AppId:81900001
X-TimeStamp:2024-11-01T07:59:59Z

HMAC计算得到的签名

1nNkKezG9XgkbCau9aENhDDRJhoTMHAI85NnjY+Mm4k=

HTTP响应

字段名 类型 描述
errorCode Number 0,表示成功
errorMessage String 提示消息
data ResponseData 响应数据

ResponseData

参数 类型 描述
voiceName Number 音色名称
gender Number 性别,0: 女声1: 男声,默认0
language String 语种,音频语种
textToTrain String 音频文本
audioToTrain String 实际使用的音频

响应示例

Sample Response

{
    "errorCode": 0,
    "errorMessage": "Success.",
    "data": {
        "gender": 0,
        "voiceName": "demo0001",
        "language": "zh-CN",
        "audioToTrain": "https://bbbb.wav",
        "textToTrain": "您好,欢迎来到云上曲率."
    }
}