Microsoft (MS) Azure es un servicio de computación en la nube proporcionado por Microsoft, que cuenta con más de 600 servicios. En este artículo, vamos a hablar de uno de ellos: MS Azure Cognitive Services

¿Qué son los Servicios Cognitivos de Azure?

Vamos a contarle un poco lo que son. Los Servicios Cognitivos de Azure son APIs, SDKs y servicios, que fueron desarrollados para permitir la capacidad de construir aplicaciones con algoritmos inteligentes sin necesidad de construirlas desde cero. Lo mejor es que puede utilizarlos de forma gratuita, aunque con algunas limitaciones.

Si está jugando con estos servicios para encontrar uno apropiado para usted, le alegrará saber que puede probar casi todos estos servicios en el sitio web de MS Azure, ¡y esto es una oportunidad realmente genial!

Hay cinco categorías de estos servicios: visión, habla, lenguaje, conocimiento y búsqueda, como se muestra en el esquema siguiente.

Estos cinco llamados pilares resumen la variedad de la funcionalidad proporcionada y contienen más categorías y subcategorías. En este artículo, compartiremos algunos detalles más sobre cada uno de ellos para ofrecerle una visión general de los servicios cognitivos de Azure y de las oportunidades que ofrecen.

Visión

Empecemos con Vision. Este conjunto de APIs proporciona la capacidad de identificar y analizar con precisión el contenido de las imágenes y/o los vídeos, y responde a diversas necesidades. Las categorías que se incluyen son Visión por ordenador, Cara, Indexador de vídeo, Moderador de contenido y Visión personalizada. Describiremos todas ellas en detalle, y le mostraremos cómo funciona en un escenario de caso real.

Utilizando la API de Visión por Computador podrá analizar sus imágenes y obtener información sobre la propia imagen y su contenido visual: etiquetas y descripción en cuatro idiomas, puntuaciones de contenido adulto y subido de tono, etc. Además, hay dos API que le permiten reconocer palabras e incluso texto escrito a mano a partir de estas imágenes. En cuanto a los vídeos, puede analizarlos casi en tiempo real extrayendo fotogramas del vídeo de su dispositivo y obtener una descripción textual del contenido del vídeo.

Si alguna vez ha querido utilizar la detección y/o verificación de rostros en sus aplicaciones, entonces la API de rostros es para usted. Con ella podrá comprobar la probabilidad de que dos rostros pertenezcan a la misma persona, detectar rostros en la imagen con algunas descripciones del aspecto de sus propietarios o detectar emociones como la ira, el desprecio, el asco, el miedo, la felicidad, la neutralidad, la tristeza y la sorpresa.

Azure Video Indexer es una aplicación en la nube construida sobre Azure Media Analytics, Azure Search y varios servicios cognitivos como la API de rostros, Microsoft Translator, la API de visión por ordenador y el servicio de voz personalizado. Contiene muchas funcionalidades y para emplearlas no es necesario ser un desarrollador, se puede utilizar el portal web de Video Indexer para utilizar el servicio sin escribir una sola línea de código. Por el momento, puede convertir la voz en texto en 10 idiomas, ofrecerle algunas estadísticas de los ratios de habla de los hablantes, identificar sentimientos y emociones como la alegría, la tristeza, la ira o el miedo, moderar el contenido detectando los elementos visuales adultos y/o subidos de tono, identificar efectos de audio como el silencio, las palmas, etc. También puede utilizar esta API para desencadenar flujos de trabajo o automatizar tareas detectando algunas frases o efectos visuales.

La API Azure Content Moderator es un servicio cognitivo que ofrece la posibilidad de comprobar el contenido de textos, imágenes y vídeos para descubrir contenido no deseado. En caso de que se encuentre este tipo de material, el contenido se marca con etiquetas, que su aplicación deberá entonces manejar. Además de la detección automática, también puede optar por un proceso híbrido de moderación de contenidos denominado “herramienta de revisión humana” en el caso de que la predicción deba atemperarse con un contexto del mundo real

La última de ellas es la Visión Personalizada (tenga en cuenta que en el momento de escribir este artículo, esta característica está en modo de vista previa). La API de Azure Custom Vision es un poco más complicada que la de Computer Vision, y le permite crear sus propias clasificaciones. Esto significa que tendrá que entrenar al algoritmo en su conjunto de imágenes con sus etiquetas correctas. Mientras se entrena, el algoritmo calcula su propia precisión probándose a sí mismo en esos mismos datos. Después, puede probarlo, volver a entrenarlo y, finalmente, utilizarlo para clasificar nuevas imágenes según las necesidades de su aplicación, o puede exportar el modelo para utilizarlo fuera de línea. Este entrenamiento puede realizarlo a través de una interfaz basada en la web o utilizando un conjunto de SDK.

