大模型声音复刻
接口描述
百度大模型声音复刻是使用全新自研语音大模型算法打造的轻量级音色定制方案。用户只需录制10s的音频,即可极速复刻音色。支持自定义文本复刻与双流式语音合成,广泛应用于配音、数字人、情感陪伴、语音助手等场景。请点击链接进入大模型声音复刻体验专区。
产品优势
超低门槛:无需专业设备与场地,极大提升效率,降低使用门槛
精准还原:精准还原音色特点、说话风格、韵律起伏、声学环境
极速复刻:最低10秒即可完成高品质复刻,精准呈现音色细节,高效逼真
多种方言:支持河南话、上海话、四川话方言的复刻还原与生成
接口调用详情
- 接口列表
| 序号 | 接口名称 |
接口URL |
|---|---|---|
| 1 | 获取训练文本 | https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/text |
| 2 | 创建音色 | https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/create |
| 3 | 音色列表查询 | https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/list |
| 4 | 音色详情查询 | https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/detail |
| 5 | 删除音色 | https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/delete |
| 6 | 流式在线合成 | wss://aip.baidubce.com/ws/2.0/speech/publiccloudspeech/v1/voice/clone/tts |
| 7 | 非流式在线合成 | https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/tts |
音色创建
获取训练文本
接口描述
接口描述:通过此接口获取用于训练的文本,使用此接口则创建音色时需要上传与此文本内容对应的音频
接口名称:https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/text
请求方法:POST
输入参数
无
输出参数
| 属性 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| 错误状态 | status | int | |
| 错误信息 | message | string | |
| 数据 | data | object | 响应数据 |
data响应参数
| 属性 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| 文本ID | text_id | string | 唯一文本id(获取文本id后,文本id有效期为24小时,每个文本id创建音色后自动失效) |
| 文本内容 | text | string |
示例
1curl --silent --location --request POST 'https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/text?access_token=XXX'
创建音色
接口描述
接口描述:通过上传训练音频来创建音色,支持音频链接与音频内容两种音频上传方式
接口名称:https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/create
请求方法:POST
输入参数
属性 |
参数名称 | 类型 | 是否必填 |
说明 |
|---|---|---|---|---|
| 音色名称 | voice_name | string | 必填 | 音色名称,同一个用户下面,音色名称不能重复 |
| 音色描述 | voice_desc | string | 可选 | 音色说明 |
| 音频链接 | audio_url | string | 音频链接和音频内容二选一 | 两个参考同时传:以 audio_file 为准支持:wav、mp3、ogg、aac。音频大小 5M以内,5~20 秒内 |
| 音频内容 | audio_file | string | 音频链接和音频内容二选一 | 音频文件内容base64 支持上传方言进行复刻和迁移,范围包括河南话、上海话、四川话 |
| 音频文本ID | text_id | string | 选填 | 即文本ID,使用自定义文本复刻则无需填写 |
输出参数
| 属性 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| 错误状态 | status | int | 0 创建成功,其他为异常 |
| 错误信息 | message | string | |
| 数据 | data | object | 对应发音人ID |
data响应参数
| 属性 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| 音色 ID | voice_id | int | 唯一id |
示例
- 通过音频URL创建音色
1curl --silent --location --request POST 'https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/create?access_token=XXXX' \
2--header 'Content-Type: application/json' \
3--data '{
4 "voice_name": "example",
5 "voice_desc": "温柔细腻的音色",
6 "audio_url": "https://bj.bcebos.com/example.wav",
7 "text_id": "text_5692181d-8825-40ec-b80f-87b79e3a9345"
8}'
- 通过音频-base64 编码创建音色
1curl --silent --location --request POST 'https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/create?access_token=XXX' \
2--header 'Content-Type: application/json' \
3--data '{
4 "voice_name": "example",
5 "voice_desc": "温柔细腻的音色",
6 "audio_file": "音频 Base64 编码",
7 "text_id": "text_5692181d-8825-40ec-b80f-87b79e3a9345"
8}'
大模型声音复刻的音色创建说明:
1、音色创建分为指定文本和自定义文本训练。若用户希望使用自定义文本的音频进行音色创建,无需调用“获取训练文本”接口直接调用“创建音色”接口,且无需填写音频文本ID,其他参数保持不变。
2、通过以上接口创建的音色,若在1年内没有调用合成记录,该音色将被删除,后续将无法使用。
大模型声音复刻和迁移能力说明:
大模型声音复刻分为复刻和迁移两种能力。复刻指保留声音语种/方言等特征的能力,迁移指保持音色特征的同时增加语种/方言等特征的能力。例如:
- 创建音色时输入普通话,合成普通话=复刻
- 创建音色时输入河南话,合成河南话=复刻
- 创建音色时输入普通话,合成河南话=迁移
目前支持河南话、上海话、四川话三种方言的复刻及迁移。为确保方言复刻迁移效果,建议您使用普通话或对应方言进行音色创建。
音色管理
音色列表查询
接口描述
接口描述:获取用户已经创建的音色列表
接口名称:https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/list
请求方法:POST
输入参数
| 属性 | 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|---|
| 页码 | page | int | 选填 | 列表页面:page>=1 |
输出参数
| 属性 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| 错误状态 | status | int | 0代表成功,其他为异常 |
| 错误信息 | message | string | |
| 数据 | data | object | 音色列表信息 |
data响应参数
| 属性 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| 总数 | total | int | |
| 页码 | page | int | |
| 每页数量 | page_size | int | |
| 音色列表 | items | object [ ] |
items响应参数
| 属性 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| 音色 ID | voice_id | int | 训练后的音色 ID |
| 音色名称 | voice_name | string | 音色名称 |
| 音色描述 | voice_desc | string | 音色说明 |
| 创建时间 | create_time | string | 创建时间,Unix 时间戳 |
| 状态 | status | int | 恒等于 0 |
示例
1curl --silent --location --request POST 'https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/list?access_token=XXX' \
2--data '{
3 "page": 1
4}'
音色详情查询
接口描述
接口描述:根据音色ID查询音色的详情信息
接口名称:https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/detail
请求方法:POST
输入参数
| 属性 | 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|---|
| 音色ID | voice_id | int | 必填 |
输出参数
| 属性 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| 错误状态 | status | int | 0代表成功,其他为异常 |
| 错误信息 | message | string | |
| 数据 | data | object | 音色详情信息 |
data响应参数
| 属性 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| 音色 ID | voice_id | int | 训练后的音色 ID |
| 音色名称 | voice_name | string | 音色名称 |
| 音色描述 | voice_desc | string | 音色说明 |
| 音色状态 | status | int | 恒等于 0 |
| 创建时间 | create_time | string | 创建时间 |
示例
1curl --silent --location --request POST 'https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/detail?access_token=XXX' \
2--header 'Content-Type: application/json' \
3--data '{
4 "voice_id": 1063622
5}'
删除音色
接口描述
接口描述:对已经创建的音色进行删除
接口名称:https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/delete
请求方法:POST
输入参数
| 属性 | 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|---|
| 音色ID | voice_id | int | 必填 |
输出参数
通过返回的status判断是否成功,如失败则查看message获得具体错误信息
| 属性 | 参数名称 | 类型 | 说明 |
|---|---|---|---|
| 错误状态 | status | int | 0 删除成功,1 删除异常 |
| 错误信息 | message |
示例
1curl --silent --location --request POST 'https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/delete?access_token=XXX' \
2--header 'Content-Type: application/json' \
3--data '{
4 "voice_id": 1063622
5}'
语音合成
流式在线合成(Websocket)
接口描述
接口描述:音色创建成功后,通过创建得到的音色ID进行文本的合成
接口名称:wss://aip.baidubce.com/ws/2.0/speech/publiccloudspeech/v1/voice/clone/tts
建立连接
请求路径:/ws/2.0/speech/publiccloudspeech/v1/voice/clone/tts
参数名 |
类型 | 参数位置 | 是否必填 | 说明 |
|---|---|---|---|---|
| access_token | string | query | 必填 | 鉴权令牌 |
| Authorization | string | header | 鉴权API Key | |
| voice_id | int | query | 必填 | 音色ID |
| idle_timeout | int | query | 可选 | 空闲超时时间,单位秒,默认值60,范围[5, 600] |
相关状态码
| 状态码 | 状态信息 | 错误码 | 错误消息 | 说明 |
|---|---|---|---|---|
| 400 | Bad Request | 216100 | Invalid 'foo' value: bar. | 参数错误 |
| 400 | Bad Request | 216100 | Invalid 'foo' value: bar, range: [min, max]. | 参数错误 |
| 400 | Bad Request | 216101 | Missing required parameter: 'foo'. | 参数缺失 |
| 400 | Bad Request | 400 | websocket: the client is not using the websocket protocol: ... | WebSocket协议错误 |
| 401 | Unauthorized | 216100 | Invalid access_token parameter. | access_token参数格式不正确 |
| 401 | Unauthorized | 216100 | Invalid Authorization header. | Authorization请求头格式不正确 |
| 401 | Unauthorized | 216101 | Missing access_token parameter or Authorization header. | 缺少鉴权参数 |
| 401 | Unauthorized | 110 | Access token invalid or no longer valid | access_token 校验不通过。 |
| 401 | Unauthorized | 111 | Access token expired | access_token 过期,建议更新获取Access token 重新请求。 |
| 401 | Unauthorized | 217 | IAM auth error | API Key校验不通过 |
| 403 | Forbidden | 6 | No permission to access data | appid没有相应接口权限,可以检查console页面app管理中勾选的AI能力情况。 |
| 404 | Not Found | 输入的url错误 | ||
| 429 | Too Many Requests | 15 | Open api concurrency limit reached | 触发并发限流 |
| 429 | Too Many Requests | 17 | Open api usage limit reached | 无剩余可用额度 |
| 400 | Bad Request | 216404 | Voice id not exists. | voice_id不存在 |
| 500 | Internal Server Error | 282000 | Internal error. | 服务器内部错误 |
| 400 | Bad Request | 282101 | The voice_id service has not been started. | 服务未启动 |
| 400 | Bad Request | 216403 | Not allowed to use this voice. | 对该voice_id无权限 |
初始化
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| type | string | 必填 | 开始帧的类型,固定值 system.start |
| payload | object | 可选 | 合成参数,详见下表 |
payload字段说明
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| lang | string | 可选 | 待合成的文本语言,中英文:zh,默认为zh |
| media_type | string | 可选 | 音频格式,支持wav、mp3、pcm,默认值为wav 若希望使用postman测试流式合成效果,建议使用mp3格式 |
| pitch | int | 可选 | 音调,取值 0-15,默认为 5 |
| volume | int | 可选 | 音量,基础音库取值0-9,其他音库取值 0-15,默认为 5 |
| speed | int | 可选 | 语速,取值 0-15,默认为 5 |
| dialect | string | 可选 | 方言,取值wuu-CN-shanghai 上海;zh-CN-henan 河南;zh-CN-sichuan 四川 |
| spd(兼容字段) | int | 可选 | 语速,取值 0-15,默认为 5 |
| pit(兼容字段) | int | 可选 | 音调,取值 0-15,默认为 5 |
| vol(兼容字段) | int | 可选 | 音量,基础音库取值0-9,其他音库取值 0-15,默认为 5 |
| aue(兼容字段) | int | 可选 | 音频格式,3=mp3-16k/24k,4=pcm-16k/24k,5=pcm-8k,6=wav-16k/24k,和media_type参数不可同时设置 |
1{
2 "type": "system.start",
3 "payload": {
4 "lang": "zh",
5 "media_type": "mp3",
6 "pitch": 5,
7 "volume": 5,
8 "speed": 5,
9 "dialect":"zh-CN-henan"
10 }
11}
正常响应
1{
2 "type": "system.started",
3 "code": 0,
4 "message": "success",
5 "headers": {
6 "session_id": "57944e1a-470f-4c30-9cf6-36e0aa645e58"
7 }
8}
异常响应
| type | code | message | 说明 |
|---|---|---|---|
| system.started | 216100 | Invalid system.start payload. | 参数错误 |
| system.started | 216100 | Invalid 'foo' value: bar. | 参数错误 |
| system.started | 216100 | Invalid 'foo' value: bar, range: [min, max]. | 参数错误 |
发送文本
1{
2 "type": "text",
3 "payload": {
4 "text": "需要进行语音合成的文字"
5 }
6}
| type | code | message | 说明 |
|---|---|---|---|
| system.error | 216100 | Invalid text payload. | 参数错误 |
| system.error | 216101 | Missing required parameter: 'text'. | 缺少text参数 |
| system.error | 216103 | Text exceeded 1000 characters limit. | 单次文本不能超过1000字 |
| system.error | 216429 | The current pending text is too long to be processed. | 发送频率过快,待处理文本过长 |
备注:
- 客户端发送的文本信息无内容时,返回system.error,code=216101,message=Missing required parameter: 'text'.
结束合成
客户端请求
| 参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| type | string | 必填 | 结束帧的类型,固定值 system.finish |
1{
2 "type":"system.finish",
3}
正常响应
1{
2 "type": "system.finished",
3 "code": 0,
4 "message": "success",
5 "headers": {
6 "session_id": "58b18cef-c588-4f04-a4a4-4a2977072e58"
7 }
8}
服务端主动发送
| type | code | message | 说明 |
|---|---|---|---|
| system.error | 216604 | Open api usage limit reached | 额度已用完,无剩余可用额度 |
非流式在线合成(HTTP)
接口描述
接口描述:音色创建成功后,通过创建得到的音色ID进行文本的合成
接口名称:https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/tts
请求方法:POST(Content-Type: application/json)
输入参数
属性 |
参数名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|---|
| 音色ID | voice_id | int | 必填 | 训练后的音色 ID |
| 合成文本 | text | string | 必填 | 总字数不超过500个字符,1个中文字、英文字母、数字或符号均算作1个字符 |
| 合成语言 | lang | string | 可选 | 待合成的文本语言,中英文:zh,默认为zh |
| 合成方言 | dialect | string | 可选 | 待合成的方言类型,支持以下方言:上海话:wuu-CN-shanghai;河南话:zh-CN-henan;四川话:zh-CN-sichuan |
| 输出格式 | media_type | string | 可选 | 输出文件格式,支持wav、mp3,默认值为wav |
| 音调 | pitch | int | 可选 | 音调,取值范围[0, 15],默认为5 |
| 音量 | volume | int | 可选 | 音量,取值范围[0, 15],默认为5 |
| 语速 | speed | int | 可选 | 语速,取值范围[0, 15],默认为5 |
输出参数
需要根据 Content-Type的头部来确定是否服务端合成成功。 如果合成成功,返回的Content-Type以“audio”开头
- media_type=wav ,返回为二进制wav文件,具体header信息 Content-Type: audio/wav;
- media_type=mp3 ,返回为二进制mp3文件,具体header信息 Content-Type: audio/mp3;
如果合成出现错误,则会返回json文本,具体header信息为:Content-Type: application/json。
| 属性 | 参数名称 | 参数类型 | 描述 |
|---|---|---|---|
| 错误状态 | status | int | 0代表成功,其他为异常 |
| 错误信息 | message | string | 错误消息 |
示例
1curl --location --request POST 'https://aip.baidubce.com/rest/2.0/speech/publiccloudspeech/v1/voice/clone/tts?access_token=xxxx' \
2{
3 "text": "当春风拂过,大地渐渐回暖,万物复苏的季节到来了。花儿在这个时候竞相开放,桃花、樱花、杏花,还有那细雨中的紫藤,都以最绚烂的姿态展示自己的美丽。",
4 "voice_id": 100001
5}
注意事项
由于服务变化,在线合成不再支持兼容已有合成接口,如需使用请调用上文websocket接口与http接口或者提交工单。
大模型声音复刻返回码汇总
返回码 |
提示信息 | 备注说明 |
|---|---|---|
| 0 | success | 处理成功 |
| 10012 | voice id not exists or status incorrect | 当前的 voice_id 不存在,请检查 voice_id 是否正确 |
| 10014 | user concurrency limit exceeded | 用户的并发超限,如有高并发需求,请先提交合作咨询,或者提交工单 |
| 10015 | user usage limit reached | 用户的配额超限,如有高额度需求,请先提交合作咨询,或者提交工单 |
| 10020 | temporary service err, please try again | 服务临时错误,请稍候再试 |
| 10021 | voiceprint detection failed | 未检测到有效音频,请根据返回text 进行朗读 |
| 10022 | text id not exists or text id already expire | text_id 不存在或者 text_id 已经超过 24 小时 |
| 10023 | download failed or audio file size exceeded limit | 下载失败或者上传文件超过 5M |
| 10024 | audio file transfer failed | 音频格式转换失败,请更换音频 |
| 10025 | the data has been deleted or does not have permission | 该音色不存在,或者该音色已经被开发者删除 |
| 10026 | invalid audio content | 文件格式已损坏或音频内容无效 |
| 10027 | voiceprint detection failed | 音频可能涉及敏感人物,请重新上传音频或尝试指定文本复刻 |
| 11002 | 限流无额度 | 用户的配额超限,如有高额度需求,请先提交合作咨询,或者提交工单 |
| 11003 | 限流并发超限 | 用户的并发超限,如有高并发需求,请先提交合作咨询,或者提交工单 |
| 11004 | text exceeded the limit | 文本超长,请缩短文本重试 |
| 11006 | No access permission for this voice_id | voice_id 错误,请检查 voice_id 是否正确 |
| 11007 | token information or iam information must exist | 未传递有效的鉴权信息,请正确输入 access_token 鉴权信息或者 Iam鉴权信息 |
| 11008 | temporary service err, please try again | 服务临时异常,请稍候重试 |
| 11009 | required parameters are missing | 参数缺失,请检查输入参数 |
| 11010 | parameters are invalid | 参数无效,请检查输入参数 |
| 11011 | voice_id not exists | 该 voice_id不存在 |
| 11012 | invalid page parameter, must be at least 1 | page 参数必须大于等于 1 |
| 11013 | invalid base64-encoded audio content | 无效的音频内容,非有效的 base64编码 |
| 11014 | this token/iam information invalid or has no access data permission | 该用户没有访问该数据的权限 |
| 11015 | the text contains memorable vocabulary | 文本包含敏感信息,请去掉敏感信息后重试 |
| 12001 | the audio file is too short | 音频内容太短,请更换音频 |
| 12000 | download file failed | 文件下载失败,请检查音频下载链接 |
| 12002 | wer check failed | 未检测到有效音频,请根据返回text 进行朗读 |
| 12003 | audio detect snr failed | 未检测到有效音频,请根据返回text 进行朗读 |
| 12004 | recognition failed | 无有效的人声,请更换音频 |
| 12005 | detect audio level failed | 无有效的人声,请更换音频 |
| 12006 | detect audio speed failed | 无有效的人声,请更换音频 |
| 12007 | qualiry failed | 音频质量太差,请更换音频 |
