欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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" />       

        运行后效果:

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

    点击开始语音按钮,然后开始说话(这里要保证手机的网路是打开的):

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

      正在等待云端数据,由于我这是2g的卡,等了好长时间还是加载不下来,等回公司了用公司的wifi试试,如果得到云端数据,就会通过toast方式打印出来的。

以上就是对android 语音识别技术的资料整理,后续继续补充相关资料谢谢大家对本站的支持!