1、接口描述
语音合成(Text To Speech,TTS)将文本转成拟人化的语音。目前仅支持中文语音合成,提供男、女两种音色的选择,支持自定义语调、语速等参数,更符合业务场景的需要。
2、请求方法
POST
3、接口要求
- 目前仅支持 base64 编码方式请求,暂不支持 url 方式请求。
- 一次请求仅支持一条数据。
4、URI
/v1/aiop/api/2z0yhhrzgv0g/tts/predict
5、请求参数
请求头header参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
Content-Type | 是 | String | json 格式 | application/json | |
appkey | 是 | String | 诸葛 AI 应用 appkey | 562b89493b1a40e1b97ea05e50dd8170 | |
ctyun-eop-request-id | 是 | String | 用户请求 id,由用户构造,用户可以通过 uuid 等方法自行生成唯一字符串,用于日志请求追踪。 详见文档:API参考-如何调用API-Python3 调用示例 |
33dfa732-b27b-464f-b15a-21ed6845afd5 | |
eop-date | 是 | String | 请求时间,由用户构造,形如 yyyymmddTHHMMSSZ。 详见文档:API参考-如何调用API-Python3 调用示例 |
20211221T163014Z | |
host | 是 | String | 终端节点域名,固定字段 | ai-global.ctapi.ctyun.cn | |
Eop-Authorization | 是 | String | 由天翼云官网 accessKey 和 securityKey 经签名后生成,参与签名生成的字段包括天翼云官网 accessKey 、securityKey、诸葛AI平台的 appkey(非必须),用户请求 id(非必须),请求时间,终端节点域名(非必须)以及请求体内容。 签名逻辑详见文档:API参考-如何调用API-认证鉴权和Python3 调用示例 |
请求体body参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
Action | 是 | String | 算法名称 | TTS | |
TextData | 是 | String | 合成语音的文本 ,按 UTF-8 编码。 最小支持 3 个汉字,最多支持 150 个汉字。 英文、数字、标点均等同于一个字符。 强烈建议输入文本加上标点符号,便于合成更正确的语音数据。 仅支持中文语音合成。 | 今晚去吃火锅吗 | |
VoiceType | 否 | Int | 声音类型 。目前仅支持两种声音。 0 表示男生声音,1 表示女生声音。 | 0 | |
Pitch | 否 | Float | 语调 。返回范围 [0.8, 2],默认值为 1.0,原调。 | 1.0 | |
Speed | 否 | Float | 语速 。返回范围 [0.5, 2],默认值为 1.0,原速。"1.0" |
6、请求代码示例
Curl -X POST
"https://ai-global.ctapi.ctyun.cn/v1/aiop/api/2z0yhhrzgv0g/tts/predict"
-H "Content-Type: application/json"
-H "ctyun-eop-request-id:33dfa732-b27b-464f-b15a-21ed6845afd5"
-H "appkey:XXX"
-H "Eop-Authorization:XXX"
-H "eop-date:20211109T104641Z"
-H "host:ai-global.ctapi.ctyun.cn"
--data '{"Action": "TTS", "TextData": "今晚去吃火锅吗"}'
7、返回值说明
请求成功返回响应参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
statusCode | 是 | Int | 返回状态,返回 0 表示成功,返回错误代码参考下面的错误代码列表。 | 0 | |
message | 是 | String | 如果statusCode 为 0,返回 success;如果 statusCode非 0,则返回对应的可读错误信息。 | success | |
returnObj | 是 | Object | 返回的识别结果对象 | returnObj |
表returnObj
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
Audio | 是 | String | **语音编码数据。**Base64 编码的 wav 格式音频数据。 | "_9j_4AAQSkZJRgA......Zuv_9k=" |
请求失败返回响应参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
statusCode | 是 | Int | 错误码,放置API对应的错误码 | 500001 | |
message | 是 | String | 返回对应的错误信息 | 服务接口异常,请联系管理员 | |
details | 是 | String | 返回对应的错误描述 | 需要联系管理员处理 | |
error | 是 | String | 返回对应的错误码 | AI_OP_500001 |
8、返回值示例
请求成功返回值示例
{
"statusCode": 0,
"message": "success",
"returnObj": {
"Audio": "_9j_4AAQSkZJRgA......Zuv_9k="
}
}
请求失败返回值示例
{
"statusCode": 400003,
"message": "Body 内容为空",
"details": "Body 请求数据为空,没有包含内容",
"error":"AI_OP_400003"
}
9、状态码
http状态码 | 描述 |
---|---|
200 | 表示请求成功 |
10、错误码说明
6 位错误码。4 开头为业务错误码,5 开头为服务错误码。
错误码 | 错误信息 | 错误描述 |
---|---|---|
AI_OP_400003 | Body 内容为空 | Body 请求数据为空,没有包含内容 |
AI_OP_400004 | Body 请求体非 json 格式 | Body内容需要符合 json 要求 |
AI_OP_400005 | 请求体类型错误 | 请求体需为字典,不能为其他类型 |
AI_OP_410001 | 必传的参数未传 | 必须的参数(Action、TextData)未传 |
AI_OP_410002 | 请求体的字段类型错误 | 请求体的字段(Action、TextData)类型错误,类型只能为字符串,不能为其他类型 |
AI_OP_400009 | Action 值设置错误 | Action 值设置错误 |
AI_OP_410003 | TextData 字段值为空字符 | TextData 字段值为空字符 |
AI_OP_410006 | 文本输入过短 | 文本输入过短,请参考接口文档说明 |
AI_OP_410007 | 文本输入过长 | 文本输入过长,请参考接口文档说明 |
AI_OP_450001 | VoiceType 字段类型错误 | VoiceType 字段应该是 int 类型 |
AI_OP_450002 | VoiceType 字段不符合规范 | VoiceType 字段不符合规范,请参考接口文档说明 |
AI_OP_450003 | Pitch 字段类型错误 | Pitch 字段应该是 float 类型 |
AI_OP_450004 | Pitch 字段不符合规范 | Pitch 字段不符合规范,请参考接口文档说明 |
AI_OP_450005 | Speed 字段类型错误 | Speed 字段应该是 float 类型 |
AI_OP_450006 | Speed 字段不符合规范 | Speed 字段不符合规范,请参考接口文档说明 |
AI_OP_500001 | 服务接口异常,请联系管理员 | 需要联系管理员处理 |
base64 解码规则:使用常规的 safe base64 编码方式
- python 中推荐使用
base64.urlsafe_b64decode()
函数进行编码。 - java 中推荐使用
BASE64.getUrlDecoder().encodeToString()
函数进行编码。