# 概览
AIUI支持语音唤醒的功能。语音唤醒开启后,用户直接说唤醒词就可以让SDK进入识别(working)状态,响应用户的语音指令。
# 集成步骤
① 将ivw
下示例唤醒配置vtn.ini
和示例唤醒资源res.bin
(唤醒词小飞小飞)拷贝到文件系统中。
Android平台下拷贝示例代码:
FileUtil.copyAssetFolder("ivw", "/sdcard/AIUI/ivw");
② 修改vtn.ini
中res_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
按照集成示例中的步骤替换示例唤醒词
注意:此处生成的唤醒资源为浅定制版本,如果需要更好的唤醒效果,请联系商务进行唤醒词的深定制训练。
# 麦克风阵列唤醒
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资源失败 |