Xamarin.Forms Введение в Azure Cognitive Services

Microsoft Cognitive Services — это набор API, пакетов SDK и служб, доступных разработчикам, чтобы сделать приложения более интеллектуальными, добавив такие функции, как распознавание лиц, распознавание речи и распознавание речи. В этой статье приведены общие сведения о примере приложения, демонстрирующего вызов некоторых API Microsoft Cognitive Service.

Обзор

Сопровождающий пример — это приложение списка todo, которое предоставляет функциональные возможности:

  • Просмотр списка задач.
  • Добавление и изменение задач с помощью мягкой клавиатуры или распознавание речи с помощью API службы "Речь Майкрософт".
  • Орфографические проверка задачи с помощью API проверки орфографии Bing. Дополнительные сведения см. в разделе "Проверка орфографии" с помощью API проверки орфографии Bing.
  • Перевод задач с английского на немецкий с помощью API Переводчик. Дополнительные сведения см. в разделе "Перевод текста" с помощью API Переводчик.
  • Удаление задач.
  • Задайте для задачи состояние "готово".

Предупреждение

API службы "Речь Bing" не рекомендуется использовать в службе "Речь Azure". Пример службы "Речь Azure" см. в разделе "Распознавание речи" с помощью API службы "Речь".

Задачи хранятся в локальной базе данных SQLite. Дополнительные сведения об использовании локальной базы данных SQLite см. в статье "Работа с локальной базой данных".

Отображается TodoListPage при запуске приложения. На этой странице отображается список всех задач, хранящихся в локальной базе данных, и пользователь может создать новую задачу или оценить приложение:

TodoListPage

Новые элементы можно создать, щелкнув + кнопку, которая переходит к элементу TodoItemPage. На эту страницу можно также перейти, выбрав задачу:

TodoItemPage

Позволяет TodoItemPage создавать, изменять, проверка орфографические, переведенные, сохраненные и удаленные задачи. Распознавание речи можно использовать для создания или редактирования задачи. Это достигается путем нажатия кнопки микрофона для запуска записи и нажатием той же кнопки во второй раз, чтобы остановить запись, которая отправляет запись в API распознавания речи Bing.

Общие сведения об анатомии приложения

Проект общего кода для примера приложения состоит из пяти основных папок:

Папка Характер использования
Модели Содержит классы модели данных для приложения. Сюда входит TodoItem класс, который моделирует один элемент данных, используемый приложением. В папке также содержатся классы, используемые для моделирования ответов JSON, возвращаемых различными API Microsoft Cognitive Service.
Репозитории Содержит ITodoItemRepository интерфейс и TodoItemRepository класс, используемые для выполнения операций базы данных.
Службы Содержит интерфейсы и классы, используемые для доступа к различным API Microsoft Cognitive Service, а также интерфейсы, DependencyService используемые классом для поиска классов, реализующих интерфейсы в проектах платформы.
Utils Timer Содержит класс, который используется AuthenticationService классом для обновления маркера доступа JWT каждые 9 минут.
Представления Содержит страницы для приложения.

Проект общего кода также содержит некоторые важные файлы:

Файлы Характер использования
Constants.cs Класс Constants , указывающий ключи и конечные точки API для вызываемых API Microsoft Cognitive Service. Константы ключа API требуют обновления для доступа к различным API Cognitive Service.
App.xaml.cs Класс App отвечает за создание экземпляра первой страницы, которая будет отображаться приложением на каждой платформе, и TodoManager класс, используемый для вызова операций базы данных.

Пакеты NuGet для Application Insights

В примере приложения используются следующие пакеты NuGet:

  • Newtonsoft.Json — предоставляет платформу JSON для .NET.
  • PCLStorage — предоставляет набор кроссплатформенных локальных API ввода-вывода файлов.
  • sqlite-net-pcl — предоставляет хранилище базы данных SQLite.
  • Xam.Plugin.Media — предоставляет кроссплатформенные фотографии, принимающие и выбирая API.

Кроме того, эти пакеты NuGet также устанавливают собственные зависимости.

Моделирование данных

Пример приложения использует TodoItem класс для моделирования данных, отображаемых и хранящихся в локальной базе данных SQLite. Следующий пример кода демонстрирует класс TodoItem:

public class TodoItem
{
  [PrimaryKey, AutoIncrement]
  public int ID { get; set; }
  public string Name { get; set; }
  public bool Done { get; set; }
}

Свойство ID используется для уникальной идентификации каждого TodoItem экземпляра и декорируется атрибутами SQLite, которые делают свойство автоматически добавочным первичным ключом в базе данных.

Вызов операций базы данных

Класс TodoItemRepository реализует операции базы данных, а экземпляр класса можно получить через App.TodoManager свойство. Класс TodoItemRepository предоставляет следующие методы для вызова операций базы данных:

  • GetAllItemsAsync — извлекает все элементы из локальной базы данных SQLite.
  • GetItemAsync — извлекает указанный элемент из локальной базы данных SQLite.
  • SaveItemAsync — создает или обновляет элемент в локальной базе данных SQLite.
  • DeleteItemAsync — удаляет указанный элемент из локальной базы данных SQLite.

Реализации проектов платформы

Папка Services в проекте общего кода содержит IFileHelper интерфейсы и IAudioRecorderService интерфейсы, используемые DependencyService классом для поиска классов, реализующих интерфейсы в проектах платформ.

Интерфейс IFileHelper реализуется классом FileHelper в каждом проекте платформы. Этот класс состоит из одного метода, GetLocalFilePathкоторый возвращает локальный путь к файлу для хранения базы данных SQLite.

Интерфейс IAudioRecorderService реализуется классом AudioRecorderService в каждом проекте платформы. Этот класс состоит из StartRecordingметодов и StopRecordingвспомогательных методов, которые используют API платформы для записи звука с микрофона устройства и хранения его в виде wav-файла. В iOS AudioRecorderService API используется AVFoundation для записи звука. В Android AudioRecordService API используется AudioRecord для записи звука. В универсальная платформа Windows (UWP) AudioRecorderService api использует AudioGraph API для записи звука.

Вызов когнитивных служб

Пример приложения вызывает следующие Службы Microsoft Cognitive Services: