Reemplazando la Voz de Alexa con Clips de Audio
Como parte importante de mi proceso de aprendizaje, en cada nuevo proyecto que decido explorar — independientemente de su complejidad — procuro incluir algunos conceptos que sean totalmente nuevos para mi como desarrollador.
Para la implementación de mi primera Skill destinada al mercado Americano, he decidido trabajar por primera vez con ficheros de audio. Es algo novedoso que resulta simple de implementar y que ofrece resultados muy interesantes.
Inicialmente tenía en mente realizar algo al estilo Jeopardy, una introducción basada en un fichero de audio, y el resto de la skill con el clásico TTS (Text To Speech) de Alexa. Lo cierto es que una vez empecé a jugar con la potencia de los ficheros de audio, este plan cambió por completo. Me resultaba de repente mucho más interesante la idea de reemplazar todas las interacciones de Alexa, y verificar que en efecto se puede lanzar una skill sin que intervenga la voz del bot de Amazon.
La elección del foco de ésta skill fue simple. Buscaba implementar un proyecto del tipo trivia, el cual pudiese ser utilizado para divulgar información sobre alguna causa en particular. La causa a divulgar: Mission First. Un programa recién lanzado en el estado de Virginia, en los Estados Unidos, para movilizar veteranos guerra y sus familias en las próximas elecciones al Congreso de ese país.
El Flujo de la Conversación
El diseño del flujo es bastante simple. Al invocar la skill, luego de escuchar el mensaje de bienvenida, podemos pedir información (ayuda) sobre como utilizarla y podemos pedir un fragmento de información sobre el programa (fact).
En todo momento podemos solicitar a la skill que repita la información que nos ha dado previamente y a su vez, como es normal en este tipo de aplicaciones, podemos salir del todo y cerrar la skill. En este caso se escucha un último mensaje de agradecimiento y despedida.
Desde el punto de vista del desarrollo de esta skill no existen grandes retos técnicos. Para el caso de Mission First, he decidido jugar un poco con un concepto que vi en alguna oportunidad revisando tutoriales de otros desarrolladores: el interruptor.
Un switch o interruptor consiste básicamente en crear una variable que te permita cambiar por completo algún estado de la skill según una preferencia particular. En este caso me interesaba la idea de poder pasar de una skill con ficheros de audio — su comportamiento por defecto — a una skill que utilizase la voz de Alexa.
Preparación de los Ficheros de Audio
Para lograr este efecto solo es necesario garantizar que se cuentan con pares de recursos para cada elemento de la interfaz de voz. Por cada nota de audio, existe una cadena de texto equivalente.
Es importante destacar que los ficheros de audio a utilizar deben cumplir con ciertos requerimientos técnicos de configuración. A la hora de exportar los ficheros, debemos tener en cuenta que tanto el formato como su longitud, bit rate y sample rate.
Existen diferentes formas de grabar y exportar con la configuración correcta cada fichero. En este caso, yo he utilizado la herramienta gratuita Audacity. Es importante mencionar que por tema de licencias, Audacity necesita que instalemos una librería adicional — LAME — que podemos descargar fácilmente de su web oficial.
Los ficheros de audio que vamos a utilizar en nuestra skill deben encontrarse disponibles y accesibles en un repositorio web. En este caso, he decidido utilizar un bucket de Amazon S3 para colgar todos los ficheros de mi skill. Una de las ventajas de utilizar S3 es que podemos decidir donde ubicar geográficamente nuestros ficheros. En este caso resulta lógico pensar que un servidor en los Estados Unidos ofrecerá un mejor rendimiento que uno ubicado en Europa.
Otro detalle a tener en cuenta es que aún cuando debemos configurar los permisos de visibilidad de cada fichero para su acceso público, el bucket que los contiene puede seguir siendo privado.
La Lógica en la Función Lambda λ
Una vez configurados todos los ficheros de audio y sus correspondientes cadenas de texto, solo nos queda verificar en la implementación que al momento de “pasar el interruptor”, la función lambda se encargue de ejecutar las instrucciones correspondientes a cada caso.
Una simple estructura del tipo if {} else {} me permite decidir la modalidad de ejecución en cada elemento de la interfaz. Quizás exista una forma más elegante de realizar esta configuración “en caliente,” pero de momento la simplicidad tiene prioridad en todos mis experimentos.
El resultado es el esperado. Al invocar la skill y durante todo su ciclo de vida, al menos que se indique lo contrario, la voz de Alexa ha sido completamente reemplazada por las grabaciones suministradas vía directrices del SSML (Speech Synthesis Markup Language). Cambiar a la voz de Alexa será tan simple como modificar el valor de useHumanVoice a falso.
Pruebas Más Allá del Simulador
Realizar pruebas en dispositivos Echo en este momento sigue siendo todo un reto en España.
En este caso, haciendo uso de una tableta de Amazon — que cree que se encuentra en los Estados Unidos — y del programa Beta para desarrolladores de Amazon, puedo ingeniármelas para realizar pruebas en un dispositivo real.
Durante el proceso de desarrollo, las pruebas en el simulador son más que suficiente para verificar que todo funciona correctamente. La principal ventaja que nos da el poder probar en un dispositivo real, es precisamente el poder observar a un usuario final interactuar con la skill. Es aquí cuando ponemos a prueba nuestro diseño del modelo de interacción y todos los casos que se alejan del “happy path”.
Proceso de Certificación para el Marketplace Americano
Una vez terminadas las pruebas básicas, el proceso de certificación resulta sorpresivamente rápido. En tan solo un día, la skill de Mission First es aprobada y se encuentra disponible en el marketplace de los Estados Unidos.
Mi experiencia con el proceso de certificación de Amazon ha sido muy positiva hasta la fecha. Tanto para las cuatro skills publicadas en el marketplace Español (a la espera de su lanzamiento) como para la primera skill publicada en el marketplace Americano.
Es importante destacar que Amazon te envía una encuesta de satisfacción en cada uno de los correos de confirmación de certificación. De esta forma mantienen un ciclo de feedback constante con los desarrolladores.
El uso de ficheros de audio, demostrado en una de sus implementaciones más simples en la skill de Mission First, tiene un enorme potencial a la hora de ofrecer experiencias de usuario con grandes niveles de empatía.
Ya sea para ampliar la divulgación sobre un proyecto político, una causa benéfica, o para entretener a los usuarios con juegos de aventura, el uso de ficheros de audio nos permite a los desarrolladores crear conexiones más profundas con nuestros usuarios. Conexiones que son realmente difíciles de lograr con otro tipo de plataforma distinta a la voz.
Los comentarios, mejoras a las soluciones propuestas y feedback en general son siempre bienvenid@s.
Gracias por leer,
Juan.
Diseñando para la Voz es una iniciativa personal de Juan González Ponce que trae contenido relacionado al mundo del desarrollo de Alexa Skills para el servicio de Amazon, en Castellano, con la finalidad de compartir ideas y lecciones aprendidas en el camino.