语音合成接口
更新时间:
语音合成
服务概述
- 通过云上曲率人工智能技术,将文本转换为自然语音
服务申请
语音合成API采用全流程自助申请的模式。在云上曲率官网(https://www.ilivedata.com/) 注册并激活账号后,在控制台创建语音合成项目,即可获得appId和服务密钥。
如需开通更多服务,可在管理控制台-总览页面开通其他服务。
接入方式
参数规范
请求URL: https://tts.ilivedata.com/api/v1/speech/synthesis
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
请求体:
参数
是否必需
类型
描述
text
必须
String
文本内容,长度范围[1,500]
language
可选
String
文本内容所属语种,推荐传入此语言参数, 不传则使用自动语种检测结果
voice
可选
VoiceSetting
合成声音相关配置,参数为空时使用语种对应的系统默认声音
output
可选
OutputSetting
输出音频相关配置
VoiceSetting:
参数
必需
类型
描述
name
可选
String
云上提供的可选声音名称(具体音色库联系相关工作人员,自定义音色暂未开放)
audio
可选
String
未指定音色名称时,可以通过此参数指定的音频文件(当前只支持wav格式)进行音色克隆
OutputSetting:
参数
必需
类型
描述
format
可选
String
选择输出合成音频格式,候选为pcm、wav、mp3,默认为wav
请求体示例
Request Sample
{
"text": "您好,欢迎来到云上曲率.",
"language": "zh-CN",
"voice": {
"audio": "https:/xxxxxxx.wav"
},
"output": {
"format": "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
secrectKey=****
audio_base64="IyFBTVItV0IKJFACQCLrVZflEqx2xCbkB6pst/TYz3z1zlzeTP"
下面是示例请求体
{"text":"您好,欢迎来到云上曲率.","language":"zh-CN","voice":{"audio":"https:/xxxxxxx.wav"},"output":{"format":"wav"}}
生成CanonicalizedQueryString
3ff89070a25e4091c94f03ad3cf014d712aaf9e069ef654b0e7e58b2b4550e31
生成StringToSign
POST
tts.ilivedata.com
/api/v1/speech/synthesis
3ff89070a25e4091c94f03ad3cf014d712aaf9e069ef654b0e7e58b2b4550e31
X-AppId:81900001
X-TimeStamp:2024-11-01T07:59:59Z
HMAC计算得到的签名
1nNkKezG9XgkbCau9aENhDDRJhoTMHAI85NnjY+Mm4k=
HTTP响应
字段名
类型
描述
errorCode
Number
0,表示成功
errorMessage
String
提示消息
data
ResponseData
响应数据
ResponseData
字段名
类型
描述
taskId
String
任务唯一标识
url
String
合成音频的访问地址
duration
Float
语音文件时长(秒)
language
String
文本语种
响应示例
Sample Response
{
"errorCode": 0,
"errorMessage": "Success.",
"data": {
"taskId": "ap_xxxxxxxxxxx",
"url": "https://xxx.mp3",
"duration": 12.0,
"language": "zh-CN"
}
}
语音合成
服务概述
- 通过云上曲率人工智能技术,将文本转换为自然语音
服务申请
语音合成API采用全流程自助申请的模式。在云上曲率官网(https://www.ilivedata.com/) 注册并激活账号后,在控制台创建语音合成项目,即可获得appId和服务密钥。
如需开通更多服务,可在管理控制台-总览页面开通其他服务。
接入方式
参数规范
请求URL: https://tts.ilivedata.com/api/v1/speech/synthesis
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
请求体:
参数 | 是否必需 | 类型 | 描述 |
---|---|---|---|
text | 必须 | String | 文本内容,长度范围[1,500] |
language | 可选 | String | 文本内容所属语种,推荐传入此语言参数, 不传则使用自动语种检测结果 |
voice | 可选 | VoiceSetting | 合成声音相关配置,参数为空时使用语种对应的系统默认声音 |
output | 可选 | OutputSetting | 输出音频相关配置 |
VoiceSetting:
参数 | 必需 | 类型 | 描述 |
---|---|---|---|
name | 可选 | String | 云上提供的可选声音名称(具体音色库联系相关工作人员,自定义音色暂未开放) |
audio | 可选 | String | 未指定音色名称时,可以通过此参数指定的音频文件(当前只支持wav格式)进行音色克隆 |
OutputSetting:
参数 | 必需 | 类型 | 描述 |
---|---|---|---|
format | 可选 | String | 选择输出合成音频格式,候选为pcm、wav、mp3,默认为wav |
请求体示例
Request Sample
{
"text": "您好,欢迎来到云上曲率.",
"language": "zh-CN",
"voice": {
"audio": "https:/xxxxxxx.wav"
},
"output": {
"format": "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
secrectKey=****
audio_base64="IyFBTVItV0IKJFACQCLrVZflEqx2xCbkB6pst/TYz3z1zlzeTP"
下面是示例请求体
{"text":"您好,欢迎来到云上曲率.","language":"zh-CN","voice":{"audio":"https:/xxxxxxx.wav"},"output":{"format":"wav"}}
生成CanonicalizedQueryString
3ff89070a25e4091c94f03ad3cf014d712aaf9e069ef654b0e7e58b2b4550e31
生成StringToSign
POST
tts.ilivedata.com
/api/v1/speech/synthesis
3ff89070a25e4091c94f03ad3cf014d712aaf9e069ef654b0e7e58b2b4550e31
X-AppId:81900001
X-TimeStamp:2024-11-01T07:59:59Z
HMAC计算得到的签名
1nNkKezG9XgkbCau9aENhDDRJhoTMHAI85NnjY+Mm4k=
HTTP响应
字段名 | 类型 | 描述 |
---|---|---|
errorCode | Number | 0,表示成功 |
errorMessage | String | 提示消息 |
data | ResponseData | 响应数据 |
ResponseData
字段名 | 类型 | 描述 |
---|---|---|
taskId | String | 任务唯一标识 |
url | String | 合成音频的访问地址 |
duration | Float | 语音文件时长(秒) |
language | String | 文本语种 |
响应示例
Sample Response
{
"errorCode": 0,
"errorMessage": "Success.",
"data": {
"taskId": "ap_xxxxxxxxxxx",
"url": "https://xxx.mp3",
"duration": 12.0,
"language": "zh-CN"
}
}