Android - 语音识别一个字?

时间:2015-04-22 06:11:41

标签: android speech-recognition voice-recognition speech

有没有办法让SpeechRecognizer听,等一个字,然后停止听?我只需要用户说出的第一个字。

1 个答案:

答案 0 :(得分:1)

您需要使用:

EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS

标志而不是:

SPEECH_INPUT_MINIMUM_LENGTH_MILLIS旗帜。

如果我们设置EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS标志,则语音识别将在指定时间后以毫安为单位终止。因此,在您的情况下,用户会说一个单词并暂停100毫秒,它只会给您一个字。以下是我使用和测试的代码。根据您的要求编辑沉默时间。只需在您的活动中调用此函数进行测试。

    public void provideTextToConvert()
{
    Intent speechintent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    speechintent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS , 100);
    speechintent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,  RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    speechintent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
    speechintent.putExtra(RecognizerIntent.EXTRA_PROMPT,
            getString(R.string.speech_prompt));


    try {
        startActivityForResult(speechintent, REQ_CODE_SPEECH_INPUT);
    } catch (ActivityNotFoundException a) {
        Toast.makeText(getApplicationContext(),
                getString(R.string.speech_not_supported),
                Toast.LENGTH_SHORT).show();
    }
}