Непрерывное распознавание речи 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 и ниже - не уверены, если они предназначены или ошибка!