В помощь мобильному разработчику

Распознование речи в iOS 10

Александр Алексеев

Голосовые функции всё масштабнее реализуются в современных мобильных приложениях. Пользователи желают взаимодействовать с приложениями через голосовые команды настолько широко, насколько данная функциональность поддерживается в самом интерфейсе. iOS содержит множество способов для взаимодействия с мобильным устройством при помощи речи, главным образом благодаря функциям Siri и Keyboard Dictation. В iOS 10 значительно доработаны инструменты, позволяющие разработчикам создавать интеллектуальные приложения, которые могут управляться не только с помощью типичного пользовательского интерфейса, но также и речью равным образом с использованием новых возможностей Sirikit и распознавания голосовых команд API-интерфейсов.

 

Раньше, до релиза iOS 10, для того чтобы предоставить пользователям функции распознавания голоса в приложениях, разработчикам приходилось задействовать Keyboard Dictation, поскольку какой-либо альтернативы этому не было. Следствием этого являлись определенные ограничения, с которыми разработчикам приходилось мириться, а именно тот факт, что данный способ позволял работать только через элементы пользовательского интерфейса, которые поддерживались TextKit, не давая возможности использовать живое распознавание, а также такие атрибуты, как уровень достоверности и информацию о синхронизации. Для запуска функции распознавания речи в iOS 10 не требуется использование каких-либо конкретных элементов пользовательского интерфейса, она поддерживает работу как с предварительно записанной, так и с живой речью, а также предоставляет много дополнительных контекстов конвертирования, таких как множественные интерпретации, уровни достоверности, и, помимо этого, данные о временных метриках. В этом посте Вы узнаете, как использовать API-интерфейс распознавания голоса в iOS 10 для того, чтобы выполнить преобразование речи в текст в мобильном приложении.

 

Знакомство с распознаванием речи

API-интерфейс распознавания речи доступен в качестве составной части iOS 10. Чтобы удостовериться в том, что вы можете создавать приложения с использованием новых API-интерфейсов iOS 10, уточните в канале обновлений Visual Studio или Xamarin Studio, используется ли Вами последняя стабильная сборка Xamarin. Функцию распознавания речи можно добавить к нашим iOS-приложениям всего за несколько шагов:

  • Обеспечить описание использования в Info.plist-файле приложения для NSSpeechRecognitionUsageDescriptionKey.
  • Запросить разрешения на использование распознавания речи путём вызова RequestAuthorization.
  • Создать запрос распознавания речи и передать его SFSpeechRecognizer.

 

Обеспечение описания использования

Приватности отводится большое место при разработке мобильных приложений и Android и iOS 10 не так давно подверглись модернизации в том, как работающие на их базе приложения могут запрашивать разрешения пользователей на такие задачи, как использование камеры или микрофона. Поскольку при запуске этих задач звук временно передаётся на сервера Apple и там сохраняется для прохождения обработки, от пользователя требуется предоставить разрешение на осуществление данной конвертации. Кроме того, примите во внимание прочие особенности приватности при принятии решения об использовании API-интерфейсов распознавания речи. Чтобы активировать возможность использования API-интерфейсов распознавания речи, откройте файл Info.plist и добавьте ключ NSSpeechRecognitionUsageDescription в качестве Property, String в качестве Key, а сообщение, которое будет видеть пользователь при запросе разрешения на использование распознавания речи, в качестве Value.

 

info-plist

 

Примечание: если приложение будет выполнять распознавание «живой речи», то Вам нужно будет добавить дополнительное разрешение со значением свойства — NSMicrophoneUsageDescription.

 

Запрос авторизации на распознавание речи

Теперь, когда мы добавили наш ключ/ключи в файл Info.plist, пришло время запросить разрешение от пользователя с помощью метода SFSpeechRecognizer.RequestAuthorization. У этого метода есть только один параметр — Action>, он позволяет нам обрабатывать различные сценарии, которые могут возникнуть, когда мы запрашиваем у пользователя разрешения:

 

  • SFSpeechRecognizerAuthorizationStatus.Authorized: разрешение от пользователя получено.
  • SFSpeechRecognizerAuthorizationStatus.Denied: пользователь отказал в разрешении.
  • SFSpeechRecognizerAuthorizationStatus.NotDetermined: ожидается подтверждение разрешения от пользователя.
  • SFSpeechRecognizerAuthorizationStatus.Restricted: устройство не позволяет использовать SFSpeechRecognizer.

 

Распознавание речи

Теперь, когда разрешение нами получено, давайте создадим код для использования нового API-интерфейса распознавания речи! Создайте новый метод, получивший название RecognizeSpeech, который принимает в NSUrl в качестве параметра. Именно здесь и будет выполняться логика перевода речи в текст.

 

 

SFSpeechRecognizer является главным классом в компоненте распознавания речи iOS 10. В приведенном выше коде мы «вывели» пример этого класса. Если средство распознавания речи не поддерживает текущей язык устройства, то класс recognizer будет нулевым. Поэтому перед его использованием мы можем заведомо убедиться в том, что распознавание речи доступно и авторизовано. Далее, мы создадим и вызовем новый SFSpeechUrlRecognitionRequest с локальным или удаленным NSUrl для выбора тех предварительно записанных аудиофайлов, которые требуется распознать. И, наконец, мы можем использовать метод SFSpeechRecognizer.GetRecognitionTask, чтобы передать на сервер запрос распознавания речи. Так как распознавание выполняется неспешно, мы можем использовать функцию обратного вызова, чтобы обновить наш пользовательский интерфейс, когда результаты будут возвращены. Когда распознавание речи будет завершено, SFSpeechRecognitionResult.Final произведёт выверку, и мы сможем применить SFSpeechRecognitionResult.BestTranscription.FormattedString для доступа к окончательному транскрибированию.

 

 

 

Готово! Теперь мы можем запустить наше приложение и использовать функцию преобразования речи в текст, задействуя новые API-интерфейсы распознавания речи, являющиеся составной частью iOS 10.

 

Использование более сложных речевых и языковых операции

API-интерфейсы распознавания речи в iOS 10 обладают значительным спектром возможностей, но что, если нам необходимо что-то более комплексное? Microsoft Cognitive Services предлагает большой набор языковых API-интерфейсов для обработки речи и естественного языка, от распознавания говорящего до понимания его намерений. Для получения дополнительной информации о языковых и речевых API-интерфейсах Microsoft Cognitive Services посетите соответствующую веб-страницу.

 

Подведение итогов

В этом посте мы рассмотрели новые API-интерфейсы для распознавания речи, которые доступны разработчикам в рамках iOS 10. Для получения дополнительной информации об этих API-интерфейсах обратитесь к нашей документации. Те, кто желает разрабатывать диалоговые пользовательские интерфейсы для мобильных приложений должны также изучить документацию по SiriKit. Чтобы скачать образцы, которые приводились в этом посте, загляните на GitHub.


Автор
: Pierce Boggan
ИсточникОфициальный блог Xamarin

Александр Алексеев
Александр Алексеев

Xamarin - разработчик. Работаю с .NET платформой с 2012 года, программирую в основном с использованием C#. За это время успел поработать с ASP.NET, Entity Framework, MSSQL, Git

Telerik DevCraft Логотип
Устройства iOS 10

Написать ответ