La segunda categoría de la que vamos a hablar es la de voz, que proporciona funciones tan populares como la conversión de voz a texto (también llamada reconocimiento o transcripción de voz), la conversión de texto a voz (síntesis de voz) y la traducción de voz. Puede utilizar la transcripción de voz para convertir el audio hablado en texto a partir de los archivos grabados o en tiempo real. El servicio puede devolverle resultados intermedios de las palabras que se han reconocido y detectar automáticamente el final del discurso. El reconocimiento del habla le permite construir aplicaciones inteligentes activadas por la voz, así como proporcionar la verificación de la personalidad o la identificación del hablante

La API de conversión de texto en voz dota de funcionalidad para traducir su texto al audio de forma casi indistinguible como si se tratara de un humano real. Admite más de 75 voces en más de 45 idiomas y localidades

La API de servicios de voz le permite añadir una traducción de voz a sus aplicaciones tanto para la traducción de voz a voz como de voz a texto. Como se menciona en la documentación de Microsoft, la API de traducción de voz utiliza las mismas tecnologías que potencian varios productos y servicios de Microsoft. Este servicio ya está siendo utilizado por miles de empresas de todo el mundo en sus aplicaciones y flujos de trabajo.

Idioma

Lenguaje se compone de APIs como Análisis de Texto, Texto Traductor, Corrector Ortográfico de Bing, Moderador de Contenido (que también forma parte de “Visión”) y Comprensión del Lenguaje

Con Text Analytics API puede analizar su texto para identificar el lenguaje, el sentimiento, las frases clave y las entidades del mismo. Translator API es un servicio de traducción automática neural que le ofrece la posibilidad de traducir texto a texto en más de 60 idiomas.

¿Necesita una revisión ortográfica en su aplicación teniendo en cuenta un contexto? Entonces, le alegrará saber que la API de búsqueda ortográfica de Bing le ofrece esta opción, que incluye el uso de correcciones específicas para los documentos (añade mayúsculas, puntuación básica, etc. para la creación de documentos) y la búsqueda en la web (es más “agresiva” para devolver mejores resultados de búsqueda)

Y la Comprensión del Lenguaje (LUIS): es un servicio API basado en la nube que puede ayudarle a analizar el texto conversacional y en lenguaje natural del usuario y proporcionar su significado global e información detallada. Una aplicación cliente común para LUIS es un chatbot, pero también puede utilizarse para aplicaciones de medios sociales, chatbots, aplicaciones de escritorio habilitadas para el habla, etc.

Conocimiento

Knowledge API consiste únicamente en Q&A Maker – servicio API basado en la nube, que proporciona una gran funcionalidad para crear un servicio de preguntas y respuestas a partir del contenido semiestructurado como documentos de preguntas frecuentes, URLs y manuales de productos. Puede utilizarlo a través del bot o de la aplicación para ofrecer a sus usuarios la oportunidad de obtener respuestas en fracciones de segundo sin necesidad de leer las FAQ o esperar a que alguien responda. El servicio responderá haciendo coincidir una pregunta con la mejor respuesta posible de las preguntas y respuestas de su base de conocimientos.

Busque en

Este conjunto de APIs permite crear aplicaciones que proporcionan una potente búsqueda a escala web sin anuncios. Todas las API tienen sus propias categorías, como la búsqueda de vídeos o la búsqueda en la web, y similares, y, en función de ello, proporcionan un tipo diferente de búsquedas, lo que incluso puede hacer que su aplicación se ajuste a sus necesidades. Entre ellas, puede encontrar tipos de búsqueda como la de noticias, la de vídeo, la de imágenes, la búsqueda web completa sin anuncios, la autosugestión o incluso la búsqueda visual por contenido visual de imágenes.

Definitivamente, cada uno de estos servicios puede ser, y sin duda todos lo merecen, descrito en un artículo independiente con una visión general en profundidad y ejemplos. Sin embargo, por la naturaleza inductiva del artículo que nos ocupa, hemos decidido seleccionar dos de ellos y mostrar algunos ejemplos de uso. Así pues, practiquemos un poco con la API de reconocimiento de emociones y de transcripción de voz.

Reconocimiento de emociones

Si alguna vez ha intentado revisar este tema por sí mismo, probablemente habrá oído hablar de la API de emociones de Azure, que ya se utilizaba para el reconocimiento de emociones. El 15 de febrero de 2019, esta API quedará obsoleta, por lo que en este párrafo revisaremos esta capacidad como parte de la API de detección facial, que la sustituirá.

