Android集成百度语音识别API

创建应用

在百度AI开放平台(http://ai.baidu.com/)创建应用,选择语音识别接口

SDK下载
Android集成百度语音识别API_第1张图片
image.png
导入jar包和so库文件

(1)将DEMO中的/app/libs文件夹下的jar包拷到自己项目的/app/libs文件夹下,之后右键jar包,选择add as library即可。
(2)在自己项目中的/app/src/main下新建jniLibs文件夹,将DEMO中一样路径下的所有文件拷过去。


Android集成百度语音识别API_第2张图片
image.png
相关配置

1.AndroidManifest添加权限






2.设置APP_ID, APP_KEY, APP_SECRET和服务

    
    
    

    

3.android 6.0 以上版本权限申请

/**
 * android 6.0 以上需要动态申请权限
 */
private void initPermission() {
    String permissions[] = {Manifest.permission.RECORD_AUDIO,
            Manifest.permission.ACCESS_NETWORK_STATE,
            Manifest.permission.INTERNET,
            Manifest.permission.READ_PHONE_STATE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };

    ArrayList toApplyList = new ArrayList();

    for (String perm :permissions){
        if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) {
            toApplyList.add(perm);
            //进入到这里代表没有权限.

        }
    }
    String tmpList[] = new String[toApplyList.size()];
    if (!toApplyList.isEmpty()){
        ActivityCompat.requestPermissions(this, toApplyList.toArray(tmpList), 123);
    }

}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    // 此处为android 6.0以上动态授权的回调,用户自行实现。
}

4.proguard文件

-keep class com.baidu.speech.**{*;}
开始使用

1.初始化EventManager

EventManager eventManager = EventManagerFactory.create(this,"asr");

2.创建自己的事件监听EventListener,在onEvent里做各种回调处理。其中s是回调事件, s1是回调参数。(data,offset,length)缓存临时数据,三者一起,生效部分为 data[offset] 开始,长度为length。

我们通过判断s的值来确定语音回调,如开始识别,识别结束等

        com.baidu.speech.EventListener eventListener = new com.baidu.speech.EventListener() {
            @Override
            public void onEvent(String s, String s1, byte[] data, int offset, int length) {

               if(s == SpeechConstant.CALLBACK_EVENT_ASR_READY){
                   Log.i("TAG","start:"+s1);
                   info.setText(s+"\n"+s1);
               }
               if(s == SpeechConstant.CALLBACK_EVENT_ASR_BEGIN){
                   info.setText(s+"\n"+s1);
               }
               if(s == SpeechConstant.CALLBACK_EVENT_ASR_END){
                   info.setText(s+"\n"+s1);
               }
                if(s == SpeechConstant.CALLBACK_EVENT_ASR_PARTIAL){
                  //TODO
                }
            }
        };

3.注册自己的监听
eventManager.registerListener(eventListener);
4.发送事件
通过EventManager的send()方法可以发送各种事件。如开始识别,停止识别,取消识别等。在SpeechConstnt类中有静态常量让我们选用。
第一个参数为事件类型,第二个参数为语音识别相关参数设定,格式为JSON。
比如我们可以在点击一个按钮后执行下述代码。

eventManager.send(SpeechConstant.ASR_START,jsonObject.toString(),null,0,0);
总结

简单使用流程就是先进行EventManager和EventListener初始化,之后EventManager注册EventListener,然后调用EventManager的send()方法执行开始识别、结束识别等事件。最后在EventListener中的onEvent()方法中进行开始识别、识别结果各种回调处理

你可能感兴趣的:(Android集成百度语音识别API)