Непрерывное распознавание речи Android - без пробелов
У меня есть активность, которая реализует RecognitionListener
. Чтобы сделать его непрерывным, каждый раз onEndOfSpeech()
я снова запускаю слушателя:
speech.startListening(recognizerIntent);
Но это займет некоторое время (около полусекунды), пока оно не начнется, поэтому есть этот полусекундный промежуток, где ничего не слушает. Поэтому я пропускаю слова, которые были произнесены в разное время.
С другой стороны, когда я использую вход в Google Voice, чтобы диктовать сообщения вместо клавиатуры - этот промежуток времени не существует. Значение - есть решение.
Что это?
Спасибо
Ответы
Ответ 1
попробуйте взглянуть на пару других апи....
речевая демонстрация: есть источник здесь и обсуждается здесь и работает на CLI здесь
вы можете использовать полный дуплекс google api (его скорость ограничена 50 в день)
Или, если вам нравится эта общая идея, проверьте, что ibm watson обсудил здесь
ИМО - его более сложный, но не ограниченный.
Ответ 2
Я рекомендую использовать CMUSphinx для непрерывного распознавания речи. Чтобы добиться непрерывного распознавания речи с помощью распознавания речи Google, вам может потребоваться цикл в фоновом режиме, который будет потреблять слишком много ресурсов и истощает батарею устройства.
С другой стороны, Pocketsphinx отлично работает. Он достаточно быстр, чтобы определить ключевую фразу и распознать голосовые команды за экраном блокировки, не прикасаясь к их устройству. И он делает это в автономном режиме. Вы можете попробовать demo.
Если вы действительно хотите использовать google api, см. это
Ответ 3
Есть такие опции, как:
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);
Они перестали работать на желе Bean и выше, но работают над ICS и ниже - не уверены, если они предназначены или ошибка!