帮助与文档 > 产品文档 > 智能语音服务 > API文档 > 语音合成模型定制
语音合成模型定制

个性化音色定制

说明

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

温馨提示:

  • 本文档主要针对开发人员,接入测试前需要获取应用ID和应用密钥;如果您还没有,请按照 新手指南 获取。
  • 平台向每个账户赠送50元的体验金,供用户集成前测试所用。

接口说明

个性化语音定制服务,基于网易有道的语音识别技术,通过上传少量录音,训练语音引擎定制自己声音模型,赋予产品声音形象,可在读小说、播音主持、讲故事、客服服务等场景应用。
服务主要分模型定制和模型调用两部分。

协议须知

调用方在集成个性化语音定制服务API时,请遵循以下规则。

规则描述
传输方式HTTPS
请求方式GET或POST
字符编码统一使用UTF-8 编码
请求格式表单
响应格式JSON

接口调用参数

个性化语音定制调用地址:

https://openapi.youdao.com

音频格式

格式支持:wav(不压缩,pcm编码,采样率:推荐16k ,编码:16bit位深的单声道)

格式代码
wavwav

模型定制阶段

创建语音包接口

  • 接口uri:/customVoice/packet/create
  • 请求方式:POST
  • 接口说明:

创建语音包接口,通过语音包收集录音,定制个性化音色模型

接口参数:

参数名称类型含义是否必填示例
appKeyString应用IDTrue可在 应用管理 查看
curtimeString时间戳(秒)True1666600000
saltString随机字符串True
signString签名信息:sha256(appKey + salt + curtime +密钥)True
signTypeString签名类型Truev4
nameString语音包名称 (不超过50字符)True语音包
genderString性别Truemale或female
trainingTypeString训练类型Truetts或vc(详见语音合成类型)
descriptionString语音包描述 (不超过250字符)False这是语音包描述
qualityString定制质量(1为低质量2为高质量)False1或2(默认为1)
  • 响应结果

-

{
"errorCode":"0",//错误码
"msg":"success",//信息说明
"result":{
    "packetId":"P_24A59791123C49A9B498DCD1972803B3"//返回的语音包ID
  }
}

环境音检测

  • 接口uri:/customVoice/packet/measureNoise
  • 请求方式:POST
  • 接口说明:

语音包录音前可以进行环境音检测

  • 接口参数:
参数名称类型含义是否必填示例
appKeyString应用IDTrue可在 应用管理 查看
curtimeString时间戳(秒)True1666600000
saltString随机字符串True
signString签名信息:sha256(appKey + salt + curtime +密钥)True
signTypeString签名类型Truev4
fileMultipartFile环境录音TrueMultipartFile,音频格式:单声道、16KHz 16bit PCM编码的WAV格式。时长3-5秒
packetIdString语音包idTrueP_24A59791123C49A9B498DCD1972803B3
  • 响应结果
{
    "errorCode":"0",//错误码
    "msg":"success",//信息说明
    "result":{
        "passTest":true, //是否通过检测
        "decibel": 30  //分贝
            }
}

语音评测接口

  • 接口uri:/customVoice/packet/evaluateRecording
  • 请求方式:POST
  • 接口说明:

录制语音,通过评测的音频会赋予recordId并则录入语音包

  • 接口参数:
参数名称类型含义是否必填示例
appKeyString应用IDTrue可在 应用管理 查看
curtimeString时间戳(秒)True1666600000
saltString随机字符串True
signString签名信息:sha256(appKey + salt + curtime +密钥)True
signTypeString签名类型Truev4
textString评测文本True每句话支持10-30个字符,不超过20句 ,高定文案可参考如下案例。
fileMultipartFile录制评测音频TrueMultipartFile,音频格式:单声道、16KHz 16bit PCM编码的WAV格式。时长2-15秒
packetIdString语音包idTrueP_24A59791123C49A9B498DCD1972803B3
orderString语音包中语音序号True取值1-20(有序+连续),重复传递则覆盖原有音频

例子

  • 高定(quality=2)20句文案如下:

小鸭子让它坐在自己的背上,顺利上了岸
小鸭子正在水里捉鱼,忽然听见小公鸡喊救命
乌鸦把小石子放进瓶子里,水渐渐升高
瓶子里水不多,瓶口又小,乌鸦喝不着水
一只乌鸦口渴了,到处找水喝
爱心的深层含义就是保护所有的动植物
荷叶像个碧绿的大圆盘。荷花在它之间冒出来
要是碰上阴雨天,大树也会来帮忙
北极星是盏指路灯,它永远高挂在北方
中午它在南边,地上的树影指向北方
桂树还没有开花,但风中已经飘来甜丝丝的香气
老师穿着长袍,头发胡子全白了,看上去很有学问
杭州昨日正式入夏,较常年略早,昨天阳光早早上岗
安静的连一根针掉下来的声音都听得见
我低着头走出书店,脚站得有些麻木,我却浑身轻松
它小巧玲珑,一双透亮灵活的眼睛下面,长着一张又尖又长的嘴
当蒲公英盛开的时候,这片草地就变成金色的了
那鲜艳的民族服装,把学校打扮得更加绚丽多彩
人们佩服孔子和老子的学问,也敬重他们的品行
尽管它这样机灵,还是难以逃脱翠鸟锐利的眼睛

  • 响应结果
{
"errorCode":"0",//错误码
"msg":"success",//信息说明
"result":{
    "recordingId":"V_7FFDF89DC01F40CFA8A478D7E3231WV9", //音频合格,录入语音包时有返回值
    "score": "99.03", //评测得分
    "guidance": , // 评测建议
    "correctMessage": [], // 错误发音句中index
    "packetId": "P_3F9AB85F37CE497B9A1483848ACCF56C" //语音包ID
         }
}

