22

当我调用对象的startListening方法时SpeechRecognizer,语音识别器开始监听语音。我想创建一个等待特定关键字语音的服务:当用户说出这个关键字并且语音识别器检测到这个关键字时,该服务就准备好接收用户语音命令。

为此,在一个新的SpeechRecognizer实例化之后,我应该调用它的startListening方法:我可以让语音识别器无限期地听吗?

4

2 回答 2

15

Android Speech recognizer可以通过意图额外数据进行定制。请参阅安卓文档

公共静态最终字符串 EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS

在我们停止听到语音后认为输入完成应该花费的时间。[...]

公共静态最终字符串EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS 自:API 级别 8

话语的最小长度。在这段时间之前,我们不会停止录制。[...]

公共静态最终字符串EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS

在我们停止听到语音后认为输入可能完成所需的时间。[...]

EXTRA_LANGUAGE_MODEL设置 为 websearch 以仅捕获相关单词。

于 2012-04-16T23:26:03.857 回答
1

您可以像这样实现onError接口RecognitionListener。它不断地倾听你的活动。

@Override
public void onError(int error) {
    String errorMessage = getErrorText(error);
    Log.i(Constants.TAG, "FAILED " + errorMessage);
    speech.destroy();
    speech = null;
    StartListening();
}

private void StartListening() {
    speech = SpeechRecognizer.createSpeechRecognizer(this);
    speech.setRecognitionListener(this);
    recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en");
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, this.getPackageName());
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);

    //if setting.SpeechEnable
    speech.startListening(recognizerIntent);
}
于 2018-06-06T17:49:44.080 回答