# 概览

AIUI支持语音唤醒的功能。语音唤醒开启后,用户直接说唤醒词就可以让SDK进入识别(working)状态,响应用户的语音指令。

# 集成步骤

① 将ivw下示例唤醒配置vtn.ini和示例唤醒资源res.bin(唤醒词小飞小飞)拷贝到文件系统中。

Android平台下拷贝示例代码:

FileUtil.copyAssetFolder("ivw", "/sdcard/AIUI/ivw");

② 修改vtn.inires_path为唤醒资源在文件系统中的绝对路径。

Android平台下文件修改示例:

[ivw]
#是否开启唤醒功能, 0为不开启,其他为开启,默认为不开启
ivw_enable = 1

#唤醒资源
res_path=/sdcard/AIUI/ivw/vtn/res.bin

③ 修改aiui_phone.cfg配置文件,添加唤醒参数

// 语音业务流程控制
"speech":{
	"wakeup_mode":"vtn" //开启唤醒
}
//唤醒参数配置
"ivw":{
	"mic_type": "mic1",
	"res_type":"path",
	"res_path":"/sdcard/AIUI/ivw/vtn/vtn.ini"
},

④ 创建AIUIAgent,发送CMD_START_RECORD消息,即开始录音,设备进入待唤醒状态。

Android平台下示例代码:

//创建AIUIAgent
mAIUIAgent = AIUIAgent.createAgent( this, getAIUIParams(), mAIUIListener );
//开始录音
AIUIMessage msg = new AIUIMessage(AIUIConstant.CMD_START_RECORD, 0 ,0, "data_type=audio,sample_rate=16000", null);
mAIUIAgent.sendMessage(msg);

⑤ 此时对设备说出示例唤醒词小飞小飞,SDK就会抛出唤醒事件(EVENT_WAKEUP),进入识别状态,响应后面的语音指令。