Requisitos previos:
  • Clave de suscripción a la API de rostros. Hay varias formas de obtenerla: una de ellas es utilizar la clave de prueba, que puede obtener en la página de Microsoft “Try Cognitive Services” o crear una cuenta de Cognitive Service. Para la segunda opción, también necesitará una suscripción a Azure. No se asuste por esto, Azure ofrece una gran oportunidad para crear una cuenta gratuita y utilizar planes de niveles gratuitos para las necesidades de los desarrolladores.
  • En el ejemplo dado se utilizará un .NET Core, por lo que puede aplicar cualquiera a su gusto IDE. También puede crear un proyecto con .NET Framework, en este caso, necesitará Visual Studio 2015 o 2017.
  • Una imagen con formato JPEG, PNG, GIF (se utilizará el primer cuadro), o BMP con un tamaño de archivo de 1KB a 6MB. Se pueden devolver hasta 64 caras para una imagen si su tamaño es de 36×36 a 4096×4096 píxeles. Hay algunos casos, en los que las caras pueden no ser detectadas debido a los grandes ángulos de las caras o a la orientación incorrecta de la imagen – téngalo en cuenta, cuando elija una imagen para analizarla.


En el IDE cree una nueva aplicación de consola (.NET Core) y nómbrela “CognitiveServicesEx” (o lo que quiera, sólo téngalo en cuenta, luego copiará el código del ejemplo). Utilizaremos el paquete NuGet “Newtonsoft.Json” para mostrar una respuesta, así que haga clic con el botón derecho del ratón en el nombre del proyecto y seleccione en el menú contextual “Gestionar paquetes NuGet…”. Busque en la lista este paquete e instálelo. Después de eso, reemplace en el archivo del proyecto creado “Program.cs” el contenido con el siguiente código:

En el IDE cree una nueva aplicación de consola (.NET Core) y nómbrela “CognitiveServicesEx” (o lo que quiera, sólo téngalo en cuenta, luego copiará el código del ejemplo). Utilizaremos el paquete NuGet “Newtonsoft.Json” para mostrar una respuesta, así que haga clic con el botón derecho del ratón en el nombre del proyecto y seleccione en el menú contextual “Gestionar paquetes NuGet…”. Busque en la lista este paquete e instálelo. Después de eso, reemplace en el archivo del proyecto creado “Program.cs” el contenido con el siguiente código:

Antes de ejecutar este ejemplo, desglosaremos este trozo de código para usted. Este ejemplo trabaja con la imagen almacenada localmente, cuya ruta establecemos en la variable imageFilePath. También puede trabajar con URLs de imágenes y revisaremos este ejemplo un poco más adelante.

En la variable “requestParameters” definimos qué información necesitamos exactamente. A través de estos parámetros opcionales, también podemos obtener la edad, el sexo, la pose de la cabeza (parámetro headPose), el vello facial (parámetro facialHair), las gafas, el pelo, el maquillaje, la oclusión, los accesorios, el desenfoque, la exposición y el ruido. Cada uno de estos parámetros puede añadirse a la variable “requestParameters”, dividida por la coma. Revisaremos en el ejemplo sólo los parámetros de emociones y sonrisa.

En cuanto al enlace a la API, tenga en cuenta que debe utilizar la misma región que utilizó para obtener una clave de suscripción. Las claves de suscripción a la prueba gratuita siempre se generan en la región “westus”, por lo que, si utiliza dichas claves en este momento, no debe preocuparse.

Ahora, ejecute la aplicación. Para cada tipo de emoción verá un número de 0 a 1, cuanto mayor sea este número, más fuerte será esta emoción manifestada por una persona. Para la prueba utilizaremos la foto de nuestra fiesta corporativa de Halloween:

Los resultados del análisis de la imagen son los siguientes:

Una llamada exitosa devuelve una matriz de entradas de caras clasificadas por el tamaño del rectángulo de la cara en orden descendente. Cada entrada de cara contiene los siguientes valores (dependiendo de los parámetros de la consulta)

  • faceId – el identificador único del rostro detectado ( caduca en 24 horas después de la llamada de detección);
  • faceRectangle – coordenadas del rectángulo de la ubicación de la cara;
  • faceAttributes:
    • sonrisa: intensidad de la sonrisa (un número entre 0 y 1);
    • emoción: incluye un valor de intensidad de las emociones neutra, ira, desprecio, asco, miedo, felicidad, tristeza y sorpresa (un número entre 0 y 1).

Puede revisar una lista de códigos y mensajes de error en la documentación de Microsoft, la mayoría de ellos son causados por el tamaño de la imagen, argumentos no válidos o enlaces a imágenes.

