当前位置: 首页 > 科技观察

科大讯飞语音识别集成

时间:2023-03-20 02:08:59 科技观察

源码介绍:集成科大讯飞的语音识别功能科大讯飞的优势是识别准确率高源码效果:源代码片段:packagecom.example.testmodel;.LinkedHashMap;importorg.json.JSONException;importorg.json.JSONObject;importandroid.app.Activity;importandroid.content.SharedPreferences;importandroid.os.Bundle;importandroid.os.Environment;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.EditText;importandroid.widget.TextView;importandroid.widget.Toast;importcom.iflytek.cloud.ErrorCode;importcom.iflytek.cloud.InitListener;importcom.iflytek.cloud.RecognizerListener;importcom.iflytek.cloud.RecognizerResult;importcom.iflytek.cloud.SpeechConstant;importcom.iflytek.cloud.SpeechError;importcom.iflytek.cloud.SpeechRecognizer;importcom.iflytek.cloud.ui.RecognizerDialog;importcom.iflytek.cloudenizer.ui.RecognizerDialog;publicclassMainActivityextendsActivity{privateTextViewmResult;privateSpeechRecognizermAt;//语音听写UIprivateRecognizerDialogmIatDialog;//使用HashMap存储听写结果privateHashMapmIatResults=newLinkedHashMap();privateEditTextmResultText;privateToastmToast;privateSharedPreferencesmSharedPreferences;//引擎类型privateStringmEngineType=SpeechConstant.TYPE_CLOUD/Language注意安装助手类ApkInstallermInstaller;privateintret=0;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mEngineType=SpeechConstant.TYPE_CLOUD;mResult=(TextView.findidViewById(R.textView1);mIat=SpeechRecognizer.createRecognizer(MainActivity.this,mInitListener);//初始化听写Dialog,如果只使用UI听写功能,则不需要创建SpeechRecognizer//使用UI听写功能,请参考注意事项sdk文件目录下的.txt,放置布局文件和图片资源mIatDialog=newRecognizerDialog(MainActivity.this,mInitListener);mSharedPreferences=getSharedPreferences("YOU",Activity.MODE_PRIVATE);mToast=Toast.makeText(这个,"",Toast.LENGTH_SHORT);mInstaller=newApkInstaller(MainActivity.this);}publicvoidstartRec(Viewv){mResult.setText(null);//清除显示内容mIatResults.clear();//设置参数setParam();booleanisShowDialog=mSharedPreferences.getBoolean("iat_show",true);if(isShowDialog){//显示听写对话框mIatDialog.setListener(mRecognizerDialogListener);mIatDialog.show();showTip("Pleasestartspeaking...");}else{//不显示听写对话框ret=mIat.startListening(mRecognizerListener);if(ret!=ErrorCode.SUCCESS){showTip("听写失败,错误代码:"+ret);}else{showTip("请开始说话...");}}}/***听写监听器*/privateRecognizerListenermRecognizerListener=newRecognizerListener(){@OverridepublicvoidonBeginOfSpeech(){//这个回调的意思是:sdk内部录音器准备好了,用户可以开始语音输入了showTip("开始说话");}@OverridepublicvoidonError(SpeechError){//Tips://错误码:10118(你没有说话),可能是录音机权限被禁用,需要提示用户启用e应用程序的录音权限。//如果使用本地功能(Yuji),需要提示用户开启Yuji的录音权限。showTip(error.getPlainDescription(true));}@OverridepublicvoidonEndOfSpeech(){//该回调表示:检测到语音结束点,进入识别流程,不再接受语音输入showTip("end说话”);}@OverridepublicvoidonResult(RecognizerResultresults,booleanisLast){//Log.d(TAG,results.getResultString());printResult(results);if(isLast){//TODO***结果}}@OverridepublicvoidonVolumeChanged(intvolume,byte[]data){showTip("当前说话音量:"+volume);//Log.d(TAG,"返回音频数据:"+data.length);}@OverridepublicvoidonEvent(inteventType,intarg1,intarg2,Bundleobj){//以下代码用于获取与云端的sessionid。当出现业务错误时,将sessionid提供给技术支持人员,可用于查询session日志,定位错误原因。//如果使用本地能力,sessionid为null//if(SpeechEvent.EVENT_SESSION_ID==eventType){//Stringsid=obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID);//Log.d(TAG,"sessionid="+sid);//}}};/***听写UI监听*/privateRecognizerDialogListenermRecognizerDialogListener=newRecognizerDialogListener(){publicvoidonResult(RecognizerResultresults,booleanisLast){printResult(results);}/***识别回调错误*/公共voidonError(SpeechError){showTip(error.getPlainDescription(true));}};privatevoidshowTip(finalStringstr){mToast.setText(str);mToast.show();}privatevoidprintResult(RecognizerResultresults){Stringtext=JsonParser.parseIatResult(results.getResultString());Stringsn=null;//读取json结果中的sn字符串}mIatResults.put(sn,text);StringBufferresultBuffer=newStringBuffer();for(Stringkey:mIatResults.keySet()){resultBuffer.append(mIatResults.get(key));}mResult.setText(resultBuffer.toString());//mResult.setSelection(mResultText.length());}/***初始化监听器*/privateInitListenermInitListener=newInitListener(){@OverridepublicvoidonInit(intcode){//Log.d(TAG,"SpeechRecognizerinit()code="+code);if(code!=ErrorCode.SUCCESS){//showTip("初始化failed,errorcode:"+code);}}};/***参数设置**@paramparam*@return*/publicvoidsetParam(){//清除参数mIat.setParameter(SpeechConstant.PARAMS,null);//settingDictationenginemIat.setParameter(SpeechConstant.ENGINE_TYPE,mEngineType);//设置返回结果格式mIat.setParameter(SpeechConstant.RESULT_TYPE,"json");Stringlag=mSharedPreferences.getString("iat_language_preference","mandarin");if(lag.equals("en_us")){//设置语言mIat.setParameter(SpeechConstant.LANGUAGE,"en_us");}else{//设置语言mIat.setParameter(SpeechConstant.LANGUAGE,"zh_cn");//SetlanguageRegionmlat.setParameter(SpeechConstant.ACCENT,lag);}//设置语音前端点:静音超时,即用户多长时间不说话将被视为超时mIat.setParameter(SpeechConstant.VAD_BOS,mSharedPreferences.getString("iat_vadbos_preference","4000"));//设置语音后台端点:当后台端点静音检测时时间,即用户停止说话多长时间,认为没有更多输入,自动停止录音mIat.setParameter(SpeechConstant.VAD_EOS,mSharedPreferences.getString("iat_vadeos_preference","1000"));//设置标点符号,设置为“0”返回不带标点的结果,设置为“1”返回带标点的结果mIat.setParameter(SpeechConstant.ASR_PTT,mSharedPreferences.getString("iat_punc_preference","1"));//设置音频保存路径,保存音频格式支持pcm,wav,设置路径到sd卡,注意WRITE_EXTERNAL_STORAGE权限//注意:AUDIO_FORMAT参数需要更新版本才能生效)+"/msc/iat.wav");//设置是否对听写结果进行动态修正,如果为“1”则在听写过程中动态递增返回结果,否则只有在听写结束后才返回最终结果//注意:该参数只对在线d有效ictation临时mIat.setParameter(SpeechConstant.ASR_DWA,mSharedPreferences.getString("iat_dwa_preference","0"));}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.getMenuInflater().inflate(.menu.main,menu);返回真e;}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){//Handleactionbaritemclickshere.Theactionbarwill//automaticallyhandleclicksontheHome/Upbutton,solong//asyouspecifyaparentactivityinAndroidManifest.xml.intid=item.getItemId();if(id==R.id.action_settings){returntrue;}returnsuper.onOptionsItemSelected(item);}}下载地址:http://down.51cto.com/data/2109303