Android语音识别技术详解及实例代码
程序员文章站
2024-03-06 12:11:19
今天从网上找了个例子实现了语音识别,个人感觉挺好玩的,就把代码贴出来与大家分享下:
...
今天从网上找了个例子实现了语音识别,个人感觉挺好玩的,就把代码贴出来与大家分享下:
android中主要通过recognizerintent来实现语音识别,其实代码比较简单,但是如果找不到设置,就会抛出异常activitynotfoundexception,所以我们需要捕捉这个异常。而且语音识别在模拟器上是无法测试的,因为语音识别是访问google云端数据,所以如果手机的网络没有开启,就无法实现识别声音的!一定要开启手机的网络,如果手机不存在语音识别功能的话,也是无法启用识别!
下面是recognizerintentactivity中的代码:
public class recognizerintentactivity extends activity { private button btnreconizer; private static final int voice_recognition_request_code = 1234; @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.reconizer); btnreconizer=(button) this.findviewbyid(r.id.btnrecognizer); btnreconizer.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { // todo auto-generated method stub try{ //通过intent传递语音识别的模式,开启语音 intent intent=new intent(recognizerintent.action_recognize_speech); //语言模式和*模式的语音识别 intent.putextra(recognizerintent.extra_language_model, recognizerintent.language_model_free_form); //提示语音开始 intent.putextra(recognizerintent.extra_prompt, "开始语音"); //开始语音识别 startactivityforresult(intent, voice_recognition_request_code); }catch (exception e) { // todo: handle exception e.printstacktrace(); toast.maketext(getapplicationcontext(), "找不到语音设备", 1).show(); } } }); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { // todo auto-generated method stub //回调获取从谷歌得到的数据 if(requestcode==voice_recognition_request_code && resultcode==result_ok){ //取得语音的字符 arraylist<string> results=data.getstringarraylistextra(recognizerintent.extra_results); string resultstring=""; for(int i=0;i<results.size();i++){ resultstring+=results.get(i); } toast.maketext(this, resultstring, 1).show(); } super.onactivityresult(requestcode, resultcode, data); } }
其主要原理就是将语音发送到google云端,然后云端处理,匹配相应的数据,发送到客户端。
最后不要忘记,在manifest中加入网络访问权限:
<uses-permission android:name="android.permission.internet" />
运行后效果:
点击开始语音按钮,然后开始说话(这里要保证手机的网路是打开的):
正在等待云端数据,由于我这是2g的卡,等了好长时间还是加载不下来,等回公司了用公司的wifi试试,如果得到云端数据,就会通过toast方式打印出来的。
以上就是对android 语音识别技术的资料整理,后续继续补充相关资料谢谢大家对本站的支持!