Alexa Skill & AWS Translate

Javi Mora Díaz
Sonara
Published in
3 min readJul 7, 2020

Dentro del ecosistema de servicios que ofrece AWS tenemos muchos servicios que pueden aportar funcionalidad muy interesante a nuestra Skill. Hoy os voy a hablar sobre AWS Translate.

AWS Translate

Es un servicio de traducción automática que ofrece traducción de idiomas accesible, de alta calidad y rápida. Permite traducciones entre africano, albanés, alemán, chino,, coreano, eslovaco, español (España y México), francés, holandés, inglés, italiano… y así hasta 55 idiomas y variantes.

Precios

Disponemos de una capa gratuita de 2 millones de caracteres al mes durante 12 meses. Fuera de esa capa el precio sería de 15 USD por cada millón de caracteres.

Por ejemplo:

Supongamos que hacemos una Skill que hace de traductor sencillo, donde el usuario traduce frases cortas (6 palabras máximos, unos 50 caracteres), en el caso de que tengamos 2 mil accesos a nuestra Skill al mes, pagaremos unos 22,5 USD:

6 x 50 x 2000 x 0,000015 USD = 9 USD

Lambda

Bien, nos ha convencido AWS Translate y estamos dispuesto a pagar su precio o probar su capa gratuita, pero, como lo usamos en nuestra Skill?. Pues es muy sencillo, a continuación os voy a explicar un ejemplo con NodeJS donde se muestra una Skill que traduce la frase que quiera el usuario de español a inglés.

Lo primero es crear nuestra función de translate:

Esta función recibe 3 parámetros, el texto a traducir, el lenguaje origen y el lenguaje al que queremos traducir la frase, esta función está pensada para usarlo en múltiples idiomas.

En principio AWS Translate es capaz de detectar el idioma origen, pero nosotros lo indicamos igualmente.

Ahora vamos a crear nuestro intent que nos permita enviar frases a traducir.

En el modelo podemos ver como he creado el intent TranslateIntent donde hacemos uso de un slot tipo Amazon.SearchQuery, en este caso las traducciones estarán limitadas a los idiomas disponibles para Amazon.SearchQuery. Además he añadido algunas utterances para que el usuario pida una traducción.

Por último debemos crear nuestro handler que nos permita manejar este nuevo intent:

Aquí sabemos que estamos realizando una traducción español -> inglés, pero todo esto podemos hacerlo dinámico de forma que se use el idioma de la Skill como idioma origen y que el usuario pueda elegir el idioma de destino.

Ya por último hacemos que Alexa con SSML hable en el idioma al que hemos traducido la frase con la siguiente etiqueta:

<lang xml:lang=”en-US”>’+translateOutput.TranslatedText+’</lang>

El esquema de arquitectura de nuestra Skill sería el siguiente:

En resumen creo que es un servicio que funciona muy bien y, aunque pueda tener un coste asociado, puede dar una experiencia de usuario bastante buena.

Tenéis un ejemplo de la Skill en mi Github.

Y si queréis consultar mas ejemplos con Alexa, os dejo el enlace a mis post.

Espero que os guste, ¡Muchas Gracias!

--

--