流程说明
1. 获取声音复刻训练文本
通过调用获取声音复刻训练文本接口得到20句训练文本。客户需要依次将20句文本对应复刻训练音频交由音质检测接口进行音质检测。
POST / HTTP/1.1
Host: vrs.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: GetVrsTrainingText
{"Response":{"Data":{"TrainingTextList":[{"Text":"在很久很久以前 鸟群中有一只小鸟","TextId":"00001"},{"Text":"它的体格比一般的鸟要大一点 羽毛很少 灰暗没有光泽","TextId":"00002"},{"Text":"因为它并不耀眼夺目 很多的小鸟都不愿理睬它","TextId":"00003"},{"Text":"在众多的小鸟中 显得很普通 这只鸟叫做凤凰","TextId":"00004"},{"Text":"那时候的凤凰还不是鸟中之王 只是一个很不起眼的小鸟","TextId":"00005"},{"Text":"凤凰一直非常勤劳 并不像其他小鸟一样贪玩 反而是每天都默默地从早忙到晚","TextId":"00006"},{"Text":"每天吃饱后 它还要继续收集果实 将大家不要的果实一颗颗捡起来 藏在洞中","TextId":"00007"},{"Text":"其他的小鸟一起玩耍打闹 都理解不了凤凰的行为 觉得古怪 飞过来问凤凰","TextId":"00008"},{"Text":"森林里那么多果实 还不够自己吃的吗 为什么还要储存那么多呢","TextId":"00009"},{"Text":"鸟儿们嘲笑着凤凰的贪得无厌 之后摇摇头纷纷离开了","TextId":"00010"},{"Text":"适逢很久没有下雨 森林里大旱 鸟儿们四处寻找食物","TextId":"00011"},{"Text":"可是果实早就干瘪了 根本找寻不到吃的东西","TextId":"00012"},{"Text":"这时候 凤凰急忙打开山洞 把自己辛苦储存的食物分给大家 一起共度难关","TextId":"00013"},{"Text":"就这样 在凤凰的帮助下 鸟儿们得救了","TextId":"00014"},{"Text":"旱灾过后 森林里又恢复了生机 而鸟儿们自然也不能忘了凤凰的救命之恩","TextId":"00015"},{"Text":"为了感谢凤凰 鸟儿们都将自己身上最漂亮的羽毛拔下来","TextId":"00016"},{"Text":"制成一件光彩夺目的百鸟衣送给凤凰 并推举它为百鸟之王","TextId":"00017"},{"Text":"从此 每到这一天 四面八方的鸟儿都会飞来向凤凰祝贺","TextId":"00018"},{"Text":"就形成了后来百鸟朝凤的场景 这便是百鸟朝凤故事的由来","TextId":"00019"},{"Text":"后来人们也用百鸟朝凤来比喻德高望重者众望所归","TextId":"00020"}]},"RequestId":"29a04b92-ed0f-4345-a0aa-89c1f368365b"}}
2. 环境检测和音频质量检测
音质检测用于检测复刻训练音频质量,保证最终复刻的音色效果。接口检测通过后会返回音频的 AudioId,客户需要保存该 AudioId 用于创建复刻任务接口使用。(注意:每次检测只能检测一句文本的音频,20句文本则需要检测20次,请求参数中的 TextId 来源获取训练文本接口返回的 TextId,该TextId标识文本内容。AudioData为Base64 加密后的音频数据。)
POST / HTTP/1.1
Host: vrs.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: DetectionEnvAndSoundQuality
<公共请求参数>
{
"TextId": "00001",
"AudioData": "UklGRqTOAQBXQVZFZm10IBAAAAABAAEAg.......AAAAAAAAAAAAAAAAAAAA==",
"Codec": "wav",
"TypeId": 2,
"SampleRate": 16000
}
{
"Response": {
"Data": {
"AudioId": "audio29b7ff1d2bd74ba887712cedb280d563",
"DetectionCode": 0,
"DetectionMsg": "Success",
"DetectionTip": []
},
"RequestId": "6aace114-dddf-4ee9-9086-a6ffe6d88e6f"
}
}
如果未通过可参考响应结果的 Words 判断音频问题。包含准确度、流畅度、以及错读少读等情况。3. 声音复刻任务创建接口
20句训练文本对应训练音频通过音质检测后,通过声音复刻任务创建接口创建复刻音色任务。任务创建成功后会返回 TaskId,可通过 TaskId 查下任务状态。
POST / HTTP/1.1
Host: vrs.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: CreateVRSTask
<公共请求参数>
{
"SessionId": "63f8xxx1897281d556df60b0",
"VoiceName": "测试",
"SampleRate": 16000,
"VoiceGender": 1,
"VoiceLanguage": 1,
"Codec": "wav",
"CallbackUrl": "http://example.com/callback",
"AudioIdList": [
"audio29b7ff1d2bd74ba887712cedb280d563","audiob8651e0b48f44771937095ea09","audio24b22885a17c48cf98c657040","audio4482e91539c64e428e81631647","audio354bb2fcd34e4645bbb1ce3d","audio75a13f8c37524c76a66add53c","audio874de9179446495b8cce32c85","audioc6a401e460e640efa3dade68693e","audioe852c24ca77642a388eb5d0a6e","audio0aec8b86b51248c0a8ee1743","audio2a06502656824e9291b9eaea2d","audioa61a61f645e044a5bdd86a6","audio428e76d9a53a48b2b5d9a863ca6","audio009abeb335124789a7b002be8","audioec8add9c50324134af884062f","audio9c4f718c03b74194a22d5b62d2","audio7a88b11fb024487098bc4c2133d16822","audio4ddd906eabf14353872e113778f8db6b","audio884113210232471ba843c02a8b","audioc57567f76e8a4bf4a58abec06" ]
}
{
"Response": {
"RequestId": "63f89bb1897281d556df60b0",
"Data": {
"TaskId": "ce68122c-0ca8-4fa6-99b1-90a2867"
}
}
}
4. 声音复刻任务结果查询接口
通过声音复刻任务创建接口返回的 TaskId 查询任务状态,训练成功后会返回复刻音色的 VoiceType。复刻任务一般半小时可训练完成。
POST / HTTP/1.1
Host: vrs.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: DescribeVrsTaskStatus
<公共请求参数>
{
"TaskId":"ce68122c-0ca8-4fa6-99b1-90a2867"
}
{
"Response": {
"Data": {
"TaskId": "ce68122c-0ca8-4fa6-99b1-90a2867",
"Status": 2,
"StatusStr": "waiting in queue",
"VoiceType": 100000,
"ErrorMsg": ""
},
"RequestId": "63f43c3d6e30af6bd63735b0"
}
}
5. 基础语音合成
根据训练成功后返回的 VoiceType 调用基础语音合成进行使用。
FAQ
离线任务类型适用于什么场景?
离线任务适用于不联网需要本地部署复刻后的音色模型场景。一般使用在线任务即可。