任务提交接口

语音合成

服务概述

  • 通过云上曲率的人工智能技术,将文本内容转换为自然流畅的语音。

服务申请

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

如需开通更多服务,可在“管理控制台 > 总览”页面中进行相关配置。

接入方式

参数规范

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,10000]
language 可选 String 文本内容所属语种,推荐传入此语言参数, 不传则使用自动语种检测结果
fallbackLanguage 可选 String 回落语种,当文本检测结果为不支持语种时,使用此语种生成对应音频
voice 可选 VoiceSetting 合成声音相关配置,参数为空时使用语种对应的系统默认声音
output 可选 OutputSetting 输出音频相关配置

VoiceSetting:

参数 必需 类型 描述
name 可选 String 预置音色库音色注册的音色名称

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 任务唯一标识

响应示例

Sample Response

{
    "errorCode": 0,
    "errorMessage": "Success.",
    "data": {
        "taskId": "ap_xxxxxxxxxxx"
    }
}