Android: явное прекращение распознавания голоса? - PullRequest
1 голос
/ 12 апреля 2011

Я знаю, что вы можете увеличить время, чтобы считать ввод завершенным, вызвав:

intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS,5000);

Однако есть ли способ после запуска операции распознавания голоса Android остановить ее явно , скажем, после получения «ключевого слова».

Ответы [ 3 ]

1 голос
/ 11 июля 2011

@ Майк прав.

Это работает:

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, new Long(2000)); 

Вы указали Long. Простое помещение числа («2000») интерпретируется как целое число, что недопустимо.

0 голосов
/ 16 февраля 2019

Нашли это! =) * * Тысяча одна

Вы можете использовать .stopListening() на SpeechRecognizer object.

SpeechRecognizer hear = NULL;

//set up the recognizer and intent

hear.stopListening();

Я поместил его в Runable, чтобы я мог контролировать, как долго он заканчивал речевой ввод, и я удалил обратный вызов этого Runnable, если речевой ввод закончился, чтобы он не пытался остановить речевой ввод, который уже остановился нанести сопутствующий ущерб и завершить ввод речи после)

0 голосов
/ 14 декабря 2016

Это можно сделать с помощью класса SpeechRecognizer с пользовательским интерфейсом вместо намерения RecognizerIntent . SpeechRecognizer класс имеет метод stopListening () , который можно явно вызывать, когда пользователь нажимает кнопку «стоп».

Другой способ попробовать - запросить частичные результаты с помощью EXTRA_PARTIAL_RESULTS и выполнить поиск вашего "ключевого слова остановки" в RecognitionListener onPartialResults обратном вызове, затем stopListening () при обнаружении.

...