Проснись телефон Android с определенными словами, как Привет Galaxy или Ok Google

Я хотел бы разбудить телефон Android, сказав, например, "Привет Джордж", но не смог найти никаких полезных ответов. Прежде всего, Android-приложение должно слушать в качестве службы в фоновом режиме для этой функции или нет? Буду признателен, если кто-нибудь знает, как реализовать эту проблему или есть какие-либо подсказки.

С наилучшими пожеланиями Спасибо

2 ответа

Решение

Привет, я разработчик Open Mic + http://openmic.rsenapps.com/, который делает что-то очень похожее на то, что вы хотите. Правда в том, что это намного сложнее, чем кажется, и я только начинаю внедрять системы, которые действительно эффективны. Я думаю, главное, как далеко ты хочешь пойти? Вы можете реализовать Google Speech Recognition, но в итоге он ужасно глючит и действительно не работает в долгосрочной перспективе, или вы можете реализовать свое собственное распознавание речи, что я и делаю в процессе...

CMUSphinx недавно внедрил непрерывное прослушивание на платформе Android. Вы можете найти демо на странице вики

Вы можете настроить одно или несколько ключевых слов для прослушивания, по умолчанию используется ключевое слово "о, могучий компьютер". Вы также можете настроить порог обнаружения. В настоящее время поддерживаются следующие языки: американский английский и некоторые другие (французский, испанский, русский и т. Д.). Вы можете обучить свою собственную модель для вашего языка.

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

recognizer = defaultSetup()
        .setAcousticModel(new File(modelsDir, "hmm/en-us-semi"))
        .setDictionary(new File(modelsDir, "lm/cmu07a.dic"))
        .setKeywordThreshold(1e-5f)
        .getRecognizer();

recognizer.addListener(this);
recognizer.addKeywordSearch(KWS_SEARCH_NAME, KEYPHRASE);
switchSearch(KWS_SEARCH_NAME);

и определите слушателя:

@Override
public void onPartialResult(Hypothesis hypothesis) {
    String text = hypothesis.getHypstr();
    if (text.equals(KEYPHRASE))
      //  do something
} 
Другие вопросы по тегам