Novedades en servicios cognitivos

Microsoft Cognitive Services permite a los desarrolladores impulsar la próxima generación de aplicaciones con la capacidad de ver, escuchar, hablar, entender e interpretar las necesidades utilizando métodos de lenguaje natural.

Hemos anunciado varias actualizaciones de servicio:

  • Estamos lanzando Bing Entity Search API, un nuevo servicio disponible en preview, que facilita a los desarrolladores crear experiencias que aprovechan el poder del gráfico de conocimiento Bing con experiencias contextuales más atractivas. Aprovecha el poder de la web para buscar las entidades más relevantes, como películas, libros, personas famosas y empresas, y proporciona con mayor facilidad detalles y fuentes de información sobre ellos.
  • Presentation Translator, proyecto Microsoft Garage, ya está disponible para su descarga. Proporciona a los presentadores la posibilidad de añadir subtítulos a sus presentaciones en tiempo real, en otro idioma para situaciones multilenguaje. Con el reconocimiento de voz personalizado, los presentadores tienen la opción de personalizar el motor de reconocimiento de voz (inglés o chino) utilizando el vocabulario dentro de las diapositivas y notas de diapositivas para adaptarse a la jerga, términos técnicos, productos, nombres de lugares, etc.

Echa un vistazo a lo que estas nuevas API y servicios pueden hacer por ti.

Lleva información relevante de personas, lugares, cosas y negocios locales a tus aplicaciones con Bing Entity Search API

Bing Entity Search API es una nueva adición en nuestro conjunto ya existente de Microsoft Cognitive Services Search APIs, incluyendo Bing Web Search, Búsqueda de imágenes, Búsqueda de ví­deos, Búsqueda de noticias, Bing Autosuggest y Bing Búsqueda personalizada. Esta API te permite buscar entidades en el gráfico de conocimiento de Bing, recuperar las más relevantes, los detalles principales y las fuentes de información sobre ellas. Esta API también admite la búsqueda de empresas locales en los Estados Unidos. Ayuda a los desarrolladores a crear fácilmente aplicaciones que aprovechan el poder de la web y deleitan a los usuarios con experiencias contextuales más atractivas.

Empecemos

  • Lo primero es obtener una clave de suscripción gratuita en la página web de Cognitive Services.
  • Después de obtener la clave, puedo empezar a enviar consultas de búsqueda de entidades a Bing. Es tan simple como enviar la siguiente consulta:
 GET https://api.cognitive.microsoft.com/bing/v7.0/entities?q=mount+rainier HTTP/1.1  
Ocp-Apim-Subscription-Key: 123456789ABCDE  
X-Search-ClientIP: 999.999.999.999  
X-Search-Location: lat:47.60357;long:-122.3295;re:100  
Host: api.cognitive.microsoft.com  

La solicitud debe especificar el parámetro query q, que contiene el término de búsqueda del usuario y el encabezado Ocp-Apim-Subscription-Key. Para consultas de ubicación, como restaurantes cerca de mí, es importante incluir también los encabezados X-Search-Location y X-MSEdge-ClientIP.

Para obtener más información sobre cómo empezar, consulte la página de documentación Realización de la solicitud de las primeras entidades.

La respuesta

El siguiente código muestra la respuesta de la consulta Mount Rainier:

 {
    "_type" : "quot;SearchResponse",
    "queryContext" : {
        "originalQuery" : "mount rainier"
    },
    "entities" : {
        "queryScenario" : "DominantEntity",
        "value" : [{
            "contractualRules" : [{
                "_type" : "ContractualRules\/LicenseAttribution",
                "targetPropertyName" : "description",
                "mustBeCloseToContent" : true,
                "license" : {
                    "name" : "CC-BY-SA",
                    "url" : "http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/"
                },
                "licenseNotice" : "Text under CC-BY-SA license"
            },
            {
                "_type" : "ContractualRules\/LinkAttribution",
                "targetPropertyName" : "description",
                "mustBeCloseToContent" : true,
                "text" : "en.wikipedia.org",
                "url" : "http:\/\/en.wikipedia.org\/wiki\/Mount_Rainier"
            },
            {
                "_type" : "ContractualRules\/MediaAttribution",
                "targetPropertyName" : "image",
                "mustBeCloseToContent" : true,
                "url" : "http:\/\/en.wikipedia.org\/wiki\/Mount_Rainier"
            }],
            "webSearchUrl" : "https:\/\/www.bing.com\/search?q=Mount%20Rainier...",
            "name" : "Mount Rainier",
            "image" : {
                "name" : "Mount Rainier",
                "thumbnailUrl" : "https:\/\/www.bing.com\/th?id=A21890c0e1f...",
                "provider" : [{
                    "_type" : "Organization",
                    "url" : "http:\/\/en.wikipedia.org\/wiki\/Mount_Rainier"
                }],
                "hostPageUrl" : "http:\/\/upload.wikimedia.org\/wikipedia...",
                "width" : 110,
                "height" : 110
            },
            "description" : "Mount Rainier, Mount Tacoma, or Mount Tahoma is the highest...",
            "entityPresentationInfo" : {
                "entityScenario" : "DominantEntity",
                "entityTypeHints" : ["Attraction"],
                "entityTypeDisplayHint" : "Mountain"
            },
            "bingId" : "9ae3e6ca-81ea-6fa1-ffa0-42e1d78906"
        }]
    }
}

