Как сделать голосовой поиск на телефоне

Добавлено: 26.08.2017, 04:24 / Просмотров: 54294

поиск Учим Андроид слушать…

Распознавание речи — процесс преобразования речевого сигнала в текстовый поток. Первое устройство для распознавания речи появилось в 1952 году, оно могло распознавать произнесённые человеком цифры. Современные телефоны могут намного больше. В этой статье  я расскажу о том, как с помощью Голосового поиска Google Inc. научить ваши приложения слушать.

Немого теории. Андроид сам по себе не умеет распознавать речь. Поэтому, если у вас “голое” устройство с Андроидом на борту, то распознавать на нем ничего не получится. Как же тогда быть? Можно поискать стороннюю библиотеку для этих целей и добавить ее в проект (тернистый путь) или попросить другое приложение распознавать для нас речь (простой пусть). Мы пойдем по простому пути, следовательно, у нас на устройстве должно быть установлено хотя бы одно приложение способное обрабатывать специально созданный для такой задачи Intent с действием RecognizerIntent.ACTION_RECOGNIZE_SPEECH.

Одним из таких приложений является Голосовой поиск Google Inc. Работает оно просто замечательно, поддерживает различные языки. Для успешной работы требуется выход в интернет, так как сам процесс распознавания происходит где-то на серверах Google. При запуске приложения появляется Activity с парой управляющих кнопок (представлена на рисунке ниже), которая информирует пользователя о том, что надо говорить. Как только пользователь заканчивает говорить, диалог закрывается, а нам в приложение возвращается массив текстовых строк – распознанная речь.

Блок-схемы еще никто никто не отменял. Учитывая вышеизложенное, напрашивается следующая логика работы, представленная на схеме ниже.

Приступаем к реализации. Напишем программный код, который позволит максимально просто интегрировать голосовой поиск в наше приложение. Согласно представленной выше схеме, код должен делать следующее:

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

Создадим класс, в котором реализуем логику для распознавания речи. Назовем этот класс SpeechRecognitionHelper. В классе объявим статичную, публичную функцию run, которая будет принимать запрос на запуск распознавания.

Кроме функции run нам необходимо реализовать еще три функции:

  • isSpeechRecognitionActivityPresented – проверяет установлено ли приложение способное распознавать речь
  • startRecognition – формирует правильный Intent и запускает распознавание
  • installGoogleVoiceSearch – инициирует процесс установки Голосового Поиска Google

Проверить установлено ли на устройстве приложение для распознавания речи можно с помощью метода queryIntentActivities класса PackageManager. Данный метод выдает список Activity, которые могут обработать указанный Intent. Получить экземпляр класса PackageManager можно с помощью функции getPackageManager. Вот что получилось:

Приступаем к реализации функции startRecognition. Данная функция должна сформировать правильный Intent для запуска Activity  распознавания речи. О том как это сделать изучаем на страничке документации. Получаем следующую реализацию:

При настройке параметров Intent’а мы указали: строку-подсказку для пользователя, которая отобразиться в диалоге запроса голосового ввода; модель распознавания – поисковый запрос; количество результатов – 1 (самый релевантный, другие нам в данном случае не нужны).

Переходим к реализации функции installGoogleVoiceSearch. Данная функция будет отображать диалог, в котором спросит у пользователя хотел ли они установить Голосовой Поиск Google и отправить его в маркет устанавливать его, если он захочет.

В принципе все готово. У нас есть механизм проверки наличия требуемой нам Activity для распознавания речи, мы можем запустить эту Activity, можем запросить у пользователя разрешения на установку Голосового Поиска и при положительно ответе отправить его в маркет. Единственное что мы еще не умеем – это получать результаты распознавания голоса.

Отправка запроса на распознавание речи была неспроста реализована с помощью функции startActivityForResult, указывающий на то, что мы хотим получить результат запущенной нами ативити. Чтобы его получить требуется в нашей основной ативити, из которой мы отправили запрос на распознавание речи, переопределить метод OnActivityResult и получить в нем результаты распознавания голоса. Делается это следующим образом:

Вот теперь действительно все готово. Созданный класс SpeechRecognitionHelper позволяет вызовом всего лишь одной функции run выполнить запрос на распознавание речи, обработав ситуации отсутствия соответствующей Activity и установку Голосового Поиска из маркета. Все что вам нужно для реализации распознавания – это добавить в ваш проект созданный класс, вызвать в нужном месте функцию run и реализовать логику обработки результатов, правильно переопределив метод onActivityResult Activity, которая инициировала процесс.

Дополнительную информацию по теме можно получить на сайте разработчиков Андроид. Есть полезный пример, в котором показано, как реализовать распознавание речи, и что важно – в нем рассказано, как получить список доступных языков. Данный список понадобиться вам, если вы хотите распознать язык отличный от языка выбранной локали пользователя. Чтобы быстро интегрировать речевой ввод в ваше приложение можете скачать и свободно использовать код класса SpeechRecognitionHelper.

Если статья оказалась вам полезной или почему на сайте есть реклама


Источник: http://www.pandacoder.com/android_speech_recognition/


Закрыть ... [X]

ADB и все, что с помощью него можно сделать - 4PDA Как сделать фонарик на андроиде на звонок


Как сделать голосовой поиск на телефоне Переадресация вызова в телефоне андроид
Как сделать голосовой поиск на телефоне FAQ MIUI Russia Официальный фан сайт в России
Как сделать голосовой поиск на телефоне Распознавание речи в Андроид PandaCoder
Как сделать голосовой поиск на телефоне Голосовой набор текста
Как сделать голосовой поиск на телефоне Голосовой блокнот
Как сделать голосовой поиск на телефоне Cached
Как сделать голосовой поиск на телефоне List English - Английский язык для
Как сделать голосовой поиск на телефоне Грудь широко расставлена( форум)
Как сделать голосовой поиск на телефоне Деревянный руль. Вставки под дерево. Шпонирование. Москва
Джинсы с заплатками (56 фото красивые заплатки) Загрузка - решено Автоматический вход без ввода Как сделать Пучок из Носка? - IRecommend Как сделать парусник. Чертеж парусника Как сделать щетину жестче бритва для жесткой Как убрать (снять) порчу самому (самой)? Какие поделки смастерить из зерен кофе - Поделки своими руками