Вопрос по android – Могу ли я держать распознаватель речи слушать неопределенно долго?

20

Когда я звонюstartListening методSpeechRecognizer объект, распознаватель речи начинает слушать речь. Я хотел бы создать службу, которая ожидает речи определенного ключевого слова: когда пользователь произносит это ключевое слово, а распознаватель речи обнаруживает это ключевое слово, тогда служба становится готовой к получению пользовательских голосовых команд.

С этой целью после новогоSpeechRecognizer экземпляр, я должен назвать егоstartListening Способ: могу ли я слушать распознаватель речи неограниченное время?

Похоже, вы делаете прослушивание для Android - Мне нравится !! Kristian
Вы поняли это? Что ты сделал? Я пытаюсь понять это уже месяц! Ruchir Baronia
Цель состоит в том, чтобы иметь возможность управлять одним или несколькими приложениями с помощью голоса. enzom83
Посмотрите на приложение под названием Vlingo. Они достигают этого, поддерживая приложение в фоновом режиме в ожидании модного слова & quot; Эй, Vlingo ... & quot; Это похоже на то, что вы ищете. Я бы попытался разобраться во множестве вопросов, касающихся поддержки работы службы в фоновом режиме. Это звучит как хорошее место для вас. gobernador

Ваш Ответ

2   ответа
14

Android Speech recognizer можно настроить с помощью дополнительных данных. Увидетьдокументация для Android.

public static final String EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS

The amount of time that it should take after we stop hearing speech to consider the input complete. [...]

public static final String EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS Since: API Level 8

The minimum length of an utterance. We will not stop recording before this amount of time. [...]

public static final String EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS

The amount of time that it should take after we stop hearing speech to consider the input possibly complete. [...]

УстановитьEXTRA_LANGUAGE_MODEL  для поиска в сети, чтобы захватить только соответствующие слова.

Depending on the recognizer implementation, these values may have no effectError: User Rate Limit ExceededstartListeningError: User Rate Limit Exceeded enzom83
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededEXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLISError: User Rate Limit ExceededEXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLISError: User Rate Limit Exceeded enzom83
0

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);
}

Похожие вопросы