音色注册接口
更新时间:
音色注册
服务概述
- 通过云上曲率人工智能技术,提取音色特征,克隆音色。
- 克隆完成后,使用该接口返回的音色名,进行语音合成。
服务申请
语音合成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": "您好,欢迎来到云上曲率."
}
}
音色注册
服务概述
- 通过云上曲率人工智能技术,提取音色特征,克隆音色。
- 克隆完成后,使用该接口返回的音色名,进行语音合成。
服务申请
语音合成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": "您好,欢迎来到云上曲率."
}
}