安卓 百度语音识别

android 专栏收录该内容
22 篇文章 0 订阅

Android 百度语音识别集成,非常简单
1.最近做一个语音识别的项目,网上找了个demo,很简单,直接调用这个类就可以,做个记录,方便以后用!

public class OnLineUtils implements EventListener {

private EventManager asr;
private OnLineCallBack onLineCallBack;

public OnLineUtils (Context context, OnLineCallBack onLineCallBack){
    asr = EventManagerFactory.create(context,"asr");
    asr.registerListener(this);

    this.onLineCallBack = onLineCallBack;
    initPermission(context);
}

/*
 * android 6.0 以上需要动态申请权限
 */
private void initPermission(Context context) {
    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<String> toApplyList = new ArrayList<String>();

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

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

}


@Override
public void onEvent(String name, String params, byte[] data, int offset, int length) {
    if (params != null && !params.isEmpty()) {

        if (name.equals(SpeechConstant.CALLBACK_EVENT_ASR_PARTIAL)) {

            try {
                JSONObject jsonObject = new JSONObject(params);
                String resultType = jsonObject.getString("result_type");
                if (resultType.equals("final_result")){
                    String finalResult = jsonObject.getString("best_result");

                    onLineCallBack.onSuccess(finalResult);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

    }

}

public interface OnLineCallBack{
    void onSuccess(String result);
}

/**
 * 开始识别
 */
public void start(){
    Map<String,Object> params = new LinkedHashMap<>();
    String event = SpeechConstant.ASR_START;

    params.put(SpeechConstant.ACCEPT_AUDIO_VOLUME,false);
    String json = new JSONObject(params).toString();

    asr.send(event,json,null,0,0);
}

/**
 * 停止识别
 */
public void stop() {
    asr.send(SpeechConstant.ASR_STOP,null,null,0,0);
}

}

  • 0
    点赞
  • 1
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值