Hi,您好,欢迎使用有道智云个性化语音定制接口服务。
本文档主要针对需要集成HTTP API的技术开发工程师,详细描述个性化语音定制相关的技术内容。
如果您有与我们商务合作的需求,可以通过以下方式联系我们:
商务邮箱: AIcloud_Business@corp.youdao.com
如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:
客服QQ:1906538062
智云翻译技术交流QQ 1群: 652880659
智云翻译技术交流QQ 2群: 669384425
智云翻译技术交流QQ 3群: 807539209
智云翻译技术交流QQ 4群: 936752411
联系邮箱: zhiyun@corp.youdao.com
温馨提示:
个性化语音定制服务,基于网易有道的语音识别技术,通过上传少量录音,训练语音引擎定制自己声音模型,赋予产品声音形象,可在读小说、播音主持、讲故事、客服服务等场景应用。
服务主要分模型定制和模型调用两部分。
调用方在集成个性化语音定制服务API时,请遵循以下规则。
规则 | 描述 |
---|---|
传输方式 | HTTPS |
请求方式 | GET或POST |
字符编码 | 统一使用UTF-8 编码 |
请求格式 | 表单 |
响应格式 | JSON |
个性化语音定制调用地址:
https://openapi.youdao.com
格式支持:wav(不压缩,pcm编码,采样率:推荐16k ,编码:16bit位深的单声道)
格式 | 代码 |
---|---|
wav | wav |
创建语音包接口,通过语音包收集录音,定制个性化音色模型
接口参数:
参数名称 | 类型 | 含义 | 是否必填 | 示例 |
---|---|---|---|---|
appKey | String | 应用ID | True | 可在 应用管理 查看 |
curtime | String | 时间戳(秒) | True | 1666600000 |
salt | String | 随机字符串 | True | |
sign | String | 签名信息:sha256(appKey + salt + curtime +密钥) | True | |
signType | String | 签名类型 | True | v4 |
name | String | 语音包名称 (不超过50字符) | True | 语音包 |
gender | String | 性别 | True | male或female |
trainingType | String | 训练类型 | True | tts或vc(详见语音合成类型) |
description | String | 语音包描述 (不超过250字符) | False | 这是语音包描述 |
quality | String | 定制质量(1为低质量2为高质量) | False | 1或2(默认为1) |
-
{
"errorCode":"0",//错误码
"msg":"success",//信息说明
"result":{
"packetId":"P_24A59791123C49A9B498DCD1972803B3"//返回的语音包ID
}
}
语音包录音前可以进行环境音检测
参数名称 | 类型 | 含义 | 是否必填 | 示例 |
---|---|---|---|---|
appKey | String | 应用ID | True | 可在 应用管理 查看 |
curtime | String | 时间戳(秒) | True | 1666600000 |
salt | String | 随机字符串 | True | |
sign | String | 签名信息:sha256(appKey + salt + curtime +密钥) | True | |
signType | String | 签名类型 | True | v4 |
file | MultipartFile | 环境录音 | True | MultipartFile,音频格式:单声道、16KHz 16bit PCM编码的WAV格式。时长3-5秒 |
packetId | String | 语音包id | True | P_24A59791123C49A9B498DCD1972803B3 |
{
"errorCode":"0",//错误码
"msg":"success",//信息说明
"result":{
"passTest":true, //是否通过检测
"decibel": 30 //分贝
}
}
录制语音,通过评测的音频会赋予recordId并则录入语音包
参数名称 | 类型 | 含义 | 是否必填 | 示例 |
---|---|---|---|---|
appKey | String | 应用ID | True | 可在 应用管理 查看 |
curtime | String | 时间戳(秒) | True | 1666600000 |
salt | String | 随机字符串 | True | |
sign | String | 签名信息:sha256(appKey + salt + curtime +密钥) | True | |
signType | String | 签名类型 | True | v4 |
text | String | 评测文本 | True | 每句话支持10-30个字符,不超过20句 ,高定文案可参考如下案例。 |
file | MultipartFile | 录制评测音频 | True | MultipartFile,音频格式:单声道、16KHz 16bit PCM编码的WAV格式。时长2-15秒 |
packetId | String | 语音包id | True | P_24A59791123C49A9B498DCD1972803B3 |
order | String | 语音包中语音序号 | True | 取值1-20(有序+连续),重复传递则覆盖原有音频 |
例子:
小鸭子让它坐在自己的背上,顺利上了岸
小鸭子正在水里捉鱼,忽然听见小公鸡喊救命
乌鸦把小石子放进瓶子里,水渐渐升高
瓶子里水不多,瓶口又小,乌鸦喝不着水
一只乌鸦口渴了,到处找水喝
爱心的深层含义就是保护所有的动植物
荷叶像个碧绿的大圆盘。荷花在它之间冒出来
要是碰上阴雨天,大树也会来帮忙
北极星是盏指路灯,它永远高挂在北方
中午它在南边,地上的树影指向北方
桂树还没有开花,但风中已经飘来甜丝丝的香气
老师穿着长袍,头发胡子全白了,看上去很有学问
杭州昨日正式入夏,较常年略早,昨天阳光早早上岗
安静的连一根针掉下来的声音都听得见
我低着头走出书店,脚站得有些麻木,我却浑身轻松
它小巧玲珑,一双透亮灵活的眼睛下面,长着一张又尖又长的嘴
当蒲公英盛开的时候,这片草地就变成金色的了
那鲜艳的民族服装,把学校打扮得更加绚丽多彩
人们佩服孔子和老子的学问,也敬重他们的品行
尽管它这样机灵,还是难以逃脱翠鸟锐利的眼睛
{
"errorCode":"0",//错误码
"msg":"success",//信息说明
"result":{
"recordingId":"V_7FFDF89DC01F40CFA8A478D7E3231WV9", //音频合格,录入语音包时有返回值
"score": "99.03", //评测得分
"guidance": , // 评测建议
"correctMessage": [], // 错误发音句中index
"packetId": "P_3F9AB85F37CE497B9A1483848ACCF56C" //语音包ID
}
}
启动训练,语音包中的录音数量达标后,可以启动训练定制语音合成模型
参数名称 | 类型 | 含义 | 是否必填 | 示例 |
---|---|---|---|---|
appKey | String | 应用ID | True | 可在 应用管理 查看 |
curtime | String | 时间戳(秒) | True | 1666600000 |
salt | String | 随机字符串 | True | UUID(唯一识别通用码) |
sign | String | 签名信息:sha256(appKey + salt + curtime +密钥) | True | sha256(appKey + salt + curtime +密钥) |
signType | String | 签名类型 | True | v4 |
packetId | String | 语音包id | True | P_24A59791123C49A9B498DCD1972803B3 |
launchType | String | 启动训练类型。注:语音包训练类型需要支持 | False | tts或者vc (如果不填此参数,按语音包类型启动训练) |
{
"errorCode":"0",//错误码
"msg":"success",//信息说明
"result": {
"estimateSeconds":10 //剩余时间 秒
"modelList":[
{
"modelId":"M_A0852354A2ED4BB19DE759F1B80C6E37", //模型id 启动成功返回
"createTime":"2023-04-23 13:59:43", // 创建时间 启动成功返回
"taskId":"T_6381E68890C843488FD9569217EFA36A", // 训练任务id 启动成功返回
"modelType":"vc", //模型类型
"modelStatus":"started", //模型状态("started":训练启动,"failed":启动失败)
"failedReason":"" // 失败原因 启动失败返回
}
]
}
}
参数名称 | 类型 | 含义 | 是否必填 | 示例 |
---|---|---|---|---|
appKey | String | 应用ID | True | 可在 应用管理 查看 |
curtime | String | 时间戳(秒) | True | 1666600000 |
salt | String | 随机字符串 | True | |
sign | String | 签名信息:sha256(appKey + salt + curtime +密钥) | True | |
signType | String | 签名类型 | True | v4 |
packetId | String | 语音包id | True | P_24A59791123C49A9B498DCD1972803B3 |
taskId | String | 训练任务id | True | T_D2560E2DCF6E435EA7BEDD88AC88B9CC |
{
"errorCode":"0",//错误码
"msg":"success",//信息说明
"result": {
"taskId":"T_D2560E2DCF6E435EA7BEDD88AC88B9CC", // 训练任务id
"estimateSeconds":"10", //剩余时间 秒
"packetId":"P_24A59791123C49A9B498DCD1972803B3",//语音包id
"modelId":"M_A0852354A2ED4BB19DE759F1B80C6E37",//模型id
"status":"1" //训练状态 0:开始,1:完成,2:终止,3:失败,4:语音包创建
}
}
参数名称 | 类型 | 含义 | 是否必填 | 示例 |
---|---|---|---|---|
appKey | String | 应用ID | True | 可在 应用管理 查看 |
curtime | String | 时间戳(秒) | True | 1666600000 |
salt | String | 随机字符串 | True | |
sign | String | 签名信息:sha256(appKey + salt + curtime +密钥) | True | |
signType | String | 签名类型 | True | v4 |
packetId | String | 语音包id | True | P_24A59791123C49A9B498DCD1972803B3 |
{
"errorCode":"0",//错误码
"msg":"success",//信息说明
"result": null
}
参数名称 | 类型 | 含义 | 是否必填 | 示例 |
---|---|---|---|---|
appKey | String | 应用ID | True | 可在 应用管理 查看 |
curtime | String | 时间戳(秒) | True | 1666600000 |
salt | String | 随机字符串 | True | |
sign | String | 签名信息:sha256(appKey + salt + curtime +密钥) | True | |
signType | String | 签名类型 | True | v4 |
packetId | String | 语音包id | True | P_24A59791123C49A9B498DCD1972803B3 |
{
"errorCode":"0",//错误码
"msg":"success",//信息说明
"result": {
"name":"名称", // 语音包名称
"description":"描述", //语音包描述
"recordingCount":5, //包含录音数
"createTime":"2022-08-22 14:33:10", //语音包创建时间
"packetId":"", // 语音包id
"voiceList":[
{
"order":1, //录音序号
"audioUrl":"", //音频链接
"text":"", //评测文本
},
...
]
}
}
输出格式 | 文本大小或音频时长 | 支持语言 |
---|---|---|
wav | 噪音检测 3-5s 语音评测音频时长 2-15s 语音评测文本为10-30个字符 | 中文 |
状态ID | 状态描述 |
---|---|
0 | 训练任务启动 |
1 | 训练任务结束 |
2 | 训练任务已终止 |
3 | 训练任务失败 |
4 | 语音包创建阶段,训练任务未启动 |
错误码 | 含义 |
---|---|
101 | 缺少必填的参数,首先确保必填参数齐全,然后,确认参数书写是否正确。 |
102 | 不支持的语言类型 |
103 | 翻译文本过长 |
104 | 不支持的API类型 |
105 | 不支持的签名类型 |
106 | 不支持的响应类型 |
107 | 不支持的传输加密类型 |
108 | 应用ID无效,注册账号,登录后台创建应用和实例并完成绑定,可获得应用ID和应用密钥等信息 |
109 | batchLog格式不正确 |
110 | 无相关服务的有效实例,应用没有绑定服务。注:某些服务的结果发音需要tts,需要在控制台创建语音合成绑定应用后方能使用。 |
111 | 开发者账号无效 |
112 | 请求服务无效 |
113 | q不能为空 |
114 | 不支持的图片传输方式 |
115 | 语音包异常:不存在或者已删除或者不属于当前devId |
116 | referenceSynthesisId已存在 |
201 | 解密失败,可能为DES,BASE64,URLDecode的错误 |
202 | 签名检验失败 |
203 | 访问IP地址不在可访问IP列表 |
205 | 请求的接口与应用的平台类型不一致,确保接入方式(Android SDK、IOS SDK、API)与创建的应用平台类型一致。 |
206 | 因为时间戳无效导致签名校验失败 |
207 | 重放请求 |
303 | 服务端的其它异常 |
401 | 账户已经欠费停 |
402 | offlinesdk不可用 |
403 | 无权限 |
404 | 资源不存在 |
405 | auth服务不可用 |
411 | 访问频率受限,请稍后访问 |
412 | 超过最大翻译字符数 |
VC001 | 不支持训练类型 |
VC002 | 不支持性别类型 |
VC003 | 无有效ticket |
VC004 | 语音包创建失败 |
VC005 | 语音包id不存在 |
VC006 | 环境音检测失败 |
VC007 | 语音包重训练次数耗尽 |
VC008 | 当前存在训练中的任务 |
VC009 | 启动训练失败 |
VC010 | 训练任务id不存在 |
VC011 | 删除语音包失败 |
VC012 | 获取语音包列表失败 |
VC013 | 获取训练状态失败 |
VC014 | 语音评测失败 |
VC015 | 开发者id为空 |
VC016 | userId命名空间为空 |
VC022 | 回调地址错误 |
VC023 | 未知合成任务 |
VC024 | 合成URL错误 |
VC025 | 获取合成结果失败 |
VC026 | 文件大小超限 |
VC027 | description超出限制 |
VC028 | name字段超出限制 |
VC029 | order字段取值错误 |
VC030 | text字段超限 |
VC031 | 当日创建语音包到达上限 |
VC032 | 音频时长错误 |
VC033 | userId和packetId不匹配 |
VC034 | 语音包录制文本重复 |
VC036 | 获取语音包详情失败 |
VC041 | 音量过高 |
VC042 | 音频格式错误 |
VC043 | 音频次序错误 |
VC044 | 音频质量过低 |
VC045 | 创建任务数超出限制(每天最多创建1000个训练任务) |
VC046 | 音频数量错误 |
VC047 | 不支持的启动类型 |