当前位置: 移动技术网 > IT编程>移动开发>Android > Android语音识别技术详解及实例代码

Android语音识别技术详解及实例代码

2019年07月24日  | 移动技术网IT编程  | 我要评论

上海商铺转让,科比 布莱恩特,山吹绿子

   今天从网上找了个例子实现了语音识别,个人感觉挺好玩的,就把代码贴出来与大家分享下:

         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 语音识别技术的资料整理,后续继续补充相关资料谢谢大家对本站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网