版权声明:本文为HaiyuKing原创文章,转载请注明出处!
前言
上一篇集成的是V3.0.7.3版本的SDK《BaiduSpeechDemo【百度语音SDK集成】(基于v3.0.7.3)》,这次发现官网的SDK进行了升级,感觉有必要进行重新集成。
1、修复了APP同时集成多个SDK,不能同时使用的问题;——所以需要使用新sdk的jar文件;
2、既然官网也使用了module方式;——那么就不需要自己创建module了,直接在官网的core这个module中优化;
3、修复长语音无结束回调;——增加长语音结束回调的监听;
本Demo中使用的appkey已失效,请自行创建应用,使用新的appkey。
效果图
代码分析
普通话 search搜索模型:参考SpeechBottomSheetDialog.java类
普通话 input输入法模型,适用于长句及长语音,有逗号分割,无语义:参考SpeechLongBottomSheetDialog.java类
注意:关于语音识别状态维护,API调用的代码,是自己根据官网demo的理解进行整理的,可能有所偏颇,仅供参考。【希望官网demo可以添加百度APP的语音对话框效果就好了】
使用步骤
一、项目组织结构图
注意事项:
1、 导入类文件后需要change包名以及重新import R文件路径
2、 Values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖
二、导入步骤
(1)在项目中导入官网demo中的core这个module,同时修改名称,修改为baiduspeech
(2)修改baiduspeech的AndroidManifest.xml(修改官网申请的应用信息)
(3)修改MessageStatusRecogListener.java文件【根据实际情况进行修改】
packagecom.baidu.aip.asrwakeup3.core.recog.listener;importandroid.os.Handler;importandroid.os.Message;importandroid.util.Log;importcom.baidu.aip.asrwakeup3.core.recog.RecogResult;importcom.baidu.speech.asr.SpeechConstant;/*** Created by fujiayi on 2017/6/16.*/
public class MessageStatusRecogListener extendsStatusRecogListener {privateHandler handler;private long speechEndTime = 0;private boolean needTime = true;private static final String TAG = "MesStatusRecogListener";publicMessageStatusRecogListener(Handler handler) {this.handler =handler;
}
@Overridepublic voidonAsrReady() {super.onAsrReady();
speechEndTime= 0;
sendStatusMessage(SpeechConstant.CALLBACK_EVENT_WAKEUP_READY,"引擎就绪,可以开始说话。");
}
@Overridepublic voidonAsrBegin() {super.onAsrBegin();
sendStatusMessage(SpeechConstant.CALLBACK_EVENT_ASR_BEGIN,"检测到用户说话");
}
@Overridepublic voidonAsrEnd() {super.onAsrEnd();
speechEndTime=System.currentT