1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 教你用Android做二次开发 识别率达到科大讯飞语音输入水平 | 原力计划

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

时间:2023-12-03 11:06:11

相关推荐

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

作者|Pek_KuaiJia

责编 | 夕颜

头图 |CSDN 下载自视觉中国

出品 | CSDN(ID:CSDNnews)

随着目前用户需求的精细化和智能化,很多时候我们需要在App内集成语音输入模块,为用户提供语音输入的功能。而科大讯飞语音作为行业内翘楚,识别结果相对准确,且讯飞自带一套识别动画,适合快速搭建模块,废话不多说,先看下效果图。

下面开始具体步骤

申请key

百度搜索讯飞开放平台,注册账号并实名认证,然后在产品中找到语音听写,可以领取90天试用包,商用需付费。接着打开控制台,添加你需要使用讯飞SDK的应用,注意保存这里的APPID,这个就是之后需要配置到APP中。

下载SDK

在官网中找到资料库,选择你刚才添加的应用,下载在线语音识别SDK

将加压所得文件夹中libs下的Msc.jar文件复制到项目中的libs下

如果没有就新建一个,复制完成后,右击Msc.jar文件,选择add as library,这里后面获取语音识别结果需要解析json,由于我使用的是gson,所以一并导入了;接着将下载下来的文件夹libs下两个文件夹复制到你项目目录的src/main/jniLibs,如果没有该文件夹就新建一个;最后在你项目app目录下新建assets文件夹,将下载下来的文件夹中assets中文件夹复制进去,至此,文件全部导入完成,放个整体项目文件结构图。

为语音听写添加权限

在mainfest.xml添加即可,注意Android6.0以上,读取麦克风和获取手机识别码权限需要动态申请。

1<uses-permissionandroid:name="android.permission.INTERNET"/>2<!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限-->3<uses-permissionandroid:name="android.permission.RECORD_AUDIO"/>4<!--读取网络信息状态-->5<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>6<!--获取当前wifi状态-->7<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>8<!--允许程序改变网络连接状态-->9<uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/>10<!--读取手机信息权限-->11<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>

配置APPID

在APP的Application的onCreate()配置如下代码,如果没有application,也可以在需要用到这个功能的Activity的onCreate()添加,注意“=”不能少

1publicclassMyApplicationextendsApplication{23@Override4publicvoidonCreate(){5super.onCreate();6//注意这里的“=”不能少7SpeechUtility.createUtility(getApplicationContext();,SpeechConstant.APPID+"=你的APPID");89}1011}

在启动语音识别模块添加代码

这里的result就是语音转换的结果字符串,可以通过iatDialog.setParameter()配置语言,间隔时间(即多长时间不说话时视为结束)等,具体可参考官网文档。

1privatevoidchangeIntoText(){23//②初始化有交互动画的语音识别器4iatDialog=newRecognizerDialog(SearchMusicActivity.this,mInitListener);5//③设置监听,实现听写结果的回调6inta=1+2;78iatDialog.setParameter(SpeechConstant.LANGUAGE,"zh_cn");9iatDialog.setParameter(SpeechConstant.ACCENT,"mandarin");1011iatDialog.setListener(newRecognizerDialogListener(){12StringresultJson="[";//放置在外边做类的变量则报错,会造成json格式不对(?)1314@Override15publicvoidonResult(RecognizerResultrecognizerResult,booleanisLast){16System.out.println("-----------------onResult-----------------");17if(!isLast){18resultJson+=recognizerResult.getResultString()+",";19}else{20resultJson+=recognizerResult.getResultString()+"]";21}2223if(isLast){24//解析语音识别后返回的json格式的结果25Gsongson=newGson();26List<DictationResult>resultList=gson.fromJson(resultJson,27newTypeToken<List<DictationResult>>(){28}.getType());29Stringresult="";30for(inti=0;i<resultList.size()-1;i++){31result+=resultList.get(i).toString();32}3334et_content.setText(result);35//获取焦点36et_content.requestFocus();37//将光标定位到文字最后,以便修改38et_content.setSelection(result.length());39}40}4142@Override43publicvoidonError(SpeechErrorspeechError){44//自动生成的方法存根45speechError.getPlainDescription(true);46}47});48//开始听写,需将sdk中的assets文件下的文件夹拷入项目的assets文件夹下(没有的话自己新建)49iatDialog.show();50}5152privateInitListenermInitListener=newInitListener(){53@Override54publicvoidonInit(intcode){55Log.d(TAG,"SpeechRecognizerinit()code="+code);56if(code!=ErrorCode.SUCCESS){57Toast.makeText(SearchMusicActivity.this,"初始化失败,错误码:"+code,Toast.LENGTH_SHORT).show();58}59}60};

【end】◆有奖征文◆推荐阅读,5种将死的编程语言检测、量化、追踪新冠病毒,基于深度学习的自动CT图像分析有多靠谱?GitHub 接连封杀开源项目惹众怒,CEO 亲自道歉!智能合约编写之 Solidity 的设计模式低学历、文科出身,我如何从月薪不到 3000 逆袭为大厂高薪程序员?从提取层、处理层、基础结构入手,带你了解Spark和Kafka!你点的每个“在看”,我都认真当成了AI

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。