Распознавание речи сразу перестает слушать - PullRequest
0 голосов
/ 13 июня 2019

Я хочу прослушать первое слово от пользователя.Когда начинается распознавание речи, я слышу бип-звук, но сразу же слышу звук остановки.Я заметил, что onRMSchange - единственный метод, где что-то происходит.

Так я использую SpeechRecognizer.Когда я запускаю приложение, я подключаюсь к Интернету.

        Intent speechintent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        speechintent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS , 1000);
        speechintent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,  RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        speechintent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en");

        SpeechRecognizer speechRecognizer = SpeechRecognizer.createSpeechRecognizer(Inference.getmContext());
        speechRecognizer.setRecognitionListener(new RecognitionListener() {
            @Override
            public void onReadyForSpeech(Bundle params) {

            }

            @Override
            public void onBeginningOfSpeech() {
            Log.i("beg", "beg");
            }

            @Override
            public void onRmsChanged(float rmsdB) {
                Log.i("on rms changed", "rms changed");
            }

            @Override
            public void onBufferReceived(byte[] buffer) {
                Log.i("ANSWER","END");
            }

            @Override
            public void onEndOfSpeech() {
                Log.i("ANSWER","END");
            }

            @Override
            public void onError(int error) {

            }

            @Override
            public void onResults(Bundle results) {

               Log.i("ANSWER",results.getString(RecognizerIntent.EXTRA_RESULTS));
                ArrayList<String> result = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);

            }

            @Override
            public void onPartialResults(Bundle partialResults) {
                Log.i("ANSWER",partialResults.getString(RecognizerIntent.EXTRA_RESULTS));
            }

            @Override
            public void onEvent(int eventType, Bundle params) {

            }
        });

        speechRecognizer.startListening(speechintent);
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                speechRecognizer.stopListening();
            }
        }, 1000);

Не знаю, почему оно не позволяет мне говорить.

ОБНОВЛЕНИЕ:

Этопорядок, в котором он проходит через методы:

onRmsChanged
onReadyForSpeech
onError

onError Я получаю код ошибки 2, что означает «Ошибка сети», но я уже установил речь Google Text To, я поставил разрешения INTERNET и RECORD_AUDIOв Манифесте, и я подключен к Интернету.Я не понимаю, что не так?

...