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


下面开始具体步骤

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


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

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

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

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

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

public class MyApplication extends Application{@Overridepublic void onCreate() {super.onCreate();//注意这里的“=”不能少SpeechUtility.createUtility(getApplicationContext();, SpeechConstant.APPID + "=你的APPID");}}

6. 在启动语音识别模块添加如下代码,这里的result就是语音转换的结果字符串,可以通过iatDialog.setParameter()配置语言,间隔时间(即多长时间不说话时视为结束)等,具体可参考官网文档。

private void changeIntoText() {// ②初始化有交互动画的语音识别器iatDialog = new RecognizerDialog(SearchMusicActivity.this, mInitListener);//③设置监听,实现听写结果的回调int a = 1+2;iatDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");iatDialog.setParameter(SpeechConstant.ACCENT, "mandarin");iatDialog.setListener(new RecognizerDialogListener() {String resultJson = "[";//放置在外边做类的变量则报错,会造成json格式不对(?)@Overridepublic void onResult(RecognizerResult recognizerResult, boolean isLast) {System.out.println("-----------------   onResult   -----------------");if (!isLast) {resultJson += recognizerResult.getResultString() + ",";} else {resultJson += recognizerResult.getResultString() + "]";}if (isLast) {//解析语音识别后返回的json格式的结果Gson gson = new Gson();List<DictationResult> resultList = gson.fromJson(resultJson,new TypeToken<List<DictationResult>>() {}.getType());String result = "";for (int i = 0; i < resultList.size() - 1; i++) {result += resultList.get(i).toString();}et_content.setText(result);//获取焦点et_content.requestFocus();//将光标定位到文字最后,以便修改et_content.setSelection(result.length());}}@Overridepublic void onError(SpeechError speechError) {//自动生成的方法存根speechError.getPlainDescription(true);}});//开始听写,需将sdk中的assets文件下的文件夹拷入项目的assets文件夹下(没有的话自己新建)iatDialog.show();}private InitListener mInitListener = new InitListener() {@Overridepublic void onInit(int code) {Log.d(TAG, "SpeechRecognizer init() code = " + code);if (code != ErrorCode.SUCCESS) {Toast.makeText(SearchMusicActivity.this, "初始化失败,错误码:" + code, Toast.LENGTH_SHORT).show();}}};

Android二次开发之科大讯飞语音输入相关推荐

  1. 科大讯飞语音输入启动语音输入…错误码 20006 错误,已解决

    文章目录 科大讯飞语音输入启动语音输入-错误码 20006 错误 问题(如图) 解决方法 原因分析 科大讯飞语音输入启动语音输入-错误码 20006 错误 遇到该问题查了好多资料,最后发现是我的权限没 ...

  2. 基于C#的AutoCAD二次开发之获取用户输入信息、选择集、访问CAD内部命令

    基于C#的AutoCAD二次开发之获取用户输入信息.选择集.访问CAD内部命令 在CAD创建图形对象时,经常需要和用户进行交互,例如:直线创建时需要用户输入起点和终点(或长度)信息,复制对象时需要指定 ...

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

    作者 | Pek_KuaiJia 责编 | 夕颜 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 随着目前用户需求的精细化和智能化,很多时候我们需要在App内集成语音 ...

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

    作者 | Pek_KuaiJia 责编 | 夕颜 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 随着目前用户需求的精细化和智能化,很多时候我们需要在App内集成语音 ...

  5. 手机百度输入法环境:android 1.6,百度手机输入法Android 5.1版—新增粤语语音输入...

    近日,百度手机输入法发布了全新安卓5.1版,主打离线语音.粤语语音.智能英文.英文单词手写.全新皮肤等功能,获得了不少用户的好评.据了解,百度手机输入法安卓5.1版在原5.0版简约风格的基础上更加专注 ...

  6. 谷歌眼镜GDK开发指南之语音输入

    原文链接:http://bbs.seacat.cn/thread-901-1-1.html Glass可以让你声明语音命令,从ok glass 语音菜单中启动你的Glassware. 你也可以调用语音 ...

  7. 基于海康威视网络摄像机的Android二次开发

    最近的一次开发工作中,需要开发一个app里面包含海康威视摄像机的监控和控制部分,通过各种网络资源,终于实现的所需要的功能,下面是我开发过程中的监控部分的代码和步骤,分享给大家,希望有所帮助,同时也是对 ...

  8. 苹果语音输入最新资讯

    ​据 The Information 报道,微软招聘了此前于苹果负责 Siri 相关业务的 Bill Stasior 担任与 AI 相关的职位. 美国和欧洲多国监管机构正在对谷歌.苹果和亚马逊就涉嫌侵 ...

  9. 长话无需短说 讯飞输入法超长语音输入不限时

    原标题:长话无需短说 讯飞输入法超长语音输入不限时 对用户来说,衡量语音输入好坏无外乎两个指标,一个是输入准确率,另一个是识别速度.搭载自然语言理解(NLU)优化模型的讯飞输入法语音识别率提升至98% ...

最新文章

  1. 基于fedora23的karora23初始版本安装crt信赖libpng升级glibc造成系统无法进入...
  2. HDU1576 A/B (解法二)【试探法】
  3. W/System.err: at android.view.ViewConfiguration.get(ViewConfiguration.java:369)
  4. 【maven】Missing artifact javax.jms:jms:jar:1.1:compile
  5. 华为HCIE实验考试险过,考试真题分享、答题经验分享
  6. 2020ICPC(小米邀请赛1) - Phone Network(线段树优化递推)
  7. 编译安装 zbar 时两次 make 带来的惊喜
  8. Kaggle新赛:通过音频识别鸟类和青蛙物种
  9. shell编程中配置文件的使用
  10. CopyTranslator v0.0.8 Zouwu RC1 发布
  11. 参加了博客园北京俱乐部4月4日的活动-Nice
  12. 够快云库轻松解决文件复制速度过慢
  13. xy坐标转换度分秒_经纬度转换XY坐标软件
  14. 田申:《个人信息安全规范》的理解与初探
  15. 以OPC PowerTool 连接iFix与KEPWARE
  16. vue-amap 实现定位+跑步路程+跑步时间计算功能
  17. c语言 m个数 取n个数,本题要求编写程序,根据公式Cnm=m!(n−m)!n!算出从n个不同元素中取出m个元素(m≤n)的组合数。...
  18. TOEFL-Write-课堂笔记
  19. Android camera createCaptureSession分析
  20. JAVA五子棋AI(人机对战 颜色选择 悔棋等 可直接使用)

热门文章

  1. 子元素宽度如何撑开父元素宽度
  2. Unity 报错之 InvalidProgramException: Invalid IL code in CC_Ctrl:getFixByPlatForm ():IL_0008: ldc.i4.5
  3. 将土地使用和土地覆盖的转变与其在亚马逊的生态影响联系起来
  4. 对于脉冲信号发生器的一些总结
  5. ssh连接mysql数据库导入_ssh向数据库导入数据库
  6. Rrs与rrs/Rrs直观理解/菲涅尔反射
  7. 右键菜单删除本界面,QMenu::exec报错
  8. python中1%7是多多少_再传捷报!原子同学优秀学员Python成绩位列全国前1%!
  9. 服务器光信号闪红灯是什么意思,wifi光信号闪红灯什么意思
  10. 离服务器很近就是没有wifi信号为什么,卧室没有wifi信号怎么办