Para obtener más información sobre el consumo de la respuesta, consulte la página de documentación Buscando entidades y lugares en la Web.

Pruébalo ahora

No dudes en probarlo en Entity Search API Testing Console.

 

Crear experiencias de usuario más naturales con los gestos - Proyecto Praga

Project Prague es un SDK novedoso y fácil de usar, que ayuda a los desarrolladores y a los diseñadores de UX a incorporar controles basados en el gesto en sus aplicaciones.Te permite definir e implementar rápidamente gestos de manos personalizados, creando una experiencia de usuario más natural.
El SDK te permite definir tus poses de manos deseadas, utilizando simples restricciones construidas con lenguaje sencillo. Una vez que un gesto se define y se registra en su código, recibirá una notificación cuando hace el gesto, y puede seleccionar una acción para asignar en respuesta.
Utilizando Project Prague, puedes habilitar a tus usuarios para controlar intuitivamente videos, marcar páginas web, reproducir música, enviar emojis o llamar a un asistente digital.

Digamos que quiero crear un nuevo gesto para controlar mi aplicación "RotateRight" .En primer lugar, tengo que asegurarme de que tengo los requisitos de hardware y software. Por favor, consulta la sección de requisitos para obtener más información. Intuitivamente, al realizar el "RotateRight", un usuario esperarí­a que algún objeto en la aplicación de primer plano sea girado a 90 °. Hemos utilizado este gesto para activar la rotación de una imagen en una presentación de PowerPoint en el video de arriba.

El código siguiente muestra una forma de definir el gesto "RotateRight":

 

 var rotateSet = new HandPose("RotateSet", new FingerPose(new[] { Finger.Thumb, Finger.Index }, FingerFlexion.Open, PoseDirection.Forward),
                                          new FingertipPlacementRelation(Finger.Index, RelativePlacement.Above, Finger.Thumb),
                                          new FingertipDistanceRelation(Finger.Index, RelativeDistance.NotTouching, Finger.Thumb));

var rotateGo = new HandPose("RotateGo", new FingerPose(new[] { Finger.Thumb, Finger.Index }, FingerFlexion.Open, PoseDirection.Forward),
                                        new FingertipPlacementRelation(Finger.Index, RelativePlacement.Right, Finger.Thumb),
                                        new FingertipDistanceRelation(Finger.Index, RelativeDistance.NotTouching, Finger.Thumb));

var rotateRight = new Gesture("RotateRight", rotateSet, rotateGo);

El gesto "RotateRight" es una secuencia de poses con las dos manos, "RotateSet" y "RotateGo". Ambas poses requieren que el pulgar y el í­ndice estén abiertos, apuntando hacia adelante y sin tocarse. La diferencia entre las poses es que "RotateSet" especifica que el dedo í­ndice debe estar por encima del pulgar y "RotateGo" especifica que debe estar a la derecha del pulgar. La transición entre "RotateSet" y "RotateRight", por lo tanto, corresponde a una rotación de la mano a la derecha.

Ten en cuenta que los dedos medio, anular y meñique no participan en la definición del gesto "RotateRight". Esto tiene sentido porque no deseamos restringir el estado de estos dedos de ninguna manera. En otras palabras, estos dedos son libres de asumir cualquier postura durante la ejecución del gesto "RotateRight".

Una vez definido el gesto, necesito conectar el evento que indica la detección de gestos al controlador apropiado en la aplicación de destino:

 rotateRight.Triggered += (sender, args) => { /* This is called when the user performs the "RotateRight" gesture */ };

La detección en sí,­ se realiza en el proceso Microsoft.Gestures.Service.exe. Éste es el proceso asociado con la ventana "Microsoft Gestures Service" de la que se ha hablado anteriormente. Este proceso se ejecuta en segundo plano y actúa como un servicio para la detección de gestos. Necesitaré crear una instancia GesturesServiceEndpoint para poder comunicarme con este servicio. El fragmento de código siguiente crea una instancia de GesturesServiceEndpoint y registra el gesto "RotateRight" para la detección:

 var gesturesService = GesturesServiceEndpointFactory.Create();
await gesturesService.ConnectAsync();
await gesturesService.RegisterGesture(rotateRight);
When you wish to stop the detection of the "RotateRight" gesture, you can unregister it as follows:+ 
C#Copy
await gesturesService.UnregisterGesture(rotateRight);

El handler ya no se activará cuando el usuario ejecute el gesto "RotateRight". Cuando termines de trabajar con gestos, ten en cuenta que debes disponer del objeto GesturesServiceEndpoint:

 gesturesService?.Dispose();

Además, para que el código anterior se compile, tendrá que hacer referencia a los siguientes ensamblados, ubicados en el directorio indicado por la variable de entorno MicrosoftGesturesInstallDir:

  • Microsoft.Gestures.dll
  • Microsoft.Gestures.Endpoint.dll
  • Microsoft.Gestures.Protocol.dll

Para obtener más información acerca de la guía de introducción, consulta la documentación.

Daniel Ortiz López
Technical Evangelist Intern
@ortizlopez91