Непрерывное распознавание речи Android - без пробелов
У меня есть деятельность, которая реализует RecognitionListener
, Чтобы сделать это непрерывным, каждый раз onEndOfSpeech()
Я снова запускаю слушателя:
speech.startListening(recognizerIntent);
Но это занимает некоторое время (около полсекунды), пока оно не начнется, так что есть промежуток в полсекунды, когда ничего не слушается. Поэтому я скучаю по словам, которые были сказаны в этой разнице во времени.
С другой стороны, когда я использую голосовой ввод Google, чтобы диктовать сообщения вместо клавиатуры - этот промежуток времени не существует. Смысл - есть решение.
Что это?
Спасибо
3 ответа
Попробуйте посмотреть на пару других API-интерфейсов....
демонстрационная речь: имеет источник здесь и обсуждается здесь и работает на CLI здесь
Вы можете использовать полный дуплекс Google API (его скорость ограничена 50 в день)
Или, если вам нравится эта общая идея, проверьте Ватсона IBM, обсуждаемого здесь
ИМО - более сложный, но не ограниченный.
Я рекомендую использовать CMUSphinx для непрерывного распознавания речи. Чтобы добиться непрерывного распознавания речи с помощью API распознавания речи Google, вам, возможно, придется прибегнуть к циклу в фоновом режиме, который потребует слишком много ресурсов и разряжает батарею устройства.
С другой стороны, Pocketsphinx действительно отлично работает. Это достаточно быстро, чтобы обнаружить ключевую фразу и распознать голосовые команды за экраном блокировки, при этом пользователи не касаются их устройства. И это делает все это в автономном режиме. Вы можете попробовать демо.
Если вы действительно хотите использовать API Google, посмотрите это
Есть варианты как:
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 2000); // value to wait
или же
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 2000);
Они перестали работать на Jelly Bean и выше, но работают на ICS и ниже - не уверен, что задумано или ошибка!