Android中的语音识别

我正致力于语音识别,需要一些示例程序。

谁能指导我?

让我剪切并粘贴一下,以显示您需要的代码。

编辑:您也可以从这个项目下载一个方便的抽象类。

您将需要此意图(根据需要进行参数化):

public Intent getRecognizeIntent(String promptToUse, int maxResultsToReturn) { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, maxResultsToReturn); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, promptToUse); return intent; } 

然后你需要将你的意图发送到语音识别活动,如此,

 public void gatherSpeech(String prompt) { Intent recognizeIntent = getRecognizeIntent(prompt); try { startActivityForResult(recognizeIntent, SpeechGatherer.VOICE_RECOGNITION_REQUEST_CODE); } catch (ActivityNotFoundException actNotFound) { Log.w(D_LOG, "did not find the speech activity, not doing it"); } } 

然后,您需要让您的活动处理语音结果:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.d("Speech", "GOT SPEECH RESULT " + resultCode + " req: " + requestCode); if (requestCode == SpeechGatherer.VOICE_RECOGNITION_REQUEST_CODE) { if (resultCode == RESULT_OK) { ArrayList matches = data .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); Log.d(D_LOG, "matches: "); for (String match : matches) { Log.d(D_LOG, match); } } } } 

首先需要像这样显示谷歌语音输入对话框

  /** * Showing google speech input dialog * */ private void promptSpeechInput() { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, getString(R.string.speech_prompt)); try { startActivityForResult(intent, REQ_CODE_SPEECH_INPUT); } catch (ActivityNotFoundException a) { Toast.makeText(getApplicationContext(), getString(R.string.speech_not_supported), Toast.LENGTH_SHORT).show(); } } 

然后需要像这样接收语音输入。

  /** * Receiving speech input * */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case REQ_CODE_SPEECH_INPUT: { if (resultCode == RESULT_OK && null != data) { ArrayList result = data .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); txtSpeechInput.setText(result.get(0)); } break; } } } 

并需要设置REQ_CODE_SPEECH_INPUT

  private final int REQ_CODE_SPEECH_INPUT = 100;