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

    xiaoxiao2021-04-18  93

    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<String> 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);

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

    转载请注明原文地址: https://ju.6miu.com/read-675505.html

    最新回复(0)