Como hemos mencionado anteriormente, revisaremos cómo debería ser la llamada REST, si necesita analizar la imagen por URL. Tan sencillo como eso, sólo tiene que añadir el parámetro URL como HttpContent para el método PostAsync. Así, el método “GetEmotionsFromLocalImage”, en este caso, tendrá este aspecto:

Como puede ver, el trabajo con esta API es pan comido. Microsoft proporciona servicios muy potentes, que son realmente fáciles de usar. Ahora, puede experimentar por sí mismo con otros parámetros opcionales para obtener una revisión completa de cómo funciona y qué capacidades proporciona.

Transcripción de voz

La API de conversión de voz a texto ofrece la posibilidad de convertir cualquier audio hablado (como un archivo grabado, el audio del micrófono, etc.) en texto. En nuestro ejemplo, intentaremos transcribir a texto un audio de muestra grabado

Requisitos previos:
  • una clave de suscripción a la API de voz. Las formas de obtenerla son las mismas que para la clave de suscripción de la API de Visión.
  • Los requisitos previos del IDE también son los mismos que para la API de voz.
  • Revisaremos la transcripción del archivo grabado a través de la API REST, que debería estar en el siguiente formato
    • WAV, códec: PCM, tasa de bits: 16 bits, frecuencia de muestreo: 16 kHz, mono, duración hasta 10 segundos;
    • OGG, códec: OPUS, tasa de bits: 16 bits, frecuencia de muestreo: 16 kHz, mono, duración hasta 10 segundos.

Los requisitos anteriores para el archivo sólo son válidos para la API REST y el WebSocket del Servicio de Voz. Si necesita reconocer un audio más largo, utilice el SDK de voz o la transcripción por lotes. Actualmente, el SDK de voz sólo es compatible con el formato WAV con códec PCM y debe tenerlo en cuenta cuando utilice el SDK. En este artículo, hemos decidido utilizar la API REST, ya que el SDK suele ser más fácil de utilizar, y además soporta un número limitado de idiomas. En contrapartida, la API REST funciona con cualquier lenguaje que pueda hacer peticiones HTTP y por eso estos ejemplos pueden ser más útiles.

Modifiquemos un poco nuestro programa de prueba.

Como puede ver, hemos ampliado un poco nuestro programa y hemos añadido la posibilidad de que el usuario elija qué analizar. Eche un vistazo al método “ConvertAudioToText”: verá que contiene dos URL de la API. Normalmente, para la API REST de voz a texto, puede utilizar una clave de suscripción, pero también existe otra opción (que es necesaria y la única disponible para la API REST de texto a voz) es utilizar una cabecera de Autorización. La transcripción de voz se realizó con la cabecera Authorization para diversificar los ejemplos y proporcionar una revisión más amplia. Cuando se utiliza la cabecera Authorization: Bearer header, tiene que enviar la solicitud al punto final issueToken. Éste le proporciona un token, que será válido para el análisis del audio durante los próximos 10 minutos. Como el audio utilizó la muestra estándar con la frase “¿Qué tiempo hace?”, fue claramente reconocido por la API:

Según nuestra experiencia, cuanto más claro sea el sonido (sin ruidos, etc.), más preciso será el resultado.

Conclusión

Incluir la inteligencia artificial en las soluciones es cada vez más popular en estos días. Y Azure de Microsoft es uno de los gigantes, que proporciona vigorosos servicios impulsados por la IA, útiles en muchas áreas, que son fáciles de implementar y emplear. Si está interesado en utilizar los servicios cognitivos de Azure para sus aplicaciones y necesita que alguien le ayude, póngase en contacto con nosotros.

Acerca de Redwerk

Fundada en 2005, Redwerk ha pasado de ser un nudo de entusiastas a una agencia con dos sedes que alberga a más de 60 personas expertas en el uso de la tecnología moderna y convocadas para llevar a las industrias de alta tecnología a un nuevo nivel. Empleando sólo herramientas avanzadas construimos soluciones fabulosas y creativas para empresas de todos los tamaños en todo el mundo. Redwerk es el lugar adecuado para subcontratar el desarrollo de software a medida, ya que nuestra pila tecnológica no sólo abarca la codificación, sino también el análisis de requisitos, la arquitectura, el diseño de la interfaz de usuario y la interfaz de usuario (UI/UX), el control de calidad y las pruebas, el mantenimiento, la administración del sistema y el soporte. Si busca un equipo dedicado, un enfoque a medida y transparencia, entonces Redwerk es esa misma ventanilla única en la que su proyecto se hace realidad a tiempo y dentro del bolsillo.