效果图:
参考资料
http://blog.csdn.net/imhxl/article/details/50854146
项目里要用语音听写,想到了科大讯飞,参考上面的资料完成了最简单的在线有UI的语音识别,后面想要改成离线也可以使用。参考下面的文章
http://blog.csdn.net/q4878802/article/details/47834601
下载好语记和离线资源之后,想要改成有UI的RecognizerDialog离线语音听写,但是没成功,试了一下没有UI的SpeechRecognizer,发现可以,只需在设置参数的时候加上一句
recognizer.setParameter(SpeechConstant.ENGINE_TYPE,SpeechConstant.TYPE_LOCAL);//调用语记接口
就可以使用了。可能是RecognizerDialog带有UI界面,已经默认写成在线的了吧
下面只贴出主活动的代码,其他参考上面的资料
package com.example.administrator.voicerecognition;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.iflytek.cloud.ErrorCode;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.RecognizerListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechRecognizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;
public class MainActivity extends AppCompatActivity {
private Button btn_voiceRec,btn_voiceRecOffline;
private RecognizerDialog iatDialog=null;
private SpeechRecognizer recognizer=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SpeechUtility.createUtility(this, "appid=xxx");//替换为实际的appid
btn_voiceRec = (Button) findViewById(R.id.btn_voiceRec);
btn_voiceRec.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (iatDialog!=null){
iatDialog.cancel();
iatDialog.destroy();
}
startDialogOnline();
}
});
btn_voiceRecOffline= (Button) findViewById(R.id.btn_voiceRecOffline);
btn_voiceRecOffline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// if (recognizer!=null){
// recognizer.cancel();
// recognizer.destroy();
// }
startNoDialogOffline();
}
});
}
/**
* 初始化监听器。
*/
private InitListener mInitListener = new InitListener() {
@Override
public void onInit(int code) {
Log.d("tag", "SpeechRecognizer init() code = " + code);