Android语音识别--->>RecongnizerIntent实现
程序员文章站
2022-06-22 12:22:24
首先,咱得先说下注意点: Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到设置,就会抛出异常 ActivityNotFoundException,所以我们需要捕捉这个异常。而且语音识别在模拟器上是无法测试的,因为语音识别是访问google 云端 ......
首先,咱得先说下注意点:
Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到设置,就会抛出异常 ActivityNotFoundException,所以我们需要捕捉这个异常。而且语音识别在模拟器上是无法测试的,因为语音识别是访问google 云端数据,所以如果手机的网络没有开启,就无法实现识别声音的!一定要开启手机的网络,如果手机不存在语音识别功能的话,也是无法启用识别,我的话用的是那个科大的某某飞的语音软件,一运行就可以自动调用这个软件进行语音识别。
RecognizerIntent的一些Summary(在Android API中也可以查到):
下面可以查下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 }
这样的结合就可以实现语音识别了。