下载下来的是一个android工程android
其中有三个modulejson
固然其中也有百度本身的文档,在doc_integration_....文件夹中,也是很直接明了的,本人就是经过这三个文档进行集成以及功能实现的app
具体的集成过程小编这边就很少仔细讲解了,能够直接去看这三个文档,我这边就稍微说一下这三个文件的主要是讲的基本内容吧ide
1._helloworld 文档主要是讲怎样集成语音识别的sdk,实现一个精简版的语音识别,按照它所给的步骤能够完成基本的sdk集成,以及简单的在线识别的功能,能够判断你的sdk是否集成成功测试
2._TTS文档主要是告诉你怎样集成sdk以及在本身的工程如何实现语音识别this
3._demonstration文档主要是针对你所下载下来的工程Demo的功能介绍介绍.net
AppID,API Key ,Secret Key,这三个参数是你集成sdk是要用到的code
这个操做很简单在控制台中选中语音识别一栏
选中应用列表>>建立应用
>>填写基本应用信息
三.实如今线识别以及精确地识别本身的所须要词库
其实在线识别功能在_TTS文档中已经详细讲过了,我这边直接把实现代码拿出来
1.进行EventManager初始化
// 基于sdk集成1.1 初始化EventManager对象
asr = EventManagerFactory.create(this, "asr");
// 基于sdk集成1.3 注册本身的输出事件类
asr.registerListener(this); // EventListener 中 onEvent方法
2.开始识别的方法
private void start() {
Map params = new LinkedHashMap();
String event = null;
event = SpeechConstant.ASR_START; // 替换成测试的event
if (enableOffline) {
params.put(SpeechConstant.DECODER, 2);
}
// 基于SDK集成2.1 设置识别参数
params.put(SpeechConstant.ACCEPT_AUDIO_VOLUME, false);
// 请先使用如‘在线识别’界面测试和生成识别参数。 params同ActivityRecog类中myRecognizer.start(params);
// 复制此段能够自动检测错误
(new AutoCheck(getApplicationContext(), new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 100) {
AutoCheck autoCheck = (AutoCheck) msg.obj;
synchronized (autoCheck) {
String message = autoCheck.obtainErrorMessage(); // autoCheck.obtainAllMessage();
Log.e("message", message);
// txtLog.append(message + "\n");
; // 能够用下面一行替代,在logcat中查看代码
// Log.w("AutoCheckMessage", message);
}
}
}
}, enableOffline)).checkAsr(params);
String json = null; // 能够替换成本身的json
json = new JSONObject(params).toString(); // 这里能够替换成你须要测试的json
asr.send(event, json, null, 0, 0);
Log.e("message", json);
}
3.中止识别的方法
private void stop() {
Log.e("message", "中止识别:ASR_STOP");
asr.send(SpeechConstant.ASR_STOP, null, null, 0, 0); //
}
4.实现对语音识别的监听
implements EventListener
@Override
public void onEvent(String name, String params, byte[] data, int offset, int length) {
String logTxt = "name: " + name;
if (!isEnd && name.equals("asr.end")) {
isEnd = true;
}
if (isEnd && name.equals("asr.partial")) {
isEnd = false;
logTxt += " ;params :" + params;
try {
JSONObject jsonObject = new JSONObject(params);
String results_recognition = jsonObject.getString("results_recognition");
Toast.makeText(this, results_recognition, Toast.LENGTH_LONG).show();
Log.e("result", results_recognition);
} catch (JSONException e) {
e.printStackTrace();
}
}
if (name.equals(SpeechConstant.CALLBACK_EVENT_ASR_EXIT)) {
if (isClose==false)
start();
}
if (name.equals(SpeechConstant.CALLBACK_EVENT_ASR_PARTIAL)) {
if (params != null && params.contains("\"nlu_result\"")) {
if (length > 0 && data.length > 0) {
logTxt += ", 语义解析结果:" + new String(data, offset, length);
}
}
} else if (data != null) {
logTxt += " ;data length=" + data.length;
}
// printLog(logTxt);
Log.e("message1", logTxt);
}
5.注销
@Override
protected void onDestroy() {
super.onDestroy();
// 基于SDK集成5.2 退出事件管理器
// 必须与registerListener成对出现,不然可能形成内存泄露
asr.unregisterListener(this);
}
这样基本在线识别的功能是完成了,可是会发现不少的语句的识别度不是很高,这边的话,百度官方提供了语音识别词库,你能够在你的应用管理中心的应用详情里面设置你的语音识别词库这边只须要上传一个txt格式的文本文档
下面是示例,这样的话,就经过语音会优先识别你所想要的语句了
下一篇会写一个关于离线识别的代码