语音合成声音定制
一、接口描述
1. 功能描述
此系统仅需要用户按照指定的文本提供录音数据(pcm),提交到京东云服务后,系统会自动完成模型训练,并完成服务部署,用户可迅速使用自己定制的语音合成服务。
2. 接口数据要求:
- 文本仅支持UTF-8格式
- 文本长度不能超过1000个字符(包含标点)
- 音频数据使用pcm格式,单声道,16-bits,采样率:16000Hz
- 支持语音合成标记语言 (SSML)
3. 接口使用:
平台为每个API提供试用体验服务,您在AI市场选择“免费试用”规格下单后,即可开始体验业内领先的人工智能API服务。 免费试用服务具有调用量、QPS限制,如需更高性能的API服务,可以提交咨询工单,联系京东AI扩容购买。
在获得使用权限后,您可使用已经封装好的SDK/参照接口鉴权规则进行相应开发,整体流程详见接入流程
二、请求说明
1.合成特色音频
1.1. 接口地址 :
https://aiapi.jd.com/jdai/tts_customize
1.2. 请求方式:
post
1.3. 请求参数
(1)query请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
appkey | string | 是 | 80d2b762ecb86593f9668526920f46c | 您的appkey,可在买家中心控制台中获 |
timestamp | long | 是 | 1541491668060 | 请求的时间戳,精确到毫秒,timestamp有效期5分钟 |
sign | string | 是 | 2e148773a0337a8f2200ba90d445f083 | 签名,根据规则MD5(sectetkey,timestamp) |
(2)header请求参数
业务请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
Authorization | string | 是 | Bearer eyJhbGciOiJIUzUxMiJ9XXXX | 用户登陆后获取的token,【Bearer 】这个字段要保留,Bearer后有一个空格 |
Route-Key | string | 是 | jdtts | 用户路由信息,以用户名及模型ID的组合:userName_modelID |
Service-Type | string | 是 | synthesis | 服务类型,这里设置固定值synthesis |
Request-Id | string | 是 | 65845428-de85-11e8-9517-040973d59a1e | 请求语音串标识码。由客户端生成,代表完整的语音识别请求过程,需要注意:
- 需要全局唯一 - 对于同一次合成请求Request-Id需要保持一致 - 每个不同的合成请求都要新生成Request-Id,若多次请求使用同一个将会产生不可预知的错误。 生成方法: - libuuid 库可以直接生成。Android 及 iOS 也有相关的生成函数。 |
Sequence-Id | int | 是 | 1 | 文本分段传输的分段号
-1表示非流式,一次性合成音频并返回。 1表示一次新的流式请求开始,分段合成音频返回,发送第二次请求获取第二段数据时Sequence-Id递增并可以不带text文本。 |
Protocol | int | 是 | 1 | 通信协议版本号,这里设置固定值1 |
Net-State | int | 是 | 1 | 客户端网络状态:1:WIFI,2:移动,3:联通,4:电信,5:其他 |
Applicator | int | 是 | 1 | 应用者,SDK 会提供给不同的应用者(渠道,例如:内部业务(0),外部业务(1)) |
Property | string | 是 | {"platform": "Linux", "version": "0.0.0.1", "parameters": {"aue": "1", "vol": "2.0", "sr": "24000", "sp": "1.0", "tim": "0", "tte": "1"}} | 属性信息,json格式,platform和version为通用属性,parameters字段必填,其中的参数可选,Property允许用户同一个请求的不同包都携带该头,但是建议只在第一包携带 |
- Property参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
platform | string | 是 | Android&Pixel&7.1 | 字符串类型,各平台的机型信息,格式为:{平台}&{机型}&{系统版本号}
- 平台:Android,iOS,Linux,Windows - 机型:设备的机型名称,如Pixel,iPhoneX等 - 系统版本号:设备系统版本,如2.3.3,4.2.1等 |
version | string | 是 | 1.0.0 | 字符串类型,客户端版本号 |
parameters | string | 是 | {"aue": "1", "vol": "2.0", "sr": "24000", "sp": "1.0", "tim": "0", "tte": "1"} | TTS参数 |
- parameters参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
tte | int | 是 | 1 | 文本编码格式 1:UTF-8 (目前仅支持UTF-8格式) |
aue | int | 是 | 1 | 音频编码格式(默认值:0)
0:wav 1:pcm 2:opus |
tim | int | 是 | 0 | 模型ID, 通过训练状态接口获取 |
vol | string | 是 | 2.0 | 音量(默认值:2.0)
取值范围:[0.1, 10.0] |
sp | string | 是 | 1.0 | 语速(默认值:1.0)
取值范围:[0.5, 2.0] |
sr | int | 是 | 24000 | 采样率(默认值:24000)
wav和pcm支持4k到24k的采样率 opus支持8k 12k 16k 和24k的采样率 |
(3)body请求参数
业务请求参数
类型 | 示例值 | 描述 |
---|---|---|
string | 你好,京东! | 放置要合成的文本,长度不能超过1024字节,UTF-8编码 |
1.4、请求代码示例
curl https://aiapi.jd.com/jdai/tts_customize?appkey=68D8FB1BB8E415F1AC8090F527C28241×tamp=1607050386070&sign=3d3ac6df6befcef25b4b269d2329b514 -v -H 'Service-Type:synthesis' -H "Authorization:Bearer eyJhbGciOiJIUzUxMiJ9XXXX" -H 'Route-Key:JDAI-TTS' -H 'Application-Id:123' -H 'user-id:456' -H 'Request-Id:56a847e6-84c0-4c01-bf4b-d566f2d2dd12' -H 'Sequence-Id:1' -H 'Protocol:v2.0' -H 'Net-State:2' -H 'Applicator:0' -H 'Property:{"platform" : "Linux","version" : "0.0.0.1","parameters": {"tte": 1,"tim":300,"vol":2.0,"sp":1.0,"sr":16000,"aue":1}}' -X POST -d "京东语音智能"
1.5 成功返回值示例
{
"code":"10000",
"charge":true,
"remainTimes":4984,
"remainSeconds":32768246,
"msg":"查询成功,扣费",
"result":{
"status":0,
"message":"ok",
"request_id":"a72ead09-9533-4744-9204-578723257579",
"index":16,
"progress":1,
"audio":"BBEEEDYPHA7oDA4MAAv4CRQJrgcuBrwEXXXXXXXXXXXXXXXXXXXX"
}
}
1.6 result返回值说明
状态码 | 示例值 | 描述 |
---|---|---|
status | 0 | 详情请参照【合成服务错误码】 |
message | ok | 错误码描述 |
request_id | a72ead09-9533-4744-9204-578723257579 | 请求session的ID |
index | 16 | 请求session的索引值 |
2.系统用户注册
2.1. 接口地址 :
https://aiapi.jd.com/jdai/tts_customize_reg
2.2. 请求方式:
post
2.3. 数据格式:
json
2.4. 请求参数
(1)query请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
appkey | string | 是 | 80d2b762ecb86593f9668526920f46c | 您的appkey,可在买家中心控制台中获 |
timestamp | long | 是 | 1541491668060 | 请求的时间戳,精确到毫秒,timestamp有效期5分钟 |
sign | string | 是 | 2e148773a0337a8f2200ba90d445f083 | 签名,根据规则MD5(sectetkey,timestamp) |
(2)body请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
name | string | 是 | JDAI_TTS | 系统的用户名 |
passwd | string | 是 | 1541491668060 | 用户密码 |
version | string | 是 | v1 | 签名规则,v1:md5 |
phone | string | 是 | 13811996992 | 手机号 |
devID | string | 是 | XXXXX | 设备ID |
authCode | string | 是 | XXXXX | 认证ID |
2.5、请求代码示例
curl https://aiapi.jd.com/jdai/tts_customize_reg?appkey=80d2b762ecb86593f9668526920f46c×tamp=timestamp&sign=2e148773a0337a8f2200ba90d445f083 -X POST -d '{"name":"JDAI_TTS","passwd":"12345678","version":"v1","phone":"13811996993","authCode":"XXXXXX", "devID":"XXXXX"}' --header "Content-Type: application/json"
2.6 成功返回值示例
{
"code":"10000",
"charge":true,
"remainTimes":4984,
"remainSeconds":32768246,
"msg":"查询成功,扣费",
"result": {
"code":40000,
"msg":"操作成功",
"data":null
}
}
2.7 result返回值说明
状态码 | 示例值 | 描述 |
---|---|---|
code | 40000 | 详情请参照【定制服务错误码】 |
message | 操作成功 | 错误码描述 |
data | null |
3.系统用户登陆
3.1. 接口地址 :
https://aiapi.jd.com/jdai/tts_customize_login
3.2. 请求方式:
post
3.3. 数据格式:
json
3.4. 请求参数
(1)query请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
appkey | string | 是 | 80d2b762ecb86593f9668526920f46c | 您的appkey,可在买家中心控制台中获 |
timestamp | long | 是 | 1541491668060 | 请求的时间戳,精确到毫秒,timestamp有效期5分钟 |
sign | string | 是 | 2e148773a0337a8f2200ba90d445f083 | 签名,根据规则MD5(sectetkey,timestamp) |
(2)body请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
name | string | 是 | JDAI_TTS | 系统的用户名 |
passwd | string | 是 | 1541491668060 | 用户密码 |
version | string | 是 | v1 | 签名规则,v1:md5 |
phone | string | 是 | 13811996992 | 手机号 |
devID | string | 是 | XXXXX | 设备ID |
authCode | string | 是 | XXXXX | 认证ID |
3.5、请求代码示例
curl https://aiapi.jd.com/jdai/tts_customize_login?appkey=80d2b762ecb86593f9668526920f46c×tamp=timestamp&sign=2e148773a0337a8f2200ba90d445f083 -X POST -d '{"name":"JDAI_TTS","passwd":"12345678","version":"v1","phone":"13811996993" ,"authCode":"XXXXXX", "devID":"XXXXX"}' --header "Content-Type: application/json"
3.6 成功返回值示例
{
"code":"10000",
"charge":true,
"remainTimes":4984,
"remainSeconds":32768246,
"msg":"查询成功,扣费",
"result": {
"code":40000,
"msg":"操作成功",
"data":{"token":"eyJhbGciOi.XXXXXXX"}
}
}
3.7 result返回值说明
状态码 | 示例值 | 描述 |
---|---|---|
code | 40000 | 详情请参照【定制服务错误码】 |
message | 操作成功 | 错误码描述 |
data | {"token":"eyJhbGciOi.XXXXXXX"} | 用户访问的token值 |
4.获取训练文本
4.1. 接口地址 :
https://aiapi.jd.com/jdai/tts_customize_train_txt
4.2. 请求方式:
get
4.3. 数据格式:
json
4.4. 请求参数
(1)query请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
appkey | string | 是 | 80d2b762ecb86593f9668526920f46c | 您的appkey,可在买家中心控制台中获 |
timestamp | long | 是 | 1541491668060 | 请求的时间戳,精确到毫秒,timestamp有效期5分钟 |
sign | string | 是 | 2e148773a0337a8f2200ba90d445f083 | 签名,根据规则MD5(sectetkey,timestamp) |
(2)header请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
Authorization | string | 是 | Bearer eyJhbGciOiJIUzUxMiJ9XXXX | 用户登陆后获取的token,【Bearer 】这个字段要保留,Bearer后有一个空格 |
4.5、请求代码示例
curl -H "Authorization:Bearer eyJhbGciOiJIUzUxMiJ9XXXX" https://aiapi.jd.com/jdai/tts_customize_train_txt?appkey=80d2b762ecb86593f9668526920f46c×tamp=timestamp&sign=2e148773a0337a8f2200ba90d445f083"
4.6 成功返回值示例
{
"code":"10000",
"charge":true,
"remainTimes":4984,
"remainSeconds":32768246,
"msg":"查询成功,扣费",
"result": {
"code":40000,
"msg":"操作成功",
"data":[{"id":79,"txtId":"10_02","txt":"我说道,“爸爸,你走吧。”","groupId":2,"createTime":"2020-12-07T22:14:20.000+00:00"}]
}
}
4.7 训练文本
文本ID | 文本 |
---|---|
10_02 | 我说道,“爸爸,你走吧。” |
10_03 | 他望车外看了看,说,“我买几个橘子去。你就在此地,不要走动。” |
10_04 | 我看那边月台的栅栏外有几个卖东西的等着顾客。 |
10_05 | 走到那边月台,须穿过铁道,须跳下去又爬上去。 |
10_06 | 父亲是一个胖子,走过去自然要费事些。 |
10_07 | 我本来要去的,他不肯,只好让他去。 |
10_08 | 我看见他戴着黑布小帽,穿着黑布大马褂,深青布棉袍, |
10_09 | 蹒跚地走到铁道边,慢慢探身下去,尚不大难。 |
10_10 | 可是他穿过铁道,要爬上那边月台,就不容易了。 |
10_11 | 他用两手攀着上面,两脚再向上缩; |
10_12 | 他肥胖的身子向左微倾,显出努力的样子。 |
10_13 | 这时我看见他的背影,我的泪很快地流下来了。 |
10_14 | 我赶紧拭干了泪,怕他看见,也怕别人看见。 |
10_15 | 我再向外看时,他已抱了朱红的橘子望回走了。 |
10_16 | 过铁道时,他先将橘子散放在地上,自己慢慢爬下,再抱起橘子走。 |
10_17 | 到这边时,我赶紧去搀他。他和我走到车上,将橘子一股脑儿放在我的皮大衣上。 |
10_18 | 于是扑扑衣上的泥土,心里很轻松似的, |
10_19 | 过一会说,“我走了;到那边来信!”我望着他走出去。 |
10_20 | 他走了几步,回过头看见我,说,“进去吧,里边没人。” |
10_21 | 等他的背影混入来来往往的人里,再找不着了, |
4.8 result返回值说明
状态码 | 示例值 | 描述 |
---|---|---|
code | 40000 | 详情请参照【定制服务错误码】 |
message | 操作成功 | 错误码描述 |
data | [{"id":79,"txtId":"10_02","txt":"我说道,“爸爸,你走吧。”","groupId":2,"createTime":"2020-12-07T22:14:20.000+00:00"}] | 训练的文本数据 |
5.开始训练模型
5.1. 接口地址 :
https://aiapi.jd.com/jdai/tts_customize_start_train
5.2. 请求方式:
get
5.3. 请求参数
(1)query请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
appkey | string | 是 | 80d2b762ecb86593f9668526920f46c | 您的appkey,可在买家中心控制台中获 |
timestamp | long | 是 | 1541491668060 | 请求的时间戳,精确到毫秒,timestamp有效期5分钟 |
sign | string | 是 | 2e148773a0337a8f2200ba90d445f083 | 签名,根据规则MD5(sectetkey,timestamp) |
(2)head请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
Authorization | string | 是 | Bearer eyJhbGciOiJIUzUxMiJ9XXXX | 用户登陆后获取的token,【Bearer 】这个字段要保留,Bearer后有一个空格 |
5.4、请求代码示例
curl -H "Authorization:Bearer eyJhbGciOiJIUzUxMiJ9XXXX" https://aiapi.jd.com/jdai/tts_customize_start_train?appkey=80d2b762ecb86593f9668526920f46c×tamp=timestamp&sign=2e148773a0337a8f2200ba90d445f083
5.6 成功返回值示例
{
"code":"10000",
"charge":true,
"remainTimes":4984,
"remainSeconds":32768246,
"msg":"查询成功,扣费",
"result": {
"code":40000,
"msg":"操作成功",
"data":null
}
}
5.7 result返回值说明
状态码 | 示例值 | 描述 |
---|---|---|
code | 40000 | 详情请参照【定制服务错误码】 |
message | 操作成功 | 错误码描述 |
data | null |
6.停止训练模型
6.1. 接口地址 :
https://aiapi.jd.com/jdai/tts_customize_cancel_train
6.2. 请求方式:
get
6.3. 请求参数
(1)query请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
appkey | string | 是 | 80d2b762ecb86593f9668526920f46c | 您的appkey,可在买家中心控制台中获 |
timestamp | long | 是 | 1541491668060 | 请求的时间戳,精确到毫秒,timestamp有效期5分钟 |
sign | string | 是 | 2e148773a0337a8f2200ba90d445f083 | 签名,根据规则MD5(sectetkey,timestamp) |
(2)head请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
Authorization | string | 是 | 用户登陆后获取的token,【Bearer 】这个字段要保留,Bearer后有一个空格 | 用户登陆后获取的token |
6.4、请求代码示例
curl -H "Authorization:Bearer eyJhbGciOiJIUzUxMiJ9XXXX" https://aiapi.jd.com/jdai/tts_customize_cancel_train?appkey=80d2b762ecb86593f9668526920f46c×tamp=timestamp&sign=2e148773a0337a8f2200ba90d445f083
6.5 成功返回值示例
{
"code":"10000",
"charge":true,
"remainTimes":4984,
"remainSeconds":32768246,
"msg":"查询成功,扣费",
"result": {
"code":40000,
"msg":"操作成功",
"data":null
}
}
6.7 result返回值说明
状态码 | 示例值 | 描述 |
---|---|---|
code | 40000 | 详情请参照【定制服务错误码】 |
message | 操作成功 | 错误码描述 |
data | null |
7.上传文件
7.1. 接口地址 :
https://aiapi.jd.com/jdai/tts_customize_upload_file?txtID=xxxx
7.2. 请求方式:
post
7.3. 数据格式:
application/octet-stream
7.4. 请求参数
(1)query请求参数
公共请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
appkey | string | 是 | 80d2b762ecb86593f9668526920f46c | 您的appkey,可在买家中心控制台中获 |
timestamp | long | 是 | 1541491668060 | 请求的时间戳,精确到毫秒,timestamp有效期5分钟 |
sign | string | 是 | 2e148773a0337a8f2200ba90d445f083 | 签名,根据规则MD5(sectetkey,timestamp) |
业务参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
txtID | string | 是 | 1 | 文本ID, 请参照4.7服务器返回文本的文本ID, 必须使用服务器返回的txtID赋值, 不能改动 |
(2)head请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
Authorization | string | 是 | Bearer eyJhbGciOiJIUzUxMiJ9XXXX | 用户登陆后获取的token,【Bearer 】这个字段要保留,Bearer后有一个空格 |
(3)body请求参数
名称 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|
file | string | 是 | xxxx.pcm | 用户PCM数据 |
txtID | string | 是 | 1 | 文本ID |
7.5、请求代码示例
curl -v --data-binary @100.pcm -H "Expect: " -H 'content-type: application/octet-stream' -H "Authorization:Bearer eyJhbGciOiJIUzUxMiJ9XXXX" https://aiapi.jd.com/jdai/ttscustomize/audiomgr/audio/uploadAudioFile?appkey=80d2b762ecb86593f9668526920f46c×tamp=timestamp&sign=2e148773a0337a8f2200ba90d445f083&txtID=100
#### 7.6 成功返回值示例
{ "code":"10000", "charge":true, "remainTimes":4984, "remainSeconds":32768246, "msg":"查询成功,扣费", "result": { "code":40000, "msg":"操作成功", "data":"1" } }
#### 7.7 result返回值说明
<table>
<tr>
<th>状态码</th>
<th>示例值</th>
<th>描述</th>
</tr>
<tr>
<td> code </td>
<td> 40000 </td>
<td>详情请参照【定制服务错误码】</td>
</tr>
<tr>
<td> message </td>
<td>操作成功</td>
<td>错误码描述</td>
</tr>
<tr>
<td> data </td>
<td>1</td>
<td>上传的文本ID</td>
</tr>
</table>
### 8.关键信息跟踪
#### 8.1. 接口地址 :
https://aiapi.jd.com/jdai/tts_customize_log
#### 8.2. 请求方式:
post
#### 8.3. 数据格式:
json
#### 8.4. 请求参数
#### (1)query请求参数
公共请求参数
<table>
<tr>
<th>名称</th>
<th>类型</th>
<th>必填</th>
<th>示例值</th>
<th>描述</th>
</tr>
<tr>
<td>appkey</td>
<td>string</td>
<td>是</td>
<td>80d2b762ecb86593f9668526920f46c</td>
<td>您的appkey,可在买家中心控制台中获</td>
</tr>
<tr>
<td>timestamp</td>
<td>long</td>
<td>是</td>
<td>1541491668060</td>
<td>请求的时间戳,精确到毫秒,timestamp有效期5分钟</td>
</tr>
<tr>
<td>sign</td>
<td>string</td>
<td>是</td>
<td>2e148773a0337a8f2200ba90d445f083</td>
<td>签名,根据规则MD5(sectetkey,timestamp)</td>
</tr>
</table>
#### (2)head请求参数
公共请求参数
<table>
<tr>
<th>名称</th>
<th>类型</th>
<th>必填</th>
<th>示例值</th>
<th>描述</th>
</tr>
<tr>
<td> Authorization </td>
<td>string</td>
<td>是</td>
<td>Bearer eyJhbGciOiJIUzUxMiJ9XXXX</td>
<td>用户登陆后获取的token,【Bearer 】这个字段要保留,Bearer后有一个空格</td>
</tr>
</table>
#### (2)body请求参数
公共请求参数
<table>
<tr>
<th>名称</th>
<th>类型</th>
<th>必填</th>
<th>示例值</th>
<th>描述</th>
</tr>
<tr>
<td> name </td>
<td>string</td>
<td>是</td>
<td>JDAI_TTS</td>
<td>用户名</td>
</tr>
<tr>
<td> devinfo </td>
<td>string</td>
<td>是</td>
<td>小米mix2s</td>
<td>设备名</td>
</tr>
<tr>
<td> time </td>
<td>string</td>
<td>是</td>
<td>2020-11-30 14:20:38</td>
<td>时间</td>
</tr>
<tr>
<td> log </td>
<td>string</td>
<td>是</td>
<td>tts->delay->600ms</td>
<td>关键信息</td>
</tr>
</table>
#### 8.5、请求代码示例
Curl -i -X POST -H "Authorization:Bearer eyJhbGciOiJIUzUxMiJ9XXXX" https://aiapi.jd.com/jdai/tts_customize_log -d '{"name":"JDAI_TTS","devinfo":"小米mix2s", "time":"2020-11-30 14:20:38","log":"tts->delay->600ms"}' --header "Content-Type: application/json"
#### 8.6 成功返回值示例
{ "code":"10000", "charge":true, "remainTimes":4984, "remainSeconds":32768246, "msg":"查询成功,扣费", "result": { "code":40000, "msg":"操作成功", "data":null } }
#### 8.7 result返回值说明
<table>
<tr>
<th>状态码</th>
<th>示例值</th>
<th>描述</th>
</tr>
<tr>
<td> code </td>
<td> 40000 </td>
<td>详情请参照【定制服务错误码】</td>
</tr>
<tr>
<td> message </td>
<td>操作成功</td>
<td>错误码描述</td>
</tr>
<tr>
<td> data </td>
<td>null</td>
<td></td>
</tr>
</table>
### 9.训练状态
#### 9.1. 接口地址 :
https://aiapi.jd.com/jdai/tts_customize_train_status
#### 9.2. 请求方式:
get
#### 9.4. 请求参数
#### (1)query请求参数
公共请求参数
<table>
<tr>
<th>名称</th>
<th>类型</th>
<th>必填</th>
<th>示例值</th>
<th>描述</th>
</tr>
<tr>
<td>appkey</td>
<td>string</td>
<td>是</td>
<td>80d2b762ecb86593f9668526920f46c</td>
<td>您的appkey,可在买家中心控制台中获</td>
</tr>
<tr>
<td>timestamp</td>
<td>long</td>
<td>是</td>
<td>1541491668060</td>
<td>请求的时间戳,精确到毫秒,timestamp有效期5分钟</td>
</tr>
<tr>
<td>sign</td>
<td>string</td>
<td>是</td>
<td>2e148773a0337a8f2200ba90d445f083</td>
<td>签名,根据规则MD5(sectetkey,timestamp)</td>
</tr>
</table>
#### (2)head请求参数
公共请求参数
<table>
<tr>
<th>名称</th>
<th>类型</th>
<th>必填</th>
<th>示例值</th>
<th>描述</th>
</tr>
<tr>
<td> Authorization </td>
<td>string</td>
<td>是</td>
<td>用户登陆后获取的token,【Bearer 】这个字段要保留,Bearer后有一个空格</td>
<td>用户登陆后获取的token</td>
</tr>
</table>
#### 9.5、请求代码示例
curl -H "Authorization:Bearer eyJhbGciOiJIUzUxMiJ9XXXX" https://aiapi.jd.com/jdai/tts_customize_train_status?appkey=80d2b762ecb86593f9668526920f46c×tamp=timestamp&sign=2e148773a0337a8f2200ba90d445f083"
#### 9.6 成功返回值示例
{ "code":"10000", "charge":true, "remainTimes":4984, "remainSeconds":32768246, "msg":"查询成功,扣费", "result": { "code":40000, "msg":"操作成功", "data":{ "id":1, "userName":"JDAI_TTS-4", "modelId":470, "projectId":2600, "modelUrl":"", "ttsUrl":"", "status":2, "createTime":"2020-12-17T01:38:52.000+00:00", "updateTime":"2020-12-17T01:39:02.000+00:00" } }
}
#### 9.7 result返回值说明
<table>
<tr>
<th>状态码</th>
<th>示例值/属性</th>
<th>描述</th>
</tr>
<tr>
<td> code </td>
<td> 40000 </td>
<td>详情请参照【定制服务错误码】</td>
</tr>
<tr>
<td> message </td>
<td>操作成功</td>
<td>错误码描述</td>
</tr>
<tr >
<td rowspan="9">data</td>
<td> userName </td>
<td>用户名</td>
</tr>
<tr>
<td> modelId </td>
<td>模型ID</td>
</tr>
<tr>
<td> projectId </td>
<td>训练项目ID</td>
</tr>
<tr>
<td> modelUrl </td>
<td>模型存储URL</td>
</tr>
<tr>
<td> ttsUrl </td>
<td>模型加载URL</td>
</tr>
<tr>
<td> status </td>
<td>模型训练状态</td>
</tr>
<tr>
<td> createTime </td>
<td>任务开始时间</td>
</tr>
<tr>
<td> createTime </td>
<td>任务最后更新时间</td>
</tr>
</table>
#### 9.9 训练状态说明
<table>
<tr>
<th>状态码</th>
<th>描述</th>
</tr>
<tr>
<td> -1 </td>
<td>未运行</td>
</tr>
<tr>
<td> 0 </td>
<td>运行等待中</td>
</tr>
<tr>
<td> 1 </td>
<td>开始运行</td>
</tr>
<tr>
<td> 2 </td>
<td>运行中</td>
</tr>
<tr>
<td> 3 </td>
<td>运行成功</td>
</tr>
<tr>
<td> 4 </td>
<td>模型运行失败</td>
</tr>
<tr>
<td> 5 </td>
<td>删除项目中</td>
</tr>
<tr>
<td> 6 </td>
<td>已删除</td>
</tr>
<tr>
<td> 7 </td>
<td>训练已取消</td>
</tr>
<tr>
<td> 100 </td>
<td>训练取消失败</td>
</tr>
<tr>
<td> 101 </td>
<td>TTSService加载模型失败</td>
</tr>
<tr>
<td> 102 </td>
<td>TTSService未注册</td>
</tr>
</table>
## 三、返回说明
### 1、返回参数
#### (1)公共返回参数
<table>
<tr>
<th>名称</th>
<th>类型</th>
<th>示例值</th>
<th>描述</th>
</tr>
<tr>
<td>code</td>
<td>string</td>
<td>1000</td>
<td>参见下方平台服务错误码</td>
</tr>
<tr>
<td>charge</td>
<td>boolean</td>
<td>false 或 true</td>
<td>false:不扣费, true:扣费</td>
</tr>
<tr>
<td>remain</td>
<td>long</td>
<td>1305</td>
<td>按天计算剩余调用次数</td>
</tr>
</tr>
<tr>
<td>msg</td>
<td>string</td>
<td>查询成功</td>
<td>参见下方平台服务错误码数</td>
</tr>
</tr>
<tr>
<td>result</td>
<td>object</td>
<td>{...}</td>
<td>查询结果</td>
</tr>
</table>
#### (2)业务返回参数
<table>
<tr>
<th>名称</th>
<th>类型</th>
<th>示例值</th>
<th>描述</th>
</tr>
<tr>
<td>status</td>
<td>int</td>
<td>0</td>
<td>参照合成服务、定制服务错误码</td>
</tr>
<tr>
<td>message</td>
<td>string</td>
<td>ok</td>
<td>参照合成服务、定制服务错误信息</td>
</tr>
<tr>
<td>request_id</td>
<td>string</td>
<td>65845428-de85-11e8-9517-040973d59a1e</td>
<td>便于双方定位问题(与请求头部的request-id一致)</td>
</tr>
<tr>
<td>index</td>
<td>int</td>
<td>-3</td>
<td>分段序号,从1开始,负值表示最后一包(非流式直接返回-1)</td>
</tr>
<tr>
<td>audio</td>
<td>string</td>
<td>Uv4I/mD+zf4…</td>
<td>音频数据(base64编码)</td>
</tr>
</table>
### 2、合成服务返回示例
{ "code":"10000", "charge":true, "remainTimes":4984, "remainSeconds":32768246, "msg":"查询成功,扣费", "result": { "status": 0, "message": "ok", "request_id": "65845428-de85-11e8-9517-040973d59a1e", "index": -3, "audio": "Uv4I/mD+zf4…" } }
### 3、定制服务返回示例
{
"code":"10000",
"charge":true,
"remainTimes":4984,
"remainSeconds":32768246,
"msg":"查询成功,扣费",
"result": {
"code": 0,
"msg": "ok",
"data": "65845428-de85-11e8-9517-040973d59a1e" or {"token" : "XXXXXXXXX"}
}
}
```
四、错误码
1.平台服务错误码
错误码(code) | 说明(message) |
---|---|
10000 | 操作查询成功 |
10001 | 错误的请求appkey |
10003 | 不存在相应的数据信息 |
10004 | URL上appkey参数不能为空 |
10010 | 接口需要付费,请充值 |
10020 | 系统繁忙,请稍后再试 |
10030 | 调用网关失败,请与NeuHub联系 |
10040 | 超过每天限量,请明天继续 |
10041 | URL上timestamp参数不能为空 |
10042 | URL上sign参数不能为空 |
10043 | 超过QPS限额,请降低调用频率或与NeuHub联系 |
10044 | 集群QPS超限额,请与NeuHub联系 |
10045 | timestamp参数无效,请检查timestamp距离当前时间是否超过5分钟 |
10046 | timestamp参数格式错误 |
10047 | 请求签名sign无效,请检查签名信息 |
10048 | 无接口权限,请下单购买 |
10049 | 超过每天最大调用量 |
10050 | 用户已注册 |
10049 | 用户已注册 |
10050 | 用户已被禁用 |
10060 | 发布方设置调用权限,请联系发布方 |
10090 | 文件大小超限,请上传小于5M的文件 |
2.定制服务错误码
错误码(status) | 说明(message) |
---|---|
40000 | 操作成功 |
40001 | 操作失败 |
40002 | 参数检验失败 |
40003 | 暂未登录或token已经过期 |
40004 | 没有相关权限 |
40005 | 注册码已发送 |
40006 | 注册验证码超时 |
40007 | 用户已注册 |
3.合成服务错误码
错误码(status) | 说明(message) |
---|---|
0 | 正常 |
11001 | 用户相关,参数错误 |
30201 | 服务器相关, 服务器未完成初始化 |
30202 | 服务器相关, 服务器忙 |
30203 | 用户相关,文本过短(没有文本时返回) |
30204 | 用户相关,文本过长(超过1024字节) |
30205 | 用户相关,seq_id不正确,如值为1但是当前已有相同session; 或值不为1但当前没有相同session |
30206 | TTS引擎相关,TTS引擎读取错误 |
30207 | base64编码失败 |
30252 | 引擎错误,出现内部错误 |
30253 | 引擎错误,读取缓存超时 |
30255 | 引擎错误,SSML 参数错误,如指定了错误的发音人 |
30256 | 引擎错误,SSML 嵌套错误,如 say-as 下嵌套了 background |
30257 | 引擎错误,URL 下载失败 |
30258 | 引擎错误,URL 下载文件格式不正确(格式不支持) |