Xamarin.Forms Introducción a Azure Cognitive Services y Azure Cognitive Services

Microsoft Cognitive Services es un conjunto de API, SDK y servicios disponibles para que los desarrolladores hagan que sus aplicaciones sean más inteligentes mediante la adición de características como el reconocimiento facial, el reconocimiento de voz y la comprensión del lenguaje. En este artículo se proporciona una introducción a la aplicación de ejemplo que muestra cómo invocar algunas de las API de Microsoft Cognitive Service.

Información general

El ejemplo complementario es una aplicación de lista de tareas pendientes que proporciona funcionalidad a:

  • Vea una lista de tareas.
  • Agregue y edite tareas a través del teclado flexible o realice el reconocimiento de voz con Microsoft Speech API.
  • Tareas de revisión ortográfica mediante Bing Spell Check API. Para obtener más información, consulte Revisión ortográfica con Bing Spell Check API.
  • Traducir tareas de inglés a alemán mediante la API de Traductor. Para obtener más información, consulte Traducción de texto mediante la API de Traductor.
  • Eliminar tareas.
  • Establezca el estado de una tarea en "listo".

Advertencia

Bing Speech API ha quedado en desuso en favor del servicio De voz de Azure. Para obtener un ejemplo dedicado a Azure Speech Service, consulte Reconocimiento de voz con Speech Service API.

Las tareas se almacenan en una base de datos de SQLite local. Para obtener más información sobre el uso de una base de datos DE SQLite local, vea Trabajar con una base de datos local.

TodoListPage se muestra cuando se inicia la aplicación. En esta página se muestra una lista de las tareas almacenadas en la base de datos local y se permite al usuario crear una nueva tarea o evaluar la aplicación:

TodoListPage

Los nuevos elementos se pueden crear haciendo clic en el + botón , que navega a .TodoItemPage Esta página también se puede navegar a seleccionando una tarea:

TodoItemPage

TodoItemPage Permite crear, editar, revisar ortográficamente, traducir, guardar y eliminar tareas. El reconocimiento de voz se puede usar para crear o editar una tarea. Esto se logra presionando el botón de micrófono para iniciar la grabación y presionando el mismo botón una segunda vez para detener la grabación, que envía la grabación a Bing Speech Recognition API.

Descripción de la anatomía de la aplicación

El proyecto de código compartido de la aplicación de ejemplo consta de cinco carpetas principales:

Carpeta Propósito
Modelos Contiene las clases del modelo de datos para la aplicación. Esto incluye la TodoItem clase , que modela un solo elemento de datos que usa la aplicación. La carpeta también incluye clases que se usan para modelar respuestas JSON devueltas desde diferentes API de Microsoft Cognitive Service.
Repositorios Contiene la interfaz y TodoItemRepository la ITodoItemRepository clase que se usan para realizar operaciones de base de datos.
Servicios Contiene las interfaces y clases que se usan para acceder a diferentes API de Microsoft Cognitive Service, junto con interfaces que usa la DependencyService clase para localizar las clases que implementan las interfaces en proyectos de plataforma.
Utilidades Contiene la Timer clase , que usa la AuthenticationService clase para renovar un token de acceso JWT cada 9 minutos.
Vistas Contiene las páginas de la aplicación.

El proyecto de código compartido también contiene algunos archivos importantes:

Archivo Propósito
Constants.cs La Constants clase , que especifica las claves de API y los puntos de conexión de las API de Microsoft Cognitive Service que se invocan. Las constantes de clave de API requieren la actualización para acceder a las diferentes API de Cognitive Service.
App.xaml.cs La App clase es responsable de crear instancias de la primera página que mostrará la aplicación en cada plataforma y la TodoManager clase que se usa para invocar operaciones de base de datos.

Paquetes NuGet

La aplicación de ejemplo usa los siguientes paquetes NuGet:

  • Newtonsoft.Json : proporciona un marco JSON para .NET.
  • PCLStorage : proporciona un conjunto de API de E/S de archivos locales multiplataforma.
  • sqlite-net-pcl : proporciona almacenamiento de base de datos de SQLite.
  • Xam.Plugin.Media – proporciona api de toma y selección de fotos multiplataforma.

Además, estos paquetes NuGet también instalan sus propias dependencias.

Modelado de los datos

La aplicación de ejemplo usa la TodoItem clase para modelar los datos que se muestran y almacenan en la base de datos local de SQLite. En el ejemplo de código siguiente se muestra la clase TodoItem:

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

La ID propiedad se usa para identificar de forma única cada TodoItem instancia y está decorada con atributos de SQLite que hacen que la propiedad sea una clave principal de incremento automático en la base de datos.

Invocar operaciones de base de datos

La TodoItemRepository clase implementa operaciones de base de datos y se puede acceder a una instancia de la clase a través de la App.TodoManager propiedad . La TodoItemRepository clase proporciona los métodos siguientes para invocar operaciones de base de datos:

  • GetAllItemsAsync : recupera todos los elementos de la base de datos de SQLite local.
  • GetItemAsync : recupera un elemento especificado de la base de datos local de SQLite.
  • SaveItemAsync : crea o actualiza un elemento en la base de datos local de SQLite.
  • DeleteItemAsync : elimina el elemento especificado de la base de datos de SQLite local.

Implementaciones de proyectos de plataforma

La Services carpeta del proyecto de código compartido contiene las IFileHelper interfaces y IAudioRecorderService que usa la DependencyService clase para buscar las clases que implementan las interfaces en proyectos de plataforma.

La IFileHelper interfaz se implementa mediante la FileHelper clase en cada proyecto de plataforma. Esta clase consta de un único método, , GetLocalFilePathque devuelve una ruta de acceso de archivo local para almacenar la base de datos de SQLite.

La IAudioRecorderService interfaz se implementa mediante la AudioRecorderService clase en cada proyecto de plataforma. Esta clase consta de StartRecordingmétodos auxiliares , StopRecordingy , que usan API de plataforma para grabar audio desde el micrófono del dispositivo y almacenarlo como un archivo wav. En iOS, usa AudioRecorderService la AVFoundation API para grabar audio. En Android, usa AudioRecordService la AudioRecord API para grabar audio. En el Plataforma universal de Windows (UWP), usa AudioRecorderService la AudioGraph API para grabar audio.

Invocación de Cognitive Services

La aplicación de ejemplo invoca lo siguiente a Microsoft Cognitive Services: