语音识别技术最近貌似是越来越火了。再前几天科大讯飞还刚刚发布了讯飞语点——一个据说要挑战siri的应用。……好吧,对这些的东西讨论要说起来就多了。

本文主要讲如何在自己的android应用中集成语音识别技术——自然,是使用科大讯飞的sdk。

讯飞的语音sdk是需要申请的,地址是:http://dev.voicecloud.cn/developer.php?vt=1 。申请一个讯飞的开发者账号,然后申请一个appid,申请的时候需要填写开发者信息和你的应用的信息。

申请之后经过审核通过,会得到一个appid,这个是在使用语音服务时需要用到的。(笔者感觉申请还是比较容易通过的,简单地填写一下就通过了。速度也很快,我在晚上十一点多申请的,到第二天早上九点多就收到审核通过的邮件。个人感觉这个审核只是为了防止恶意使用,毕竟语音服务是要使用讯飞的服务器资源的。)

申请到appid之后就可以下载SDK了,然后使用语音服务了。

以下我试用的过程,(点击button,弹出语音框,说完之后将识别的结果显示在EditText中):

在eclipse里新建一个android工程

导入讯飞的语音jar包

讯飞的服务是需要一堆权限的,在manifest.xml中加入

分别为:通过麦克风录音、联网、获取网络信息状态、获取wifi状态、改变网络状态如是否能联网、访问电话状态

在main.xml中添加一个EditText和一个Button,如下

<?xml version="1.0" encoding="utf-8"?>

然后在MainActivity中编写代码实现了

通过阅读讯飞给的文档,可以发现标准的识别控件是RecognizerDialog——是一个Dialog的子类,所以我们是可以在Activity中通过showDialog(int)方法来调用它的。

重写Activity的方法

@Overrideprotected Dialog onCreateDialog(int id) {}

在其中创建并设置好一个RecognizerDialog即可。

创建RecognizerDialog方法为

RecognizerDialog recognizerDialog = newRecognizerDialog(

MainActivity.this, "appid=1234567");//这里应该写从科大讯飞申请到的appid

(其中appid应该写自己从讯飞申请到的appid,由于协议的问题,我不便把自己申请的id公开,所以这里用了1234567来代替。根据讯飞的说明,非法的appid是不能使用语音服务的,但是我用随机数字试验了一下,居然也是能用的,不知道是不是BUG。)

官方的文档:

然后需要设置识别参数

recognizerDialog.setEngine("sms", null, null);

第一个参数“sms”表示为请求的服务为“语音识别”。后两个参数暂时设为null就好。

官方文档:

最后还需给recognizerDialog设置一个listener,回调接口用以获取结果,

recognizerDialog.setListener(RecognizerDialogListener listener)的参数为RecognizerDialogListener接口,实现此接口要重写两个方法:onResults(ArrayList results,boolean isLast)和onEnd(SpeechError error)。用以获取和处理结果。

我的实现为直接写了一个匿名类:

recognizerDialog.setListener(newRecognizerDialogListener() {

@Overridepublic void onResults(ArrayListresults,booleanarg1) {

StringBuffer result= newStringBuffer();for(RecognizerResult r : results) {

result.append(r.text);

}

editText.setText(result.toString());

}

@Overridepublic voidonEnd(SpeechError arg0) {

}

});

然后将此RecognizerDialog返回即可。

完整的MainActivity代码:

importcom.iflytek.speech.RecognizerResult;importcom.iflytek.speech.SpeechError;importcom.iflytek.ui.RecognizerDialog;importcom.iflytek.ui.RecognizerDialogListener;public class MainActivity extendsActivity {

EditText editText= null;

Button startButton= null;

@Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.main);

editText=(EditText) findViewById(R.id.editText);

startButton=(Button) findViewById(R.id.button_start);

startButton.setOnClickListener(newOnClickListener() {

@Overridepublic voidonClick(View v) {

showDialog(1);

}

});

}

@Overrideprotected Dialog onCreateDialog(intid) {

RecognizerDialog recognizerDialog= newRecognizerDialog(

MainActivity.this, "appid=1234567");//这里应该写从科大讯飞申请到的appid

recognizerDialog.setEngine("sms", null, null);

recognizerDialog.setListener(newRecognizerDialogListener() {

@Overridepublic void onResults(ArrayListresults,booleanarg1) {

StringBuffer result= newStringBuffer();for(RecognizerResult r : results) {

result.append(r.text);

}

editText.setText(result.toString());

}

@Overridepublic voidonEnd(SpeechError arg0) {

}

});returnrecognizerDialog;

}

}

