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

Android语音识别--->>RecongnizerIntent实现

程序员文章站 2022-06-22 12:22:24
首先,咱得先说下注意点: Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到设置,就会抛出异常 ActivityNotFoundException,所以我们需要捕捉这个异常。而且语音识别在模拟器上是无法测试的,因为语音识别是访问google 云端 ......

首先,咱得先说下注意点:

    Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到设置,就会抛出异常 ActivityNotFoundException,所以我们需要捕捉这个异常。而且语音识别在模拟器上是无法测试的,因为语音识别是访问google 云端数据,所以如果手机的网络没有开启,就无法实现识别声音的!一定要开启手机的网络,如果手机不存在语音识别功能的话,也是无法启用识别,我的话用的是那个科大的某某飞的语音软件,一运行就可以自动调用这个软件进行语音识别。

 RecognizerIntent的一些Summary(在Android API中也可以查到):

Android语音识别--->>RecongnizerIntent实现

下面可以查下Android的这个类RecognizerIntent的用法,然后我们开始使用Intent传递消息

 1  try{  
 2                 //通过Intent传递语音识别的模式,开启语音  
 3                 Intent intent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
 4                 //语言模式和*模式的语音识别  
 5                 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);  
 6                 //提示语音开始  
 7                 intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "开始语音");  
 8                 //开始语音识别  
 9                 startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);  
10                 }catch (Exception e) {  
11                     // TODO: handle exception  
12                     e.printStackTrace();  
13                     Toast.makeText(getApplicationContext(), "找不到语音设备", 1).show();  
14                 }  

作为一个使用的模块使用。

主要是先使用
RecognizerIntent.ACTION_RECOGNIZE_SPEECH  开启语音
然后在可以切换语音模式和*模式
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
然后开始语音识别:
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);  
主要的过程就是如上所示了,自然还需要回调用户语音的数据。
 1 @Override  
 2     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
 3         // TODO Auto-generated method stub  
 4         //回调获取从google得到的数据   
 5         if(requestCode==VOICE_RECOGNITION_REQUEST_CODE && resultCode==RESULT_OK){  
 6             //获得语音输入的字符  
 7             ArrayList<String> results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);  
 8               //获得需要的字符
 9             String resultString="";  
10             for(int i=0;i<results.size();i++){  
11                 resultString+=results.get(i);  
12             }  
13             Toast.makeText(this, resultString, 1).show();  
14         }  
15         super.onActivityResult(requestCode, resultCode, data);  
16     }  

这样的结合就可以实现语音识别了。