三个Demo我已经分别测通,但由于是android初学者,所以对代码的理解不深。根据官方的集成指南,我已经将语音识别和语音合成集成到一起。请问语音识别与语音唤醒能否共用一个onEvent函数?若不能,该怎样实现该功能?
@Override
public void onEvent(String name, String params, byte[] data, int offset, int length) {
if(name.equals(SpeechConstant.CALLBACK_EVENT_WAKEUP_SUCCESS)){
//唤醒成功
try {
JSONObject json = new JSONObject(params);
int errorCode = json.getInt("errorCode");
if(errorCode == 0){
//唤醒成功
text += "唤醒成功\n";
mContent.setText(text);
String word = json.getString("word");
if(word.equals("开始记录")){
Toast.makeText(this,"收到。正在为您启动引擎",Toast.LENGTH_SHORT).show();
speak("收到");
startRecog();
}
if(word.equals("停止记录")){
Toast.makeText(this,"停止记录,正在为您保存",Toast.LENGTH_SHORT).show();
speak("记录结束");
save();
}
} else {
//唤醒失败
alert("唤醒失败");
}
} catch (JSONException e) {
e.printStackTrace();
}
return ;
}
if(name.equals(SpeechConstant.CALLBACK_EVENT_WAKEUP_STOPED)){
//唤醒已停止
//alert("唤醒已停止");
text += "唤醒已停止\n";
mContent.setText(text);
return;
}
if(name.equals(SpeechConstant.CALLBACK_EVENT_ASR_READY)){
//引擎就绪,可以说话,一般在收到此事件后通过UI通知用户可以说话了
Toast.makeText(this,"语音识别引擎已就绪!",Toast.LENGTH_SHORT).show();
text += "语音识别就绪\n";
mContent.setText(text);
return;
}
if(name.equals(SpeechConstant.CALLBACK_EVENT_ASR_FINISH)){
//识别结束
text += "识别结束\n";
text += params;
mContent.setText(text);
return;
}
if(name.equals(SpeechConstant.CALLBACK_EVENT_ASR_PARTIAL)){
text += "部分结果回调";
text += params;
mContent.setText(text);
return;
}
}
语音唤醒是打包在语音识别离在线融合SDK(Android/iOS)中的子功能。
对的。
语音识别和唤醒本来就是在一起的吧.
我是分开用的,共用一个没试过 多看看官方Demo 看懂了就好集成了