Время ожидания для Android - распознавание речи - PullRequest
0 голосов
/ 15 января 2019

Я создаю приложение, которое собирает пользовательские данные посредством распознавания речи. Моя проблема в том, что для вызова ошибки тайм-аута речи требуется всего около 5 секунд, что мешает распознавателю речи распознать любой другой голос. У меня вопрос: как мне увеличить время для ошибки тайм-аута или как я могу остановить ошибку.

Мой код:

SpeechRecogniser sr = createSpeechRecogniser(this)
recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE,"en");

recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);

sr.startListening(recogniserIntent);
sr.setOnRecognitionListener(new OnRecognitionListener(){
    //implenent all its methods
    onError(int code){
        switch(code){
            case ERROR_SPEECH_TIMEOUT:
            //this is where the error is called and stops the speech recogniser
            //i want the time for this error to be increased
            break;

            }
        }
});

1 Ответ

0 голосов
/ 15 января 2019

Эти необязательные аргументы помогают продлить время, если вам нужно увеличить его (есть ограничения на время, которое служба учитывает с помощью этих аргументов), вам придется переопределить распознаватель, как в stackoverflow.com/a/49810988/806328

recognizerIntent.PutExtra(RecognizerIntent.ActionRecognizeSpeech, RecognizerIntent.ExtraPreferOffline);
            recognizerIntent.PutExtra(RecognizerIntent.ExtraSpeechInputCompleteSilenceLengthMillis, 1000); 
            recognizerIntent.PutExtra(RecognizerIntent.ExtraSpeechInputPossiblyCompleteSilenceLengthMillis, 1000);
            recognizerIntent.PutExtra(RecognizerIntent.ExtraSpeechInputMinimumLengthMillis, 1500);
...