Постоянное распознавание речи, прослушивающее только одно ключевое слово

Я пытался кодировать это с Android, включенным в класс android.speech.SpeechRecognizer, без успеха.

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

Например, вы разговариваете с человеком. Обычный разговор. Телефон активно прослушивает и распознает каждое слово и слушает ключевое слово.

Скажем, ключевое слово "сыр" в этом случае.

Всякий раз, когда вы говорите "сыр", приложение запускает намерение, которое запускает другую часть приложения.

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

Я пытаюсь выполнить это в течение 2 дней подряд, более 24 часов работы вместе. Если я слишком широко или нарушаю какие-либо правила SO, я искренне извиняюсь и прошу удалить мой вопрос.

Мой вопрос: как это возможно? Конечно, SpeechRecognition, который включен в сам Android, был бы предпочтительнее, но это определенно будет проблемой, потому что он даже не предназначен для работы в течение длительного времени.

Ответ 1

из моих исследований, нет никакого способа сделать это, используя стандартный сервер распознавания голоса Google. Как он работает, когда звук/слово распознается, распознаватель возвращает список того, что, по его мнению, он слышал, со связанным доверием.

чтобы сделать то, что вы просите, вы бы:

  • необходимо повторно активировать службу распознавания каждый раз, когда она запускает событие распознавания, пока оно не соответствует желаемому слову.

  • ваше приложение должно "поддерживать" пробуждение службы распознавания. вы можете сделать это, создав службу, которая периодически пробуждает ваш телефон и возобновляет работу/деятельность.

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

Ответ 2

К сожалению, я не думаю, что есть какие-то собственные API для Android, которые будут полностью соответствовать вашим потребностям. Я бы рекомендовал проверить pocketsphinx. Это довольно надежный независимый от речи интерфейс распознавания речи от CMU, который больше предназначен для таких задач. Вы также можете ознакомиться с учебным пособием для начала здесь.

Ответ 3

Google не предоставил поддержку API для "ОК GOOGLE" и оставил ее поставщикам для изменения или передачи поддержки потребителям. Я думаю, что лучшим вариантом в это время будет сбор исходного кода самостоятельно, а затем вызов API. В качестве примера ниже в библиотеке google содержатся сведения о том, как реализовать распознаватель. Я не знаю, почему Google не сделал это общедоступным. Я не вижу простого способа реализовать и протестировать его.

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/android/speech/srec/Recognizer.java