本地语音唤醒(Android)

1. 唤醒 SDK概述

Wakeup 提供单独的离线语音唤醒能力,通过不间断侦测语音,当出现唤醒词的语音时可执行相关事件的技术,具有功效低、唤醒率高的特点。可以设置自定义唤醒词。

2. SDK使用说明

使用当前功能时,请先授权,否则禁止使用。请参考 授权说明

2.1 准备

jar:DUI-lite-SDK-for-Android-xxx.jar

so:libwakeup.so

资源:具体使用到的资源请参考 demo。可以放在assets目录中,也可以自己手动放在磁盘中,比如/sdcard/

3. 引擎运行流程图

4. 示例代码

涉及引擎类:AIWakeupEngine,详细使用示例请参考 demo

AIWakeupEngine
AIWakeupEngine mEngine;
mEngine = AIWakeupEngine.createInstance();
AIWakeupConfig config = new AIWakeupConfig();
config.setWakeupResource(SampleConstants.WAKEUP_RES);
mEngine.init(config, new AISpeechListenerImpl());
 
 
 
AIWakeupIntent intent = new AIWakeupIntent();
intent.setWakeupWord(new String[]{"ni hao xiao chi"}, new float[]{0.1f});
mEngine.start(intent);
 
 
 
//如下注释的代码为动态设置唤醒env(当前只支持更新thresh),以下2行效果一样
// mEngine.setDynamicParam(new String[]{"ni hao xiao chi"}, new float[]{0.2f});
mEngine.setDynamicParam("words=ni hao xiao chi;thresh=0.2;");    // 效果同上
 
 
mEngine.stop();
mEngine.destroy();
 
 
 
// 回调方法
private class AISpeechListenerImpl implements AIWakeupListener {
 
    @Override
    public void onError(AIError error) {
        Log.e(TAG, "error " + error.toString());
    }
 
    @Override
    public void onInit(final int status) {
        Log.i(TAG, "Init result " + status);
        if (status == AIConstant.OPT_SUCCESS) {
            Log.i(TAG, "初始化成功");
        else {
            Log.i(TAG, "初始化失败!code:" + status);
        }
    }
 
 
    @Override
    public void onWakeup(String recordId, final double confidence, final String wakeupWord) {
        Log.d(TAG, "\n唤醒成功  wakeupWord = " + wakeupWord + "  confidence = " + confidence);
        //在这里启动其他引擎,比如tts或者识别
    }
 
    @Override
    public void onReadyForSpeech() {
        Log.d(TAG, "onReadyForSpeech: ");
    }
 
 
    @Override
    public void onResultDataReceived(byte[] buffer, int size) {
 
    }
 
    @Override
    public void onRawDataReceived(byte[] buffer, int size) {
 
    }
 
}

5. 错误码

DUI Lite 2.0 - 错误码

 

6. 接口文档

javadoc   https://www.duiopen.com/duilite-doc/android