声音复刻

1. 概述

声音复刻 又称 声音克隆,即发音者通过录制一些固定文本对应的音频,通过训练得到一个与 发音者声音相似的 tts 音色资源。可以通过 AICloudTTSEngine (云端合成引擎)来合成并播放发音者专属的声音。

2. 初始化

//初始化声音复刻引擎
AICloudVoiceCopyEngine.getInstance().init(new AICloudVoiceCopyConfig
                .Builder()
                .setProductId(PRODUCT_ID) //产品ID
                .setApiKey(API_KEY) //产品apiKey 
                //思必驰 dca sdk 返回的token、rememberToken
                .setToken("token-63b31b35-28cf-428a-a85d-6e0fcd708471.beta")
                .setRememberToken("1136d7bd-d741-40e9-9e14-d16fa0281684.beta") 
                .create(), voiceCopyListener);

3. 接口说明

3.1. 声音复刻接口

    /**
     * 初始化声音复刻引擎
     *
     * @param config   声音复刻配置信息
     * @param listener 声音复刻监听接口
     */
    public synchronized void init(AICloudVoiceCopyConfig config
            , AICloudVoiceCopyListener listener);

    /**
     * 获取复刻对应的录音文本
     */
    public void getText();

    /**
     * 上传音频(音频检测)
     *
     * @param textId   文本ID,即录音对应的文本编号,必填。
     * @param gender   MALE / FEMALE , 必填
     * @param age      年龄段 (成人|儿童)  ADULT / CHILD, 非必填
     * @param filePath 音频文件路径
     */
    public void upload(String textId, String gender, String age, String filePath);


    /**
     * 提交训练
     *
     * @param gender       自定义声音录音性别(MALE 和 FEMALE),必填
     * @param age          年龄段 (成人|儿童)  ADULT / CHILD
     * @param customInfo   自定义音色资源名称
     * @param audio_list   音频检测接口所返回的 "audio_reserve_id" 集合
     * @param pre_tts_text 训练后,试听音频文本
     */
    public void training(String gender, String age, String customInfo
            , ArrayList<String> audio_list, ArrayList<String> pre_tts_text);


    /**
     * 查询任务状态,查询全部
     *
     * @param taskId 复刻任务ID
     */
    public void query(String taskId);

    /**
     * 删除音色
     *
     * @param taskId 任务ID
     */
    public void delete(String taskId);

    /**
     * 自定义任务相关的信息
     *
     * @param taskId     任务ID
     * @param customInfo 自定义信息
     */
    public void customize(String taskId, String customInfo);

    /**
     * 停止声音复刻
     */
    public void stop();

    /**
     * 释放复刻资源
     */
    public void destroy();

3.2 复刻监听接口(voiceCopyListener)

    /**
     * 初始化结果回调
     *
     * @param status 0 表示成功,1 表示失败
     * @param msg    详细描述
     */
    void onInit(int status, String msg);

    /**
     * 录音文本回调
     *
     * @param state 0 表示成功,-1 表示失败
     * @param data  服务端响应的数据
     * @param e     异常信息
     */
    void onRecordText(int state, String data, IOException e);

    /**
     * 音频检测回调
     *
     * @param state 0 表示成功,-1 表示失败
     * @param data  服务端响应的数据
     * @param e     异常信息
     */
    void onUpload(int state, String data, IOException e);

    /**
     * 提交训练回调
     *
     * @param state 0 表示成功,-1 表示失败
     * @param data  服务端响应的数据
     * @param e     异常信息
     */
    void onTraining(int state, String data, IOException e);

    /**
     * 查询任务状态,查询全部回调
     *
     * @param state 0 表示成功,-1 表示失败
     * @param data  服务端响应的数据
     * @param e     异常信息
     */
    void onQuery(int state, String data, IOException e);

    /**
     * 删除音色资源回调
     *
     * @param state 0 表示成功,-1 表示失败
     * @param data  服务端响应的数据
     * @param e     异常信息
     */
    void onDelete(int state, String data, IOException e);

    /**
     * 更新任务相关的自定义信息回调
     *
     * @param state 0 表示成功,-1 表示失败
     * @param data  服务端响应的数据
     * @param e     异常信息
     */
    void onCustomize(int state, String data, IOException e);

4. 响应数据

4.1 音频检测

字段 描述 备注
match_percent 匹配度,所有字都读对,100分
highlight_text 读错的字会高亮显示,就是包含的部分
audio_reserve_id 音频文件的唯一标识, 后面提交训练会用到
is_valid 标记是否通过
{
    "code": 0
    "result": [
        {
            "is_valid": false,
            "match_percent": 57,
            "audio_reserve_id": "503a858f73b245dc835c42378426f137",
            "highlight_text": "有一次,林肯总统正<mark>在演</mark>讲,突<mark>然一</mark>个青年递给他一张纸条<mark>。林肯打开一看,上面只有两个字:“傻瓜</mark>”。"
        }
    ],
    "requestInfo": "914009336",
    "recordId": "5f2a5ea11485690c06508ddbb644b887"
}

4.2 提交训练

字段 描述 备注
taskId 复刻任务ID
{
    "code": 0
    "result": {
        "taskId": "b646f8d0-f70c-4438-8ad2-496ecb47a585"
    }
    "requestInfo": "914009336",
    "recordId": "5f2a5ea11485690c06508ddbb644b887"
}

4.3 查询任务状态

字段 描述 备注
taskId 复刻任务ID
eventName 训练状态 "waiting_train", "begin_train" , "complete_train", "fail_train"
voiceId 音色id
userId 用户id
customInfo 用户名称
preTtsList 试听音频列表
{
    "code": 0,
    "result": {
        "pid": "914009336",
        "userId": "userId-777777",
        "taskList": [
            {
                "taskId": "b646f8d0-f70c-4438-8ad2-496ecb47a585",
                "eventName": "complete_train",
                "voiceId": "1f596872812c465fbcebde99ea83c139",
                "customInfo": "app自定义信息",
                "preTtsList": []
            }
        ]
    },
    "requestInfo": "userId-777777",
    "recordId": "5f2a79745077e6232ae6ea671b232a9b"
}

4. 注意事项

  • 录音固定文本默认是思必驰演示专用,若客户要定制需要提供文本给思必驰确认并配置。
  • 训练成功得到的 voiceId 通过 AICloudTTSEngine(云端合成引擎)来合成并播放。
  • 复刻SDK只提供单项能力,跨设备之间 voiceId 的同步需求则需要上层业务端来保证。

results matching ""

    No results matching ""