程序在真机运行截图,经过检验,科大讯飞的识别率还是很高的。

在应用中集成科大讯飞的语音识别技术相关推荐

  1. 语音识别技术原理是什么 讯飞语音识别技术特点介绍【详解】

    语音识别技术原理简介 自动语音识别技术(Auto Speech Recognize,简称ASR)所要解决的问题是让计算机能够"听懂"人类的语音,将语音中包含的文字信息"提 ...

  2. 大数据24小时:地质局发布地质大数据共享平台,科大讯飞将语音识别植入腾讯小Q机器人

    地质调查局发布首个地质大数据共享服务平台"地质云":华为与华制智能合作,共同发布制造业解决方案"智造云":科大讯飞与腾讯联手,将语音识别技术植入腾讯小Q机器人- ...

  3. AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能

    在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...

  4. AngularJS进阶 十九 在AngularJS应用中集成百度地图实现定位功能

    在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...

  5. 盘点语音识别技术在人工智能中的应用

    语音是人类最自然的交互方式.计算机发明之后,让机器能够"听懂"人类的语言,理解语言中的内在含义,并能做出正确的回答就成为了人们追求的目标.这个过程中主要涉及3种技术,即自动语音识别 ...

  6. 关于在呼叫中心业务中应用语音识别技术的探讨

    关于在呼叫中心业务中应用语音识别技术的探讨 摘要:本文首先给出了语音技术的应用现状,接着对语音识别技术在呼叫中心中可应用可尝试的业务进行探讨,最后提出呼叫中心业务中应用语音识别技术的虚拟CSR概念. ...

  7. 科大讯飞刘聪:如何持续保持语音识别技术的领先

    2020科大讯飞全球1024开发者节今天正式拉开帷幕,伴随着AI的发展,我们得以更全面和细致地洞察人们的生活习惯,并为人们提供更加智能和便捷的服务.在人工智能的应用场景中,最重要的一个就是语音交互.针 ...

  8. 图像处理、语音处理的应用及前沿技术_人工智能,虚拟技术,语音识别技术在我们的生活中...

    人工智能(Artificial Intelligence),英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. 人工智能是计算机科学的一个分支, ...

  9. 语音识别技术在智能家居中的应用有哪些?

    [导读]自动语音识别(AutomaticSpeechRecognition)技术是信息技术中人机接口的关键技术,是一种让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高级技术. 认识语音识别 ...

最新文章

  1. 智能车竞赛云上比赛第二天
  2. 你知道我今天为什么来公司上班吗?
  3. wireshark 抓包再利用TCP socket发送包里的payload是可以实现登陆的
  4. ConvertUtil-数据类型转换的工具类
  5. 初识用.NET Remoting来开发分布式应用 (转载)
  6. 好程序员分享SpringBoot须掌握的注解
  7. vue-router之路由属性配置说明(十)
  8. CVE-2021-40444 0 day漏洞利用
  9. BSEG和BSIS、BSAS、BSID、BSAD、BSIK、BSAK六个表的关系
  10. 创新式开发探索(一) —— 开篇
  11. Angular自学笔记(?)ContentChild和ContentChildren
  12. 关于Webapp的注意事项
  13. container_of深入理解
  14. 官方正式预热华为Mate40系列发布盛典:余承东称还有新功能
  15. 前端—每天5道面试题(5)
  16. 在html中播放链接视频,如何在我的python脚本中使用HTML5在网站链接中播放视频?...
  17. Scrapy爬虫框架第五讲(linux环境)【download middleware用法】
  18. oracle中使用java存贮过程
  19. python实现GPS经纬度转换
  20. 【虚拟化数据恢复】KVM虚拟机误删除数据恢复案例

热门文章

  1. QTP自动化测试-点滴-步骤
  2. Django表单提交数据与网页跳转
  3. C#设计模式---模板方法模式(Template Method Pattern)
  4. JavaScript--数据结构算法之链表
  5. django一对多 增 删 改 查
  6. NGUI中的Table自定义排序
  7. phpMailer在CentOS 6.5下无法发送邮件的解决办法
  8. 在mc中直接加aswing组件,该组件还需最后用validate()方法
  9. 男人动心的3种傻女孩[转载]
  10. CCF201903-4 消息传递接口(100分)【模拟】