启动训练

  • 接口uri:/customVoice/model/launch
  • 请求方式:POST
  • 接口说明:

启动训练,语音包中的录音数量达标后,可以启动训练定制语音合成模型

  • 接口参数:
参数名称类型含义是否必填示例
appKeyString应用IDTrue可在 应用管理 查看
curtimeString时间戳(秒)True1666600000
saltString随机字符串TrueUUID(唯一识别通用码)
signString签名信息:sha256(appKey + salt + curtime +密钥)Truesha256(appKey + salt + curtime +密钥)
signTypeString签名类型Truev4
packetIdString语音包idTrueP_24A59791123C49A9B498DCD1972803B3
launchTypeString启动训练类型。注:语音包训练类型需要支持Falsetts或者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":"" // 失败原因 启动失败返回
          }
                     ]
            }
}

查询训练状态

  • 接口uri:/customVoice/model/checkStatus
  • 请求方式:GET
  • 接口说明:
    查询当前训练任务状态
  • 接口参数:
参数名称类型含义是否必填示例
appKeyString应用IDTrue可在 应用管理 查看
curtimeString时间戳(秒)True1666600000
saltString随机字符串True
signString签名信息:sha256(appKey + salt + curtime +密钥)True
signTypeString签名类型Truev4
packetIdString语音包idTrueP_24A59791123C49A9B498DCD1972803B3
taskIdString训练任务idTrueT_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:语音包创建
            }
}

删除语音包

  • 接口uri:/customVoice/packet/delete
  • 请求方式:POST
  • 接口说明:
    删除指定语音包,同时会删除包含录音及训练模型
  • 接口参数:
参数名称类型含义是否必填示例
appKeyString应用IDTrue可在 应用管理 查看
curtimeString时间戳(秒)True1666600000
saltString随机字符串True
signString签名信息:sha256(appKey + salt + curtime +密钥)True
signTypeString签名类型Truev4
packetIdString语音包idTrueP_24A59791123C49A9B498DCD1972803B3
  • 响应结果
{
"errorCode":"0",//错误码
"msg":"success",//信息说明
"result": null
}

查询语音包详情

  • 接口uri:/customVoice/packet/detail
  • 请求方式:GET
  • 接口说明:
    查询所有创建的语音包基本信息
  • 接口参数:
参数名称类型含义是否必填示例
appKeyString应用IDTrue可在 应用管理 查看
curtimeString时间戳(秒)True1666600000
saltString随机字符串True
signString签名信息:sha256(appKey + salt + curtime +密钥)True
signTypeString签名类型Truev4
packetIdString语音包idTrueP_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和应用密钥等信息
109batchLog格式不正确
110无相关服务的有效实例,应用没有绑定服务。注:某些服务的结果发音需要tts,需要在控制台创建语音合成绑定应用后方能使用。
111开发者账号无效
112请求服务无效
113q不能为空
114不支持的图片传输方式
115语音包异常:不存在或者已删除或者不属于当前devId
116referenceSynthesisId已存在
201解密失败,可能为DES,BASE64,URLDecode的错误
202签名检验失败
203访问IP地址不在可访问IP列表
205请求的接口与应用的平台类型不一致,确保接入方式(Android SDK、IOS SDK、API)与创建的应用平台类型一致。
206因为时间戳无效导致签名校验失败
207重放请求
303服务端的其它异常
401账户已经欠费停
402offlinesdk不可用
403无权限
404资源不存在
405auth服务不可用
411访问频率受限,请稍后访问
412超过最大翻译字符数
VC001不支持训练类型
VC002不支持性别类型
VC003无有效ticket
VC004语音包创建失败
VC005语音包id不存在
VC006环境音检测失败
VC007语音包重训练次数耗尽
VC008当前存在训练中的任务
VC009启动训练失败
VC010训练任务id不存在
VC011删除语音包失败
VC012获取语音包列表失败
VC013获取训练状态失败
VC014语音评测失败
VC015开发者id为空
VC016userId命名空间为空
VC022回调地址错误
VC023未知合成任务
VC024合成URL错误
VC025获取合成结果失败
VC026文件大小超限
VC027description超出限制
VC028name字段超出限制
VC029order字段取值错误
VC030text字段超限
VC031当日创建语音包到达上限
VC032音频时长错误
VC033userId和packetId不匹配
VC034语音包录制文本重复
VC036获取语音包详情失败
VC041音量过高
VC042音频格式错误
VC043音频次序错误
VC044音频质量过低
VC045创建任务数超出限制(每天最多创建1000个训练任务)
VC046音频数量错误
VC047不支持的启动类型