Главная » Разработка для Android » Распознавание речи

0

Начиная с версии 1.5 (API level 3) Android поддерживает голосовой ввод и распознавание речи с помощью класса RecognizerIntent.

Этот API позволяет встраивать в приложения голосовой ввод, используя стандартное диалоговое окно, как показано на рис. 11.1.

ВНИМАНИЕ

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

Не все устройства имеют поддержку распознавания речи. В таких слу- чаях, как правило, можно загрузить соответствующую библиотеку из Android Market.

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

Листинг 11.23. Создание диалогового окна для распознавания речи

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)

// Укажите свободную форму ввода intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,

RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);

intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "or forever hold your peace");

intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.ENGLISH); startActivityForResult(intent, VOICE_RECOGNITION);

Когда пользователь завершит голосовой ввод, записанный звук проана- лизируется и обработается  движком  для распознавания речи. Результаты вернутся через обработчик onActivityResult в виде списка строк, храняще- гося в параметре EXTRA_RESULTS, как показано в листинге 11.24.

Листинг 11.24. Извлечение результатов распознавания речи

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

Продолжение ?

Листинг 11.24 (продолжение)

if (requestCode == VOICE VOICE_RECOGNITION && resultCode == RESULT_OK)

{

ArrayList<String> results;

results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_

RESULTS);

// TODO Выполнить какие-то действия с распознанными строками

}

super.onActivityResult(requestCode, resultCode, data);

}

Резюме

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

Начав  с объекта MediaPlayer, научились  воспроизводить аудио- и ви- деоданные из локальных  файлов,  ресурсов приложения и удаленных  веб- сайтов, поддерживающих потоковое вещание. Познакомились с элементом VideoView и узнали, как создавать объекты SurfaceView, чтобы проигрывать видеоданные, предоставлять функцию предварительного просмотра и ото- бражать живой видеопоток из камеры.

Вы научились  использовать Намерения для запуска  стандартных  при- ложений,  чтобы записывать  видео и делать снимки.  Используя классы MediaRecorder и Camera, реализовали собственные компоненты для захвата статических изображений и подвижных  сцен.

Продемонстрировано также, как читать и изменять  данные EXIF, при- надлежащие изображению, как добавлять  новые медиафайлы в источник MediaStore и работать с несжатыми  аудиоданными.

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

В следующей главе вы изучите низкоуровневые API для связи, доступ- ные на платформе Android, научитесь применять API в Android, отвечающие за телефонию,  чтобы отслеживать состояние  подключения к мобильной сети, звонки и SMS. Узнаете, как использовать API для исходящих звонков и чтобы отсылать  и принимать текстовые  сообщения  внутри  своего при- ложения.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии