android 百度语音识别(离在线)以及唤醒功能

1、官方文档有的id key 不说了,直接配置并添加权限即可

2、.so文件粘帖到jniLibs目录下。

3、离线词库的获取 baidu_speech_grammar.bsg

启动代码如下:

private void offLine(){
    Log.d(TAG,"start offline to baidu");
    Intent intent = new Intent("com.baidu.action.RECOGNIZE_SPEECH");
    intent.putExtra("grammar",baidu_speech_grammar的路径);
    intent.putExtra("sample", 16000);
    intent.putExtra("language", "cmn-Hans-CN");
    intent.putExtra("prop", 20000);
    Log.d(TAG,mSampleDirPath + "/" + SPEECH_S_1);
    intent.putExtra("asr-base-file-path",s_1的路径);
    startActivityForResult(intent, 1);
}

4、获取的内容解析:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == RESULT_OK) {
        Bundle results = data.getExtras();
        ArrayList results_recognition = results.getStringArrayList("results_recognition");
        Log.d(TAG,"识别结果(数组形式): " + results_recognition + "\n");
    }
}

5、资源文件的配置(复制粘帖到指定目录)

6、7.0动态获取麦克风和写的权限

直接运行,没问题,离线时有时说的话提示网络问题,是因为说的内容并非离线语法库中的内容。直接说库中内容,或者自定义离线库导出覆盖之前的即可。

需要指出的是离线识别,需要在开发平台导出语义库,只有说出语义库中的内容,才能识别成功,否则就会走在线,但是网络不可用,就会报出网络不可用的问题。


唤醒功能:

1、自定义激活词 (http://yuyin.baidu.com/wake#m4),导出并添加到可读路径下。

2、初始化唤醒功能

private void initEvents() {
    EventManager wakeup = EventManagerFactory.create(this, "wp");
    wakeup.registerListener(new EventListener() {
        @Override
        public void onEvent(String name, String params, byte[] bytes, int i, int i1) {
            try {
                Log.d(TAG,"onEvent name = "+name+", params = "+params);
                JSONObject json = new JSONObject(params);
                if ("wp.data".equals(name)) { // 每次唤醒成功, 将会回调name=wp.data的时间, 被激活的唤醒词在paramsword字段
                    String word = json.getString("word"); // 唤醒词
                    Log.d(TAG,"current word = "+word);
                } else if ("wp.exit".equals(name)) {
                    // 唤醒已经停止
                }
            } catch (JSONException e) {
                throw new AndroidRuntimeException(e);
            }

        }
    });

    HashMap params = new HashMap();
    params.put("kws-file",WackUp.bin路径);
    wakeup.send("wp.start",new JSONObject(params).toString(), null, 0, 0);
}

3、停止唤醒监听

wakeup.send("wp.stop", null, null, 0, 0);

运行后,注册监听后,在说到指定的激活词语时,将会调用到指定方法,可以开启语音识别的监听,或者关掉监听。


你可能感兴趣的:(android)