Android SpeechRecognizer语音识别

来源:互联网 发布:万人迷网络电话软件 编辑:程序博客网 时间:2024/04/30 02:39

在Cupcake中,Android引入了对语音识别的支持。语音识别主要位于android.speech包中,主要的类包括SpeechRecognizer、RecognitionService、RecognizerIntent、RecognizerResultsIntent、RecognitionListener等类和接口。

SpeechRecognizer提供了接入语音识别服务的接口,下面是SpeechRecognizer的常用方法:

    createSpeechRecognizer()    //创建语音识别器
        setRecognitionListener()    //设置监听器
        startListening()    //开始语音识别
        stopListening()    //结束语音识别

语音识别要求"android.permission.RECORD_AUDIO"权限。

为了进行语音识别,首先需要发布一个语音识别的Activity,然后系统会启动语音识别引擎,并对用户的语音进行处理,处理的结果将会通过onActivityResult()方法被返回。下面是Android中的一个实现:

发起语音识别

private void startVoiceRecognitionActivity() 
        {
            //语音识别的Action
            Intent intent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            //设置附加信息
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
            intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
            startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
        }

对语音识别结果的处理如下:

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
        {
        if (requestCode==VOICE_RECOGNITION_REQUEST_CODE && resultCode==RESULT_OK)
             {
                ArrayList< String> matches=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                mList.setAdapter(new ArrayAdapter< String>(this,android.R.layout.simple_list_item_1,matches));
             }
        super.onActivityResult(requestCode, resultCode, data);
         }

在目前的实现中,Android支持两种类型的Action:ACTION_RECOGNIZE_SPEECH和ACTION_WEB_SEARCH。考虑到可能没有处理对应的Action的应用,在代码的实现中需要捕获ActivityNotFoundException异常。

Action为ACTION_RECOGNIZE_SPEECH时,请求语音识别的附加信息为EXTRA_LANGUAGE_MODEL,可选附加信息为EXTRA_PROMPT、EXTRA_LANGUAGE、EXTRA_MAX_RESULTS、EXTRA_RESULTS_PENDINGINTENT、EXTRA_RESULTS_ PENDINGINTENT_BUNDLE,结果附加信息为EXTRA_RESULTS。

Action为ACTION_WEB_SEARCH时,请求语音识别的附加信息为EXTRA_ LANGUAGE_MODEL,可选附加信息为EXTRA_PROMPT、EXTRA_LANGUAGE、EXTRA_MAX_RESULTS,结果附加信息为EXTRA_RESULTS。

0 0
原创粉丝点击