唤醒事件处理示例:

        public void onEvent(AIUIEvent event) {
            switch (event.eventType) {
                //唤醒事件
                case AIUIConstant.EVENT_WAKEUP: {
                    String info = event.info;
                    Log.i(TAG, "on EVENT_WAKEUP: " + info);
                    if(info != null &&  !info.isEmpty()){
                            JSONObject jsInfo = new JSONObject(info);
                            String ivwResult = jsInfo.getString("ivw_result");
                            JSONObject ivwInfo = new JSONObject(ivwResult);
                            String keyword = ivwInfo.getString("keyword");
                            Log.i("本次唤醒为:" + keyword);
                    }
                }
                break;

唤醒结果示例:

{
    "angle": 0,
    "beam": 0,
    "ivw_result": {
        "angle": 0,
        "beam": 0,
        "end_ms": 137256390,
        "keyword": "xiao3 fei1 xiao3 fei1",
        "physical": 0,
        "power": 0,
        "scorivw_resulte": 1072,
        "start_ms": 137255370
    },
    "type": 3
}

# 自定义唤醒词

① 登录 https:/aiui.xfyun.cn/ 创建应用或选择已创建的应用。

② 依次选择资源制作栏 -> 配置唤醒词(可填多个,最多支持 200) -> 选择 71 版本下载

③ 取下载资源中的res.bin按照集成示例中的步骤替换示例唤醒词

image-20210911140302827

注意:此处生成的唤醒资源为浅定制版本,如果需要更好的唤醒效果,请联系商务进行唤醒词的深定制训练。

# 麦克风阵列唤醒

SDK中默认是单麦唤醒,这种唤醒方式适用于手机,平板等设备上的近场交互场景。当在智能硬件上,如机器人,智能音箱等设备上时,就需要引入麦克风阵列的支持,麦克风阵列可以支持智能硬件设备有更快更远更好的唤醒效果。当然在接入技术细节也会有更多要求,如果你有智能硬件使用语音唤醒的需求,请联系商务进行咨询支持。

# 常见错误

# 路径配置错误

vtn.ini或者唤醒资源的路径指定错误时,SDK就会报错600002(OPEN_MIDDLE_CFG_FAILED)和600100(IVW_RES_PATH_ERROR),这时请仔细检查配置文件中配置的资源路径。

# 授权错误

每个应用创建时都会有10台设备的唤醒装机授权,当在更多设备上安装运行时,SDK就会报错600022(CAE_AUTH_CHECK_FAIL)。如果需要更多的唤醒授权请联系商务处理。

# 错误码查询

错误 错误码 说明
OPEN_ENGINE_CFG_FAILED 600001 访问引擎配置文件失败
OPEN_MIDDLE_CFG_FAILED 600002 打开vtn.ini配置失败
READ_CAE_ENGINE_CFG_FAILED 600003 读取降噪引擎配置失败
LOAD_CAE_ENGINE_LIB_FAILED 600004 加载降噪引擎库失败
CAE_ENGINE_INIT_FAILED 600005 初始化降噪引擎库失败
SET_CALLBACK_FAILED 600006 设置回调函数失败
WIRTE_AUDIO_FAILED 600007 写音频数据失败
READ_MIDDLE_CFG_FAILED 600008 读vtn.ini失败
READ_ENGINE_CFG_FAILED 600009 读取引擎配置失败
PROC_INPUT_DATA_FAILED 600010 处理输入的音频数据失败
BEAM_PARAM_ERROR 600011 波束参数错误
SET_LOG_LEVE_ERROR 600012 设置log级别报错
NEW_CAE_HANDLE_ERROR 600013 创建cae句柄出错
SET_CAE_PARAM_ERROR 600014 设置cae参数发生了错误
GET_CAE_PARAM_ERROR 600015 获取cae参数发生了错误
GET_BEAM_ANGLE_ERROR 600016 获取波束和角度值发生了错误
GET_BEAM_POWER_ERROR 600017 获取波束能量值错误
CAE_IS_DESTROY 600018 cae句柄已销毁
CAE_WRITE_DATA_FAIL 600019 往cae里写音频数据失败
CAE_HANDLE_NULL 600020 cae句柄位空值
CAE_INIT_AUTH_FAIL 600021 初始化授权操作失败
CAE_AUTH_CHECK_FAIL 600022 授权检查失败,联系商务增加授权
CAE_RESOURCE_CHECK_FAIL 600023 cae依赖的资源不完整
CAE_PROC_IVW_RESULT_FAILE 600024 处理唤醒结果失败
CAE_HTREAD_INIT_FAILE 600025 初始cae工作线程失败
CAE_GET_ANGLE_FAILE 600026 获取唤醒角度失败
CAE_INIT_VAD_FAILE 600027 初始化vad引擎失败
CAE_GET_VPR_RESULT_FAILE 600028 获取声纹结果失败
IVW_RES_PATH_ERROR 600100 唤醒资源路径错误
IVW_RES_SIZE_ERROR 600101 唤醒资源大小错误
IVW_READ_RES_ERROR 600102 读唤醒资源发生错误
IVW_RES_CHECK_ERROR 600103 唤醒资源格式错误
IVW_INIT_FAILE 600104 初试化唤醒引擎失败
IVW_PTR_IS_NULL 600105 唤醒引擎指针为空
IVW_CREATE_INSTANCE_FAILE 600106 创建唤醒引擎实例失败
IVW_SET_PARAM_FAILE 600107 设置唤醒引擎参数失败
IVW_GET_PARAM_FAILE 600108 获取唤醒引擎参数失败
IVW_ADD_ENG_RES_FAILE 600109 加载唤醒资源失败
IVW_UPDATE_RES_FAILE 600110 更新唤醒资源失败
IVW_SAVE_RES_FAILE 600111 保存唤醒资源失败
IVW_DEL_REA_FAILE 600112 删除唤醒资源失败
IVW_SET_RES_PARAM_FAILE 600113 设置唤醒资源参数失败
IVW_GET_RES_PARAM_FAILE 600114 获取唤醒资源参数失败
IVW_SET_INST_PARAM_FAILE 600115 设置唤醒实例参数失败
IVW_GET_INST_PARAM_FAILE 600116 获取唤醒实例参数失败
IVW_GET_RESULT_FAILE 600117 获取唤醒结果失败
IVW_REG_CALLBACK_FAILE 600118 注册回调函数到唤醒实例失败
IVW_UNGEG_CALLBACK_FAILE 600119 从唤醒实例反注册回调函数失败
IVW_START_INSTANCE_FAILE 600120 启动唤醒实例失败
IVW_STOP_INSTANCE_FAILE 600121 停止唤醒实例失败
IVW_WRITE_DATA_FAILE 600122 写入唤醒音频失败
IVW_INIT_PARAM_ERROR 600123 初始化唤醒引擎时参数错误
IVW_MLP_ERROR 600124 加载MLP资源错误
IVW_FILTER_ERROR 600125 加载FILLTER资源错误
IVW_KEYWORD_ERROR 600126 加载KEYWORD资源错误
IVW_ENGINE_LOAD_RES_FAIL 600127 加载资源到唤醒引擎失败
IVW_INST_OUT_NOT_JSON 600128 唤醒结果不是JSON串
IVW_INST_OUT_NO_ISTART 600129 唤醒结果里没有ISTART字段
IVW_INST_OUT_NO_IDURATION 600130 唤醒结果里没有IDURATION字段
IVW_INST_OUT_NO_NCM 600131 唤醒结果里没有NCM字段
IVW_INST_OUT_NO_KEYWORD 600132 唤醒结果里没有KEYWORD字段
IVW_SET_RESULT_CB_FAILE 600133 设置唤醒结果解析的回调失败
IVW_DATA_CAE_PROC_FAILE 600133 回调CAE引擎获取能量值和角度失败
IVW_WRITE_AUDIO_FAILE 600133 写音频到唤醒引擎失败
IVW_NO_SELECT_FRAME 600134 没有找到唤醒音频帧
IVW_GEN_AGE_RES_FILE 600135 检查性别、年龄依赖的资源失败
IVW_GENDER_RES_FAILE 600136 加载性别资源到引擎失败
IVW_AGE_RES_FAILE 600137 加载年龄资源到内存失败
IVW_START_INST_FAILE 600138 启动唤醒实例失败
IVW_STOP_INST_FAILE 600139 停止唤醒实例失败
IVW_VPR_INIT_FAILE 600140 初始化VPR引擎失败
IVW_VPR_NEW_FAILE 600141 申请VPR资源内存空间失败
IVW_ADD_VECTOR_RES_FAILE 600142 加载VPR资源失败
IVW_VECTOR_RES_EMPTY 600143 VPR资源为空
IVW_READ_VPR_RES_FAILED 600144 读取VPR资源失败