语音识别技术■教你用 Android 做二次开发,识别率达到科大讯飞语音输入水平 | 原力计划( 二 )


语音识别技术■教你用 Android 做二次开发,识别率达到科大讯飞语音输入水平 | 原力计划
本文插图
在启动语音识别模块添加代码
这里的result就是语音转换的结果字符串 , 可以通过iatDialog.setParameter配置语言 , 间隔时间(即多长时间不说话时视为结束)等 , 具体可参考官网文档 。
1private void changeIntoText {23 // ②初始化有交互动画的语音识别器4 iatDialog = new RecognizerDialog(SearchMusicActivity.this, mInitListener);5 //③设置监听 , 实现听写结果的回调6 int a = 1+2;78 iatDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");9 iatDialog.setParameter(SpeechConstant.ACCENT, "mandarin");1011 iatDialog.setListener(new RecognizerDialogListener {12 String resultJson = "[";//放置在外边做类的变量则报错 , 会造成json格式不对(?)1314 @Override15 public void onResult(RecognizerResult recognizerResult, boolean isLast) {16 System.out.println("----------------- onResult -----------------");17 if (!isLast) {18 resultJson += recognizerResult.getResultString() + ",";19 } else {20 resultJson += recognizerResult.getResultString() + "]";21 }2223 if (isLast) {24 //解析语音识别后返回的json格式的结果25 Gson gson = new Gson;26 List resultList = gson.fromJson(resultJson,27 new TypeToken> {28 }.getType);29 String result = "";30 for (int i = 0; i < resultList.size - 1; i++) {31 result += resultList.get(i).toString;32 }3334 et_content.setText(result);35 //获取焦点36 et_content.requestFocus;37 //将光标定位到文字最后 , 以便修改38 et_content.setSelection(result.length);39 }40 }4142 @Override43 public void onError(SpeechError speechError) {44 //自动生成的方法存根45 speechError.getPlainDescription(true);46 }47 });48 //开始听写 , 需将sdk中的assets文件下的文件夹拷入项目的assets文件夹下(没有的话自己新建)49 iatDialog.show;50 }5152 private InitListener mInitListener = new InitListener {53 @Override54 public void onInit(int code) {55 Log.d(TAG, "SpeechRecognizer init code = " + code);56 if (code != ErrorCode.SUCCESS) {57 Toast.makeText(SearchMusicActivity.this, "初始化失败 , 错误码:" + code, Toast.LENGTH_SHORT).show;58 }59 }60 };


推荐阅读