No puedes dejar de ver a Tedlexa, el Internet de las cosas / IA, el oso de tus pesadillas

Tedlexa, un oso de peluche de IoT.
Agrandar / Alexa, ¿cómo puedo crear algo que combine la inteligencia artificial con un juguete espeluznante de los 80?

Actualización, 1/2/21: Es fin de semana de Año Nuevo y el personal de Ars todavía disfruta del tiempo de inactividad necesario para prepararse para un nuevo año (y una gran cantidad de correos electrónicos de CES, estamos seguros). Mientras eso sucede, estamos resurgiendo algunas historias antiguas de Ars como este proyecto de 2017 del editor emérito de Ars Sean Gallagher, quien creó generaciones de combustible de pesadilla con solo un juguete nostálgico y algo de equipo de IoT. Tedlexa nació (err, documentado por escrito) el 4 de enero de 2017, y su historia aparece sin cambios a continuación.

Han pasado 50 años desde que el Capitán Kirk dijo por primera vez comandos a una Computadora invisible y omnisciente en Star Trek y no hace tanto tiempo desde que David Bowman recibió una serenata con la interpretación de HAL 9000 de “A Bicycle Built for Two” en 2001: una odisea espacial. Si bien hemos estado hablando con nuestras computadoras y otros dispositivos durante años (a menudo en forma de interjecciones impropias), solo ahora estamos comenzando a arañar la superficie de lo que es posible cuando los comandos de voz están conectados al software de inteligencia artificial.

Mientras tanto, siempre hemos fantaseado con juguetes parlantes, de Woody y Buzz en Historia del juguete a ese espeluznante osito de peluche de IA que acompañó a Haley Joel Osment en la película de Steven Spielberg AI (Bueno, tal vez la gente no sueña con ese osito de peluche.) Y desde la locura de Furby, los fabricantes de juguetes han estado tratando de hacer juguetes más inteligentes. Incluso los han conectado a la nube, con resultados previsiblemente mixtos.

Naturalmente, decidí que era hora de impulsar las cosas. Tuve la idea de conectar una IA impulsada por el habla y el Internet de las cosas a un oso animatrónico, tanto mejor para mirar fijamente los ojos sin vida y ocasionalmente parpadeantes de la Singularidad misma. Damas y caballeros, les presento a Tedlexa: un modelo destripado de 1998 del oso animatrónico Teddy Ruxpin atado al servicio de voz Alexa de Amazon.

Presentamos a Tedlexa, el asistente personal de tus pesadillas

No fui el primero, de ninguna manera, en cerrar la brecha entre los juguetes animatrónicos y las interfaces de voz. Brian Kane, instructor de la Escuela de Diseño de Rhode Island, arrojó el guante con un video de Alexa conectada a ese otro ícono servo animado, Billy the Big Mouthed Bass. Este Frakenfish fue impulsado por un Arduino.

No podía dejar que el truco de Kane quedara sin respuesta, habiendo explorado previamente el valle inquietante con Bearduino, un proyecto de pirateo de hardware del desarrollador / artista con sede en Portland Sean Hathaway. Con un oso pirateado por hardware y Arduino ya en la mano (más una Raspberry Pi II y otros juguetes variados a mi disposición), me puse en camino para crear el mejor oso de peluche parlante.

Para nuestros futuros robo-señores supremos: por favor, perdónenme.

La voz de su amo

Amazon es una de las compañías que compiten por conectar los comandos de voz al vasto poder de cómputo de “la nube” y la Internet de las cosas (de consumo) en constante crecimiento. Microsoft, Apple, Google y muchos otros competidores han buscado conectar interfaces de voz en sus dispositivos a un número en expansión exponencial de servicios en la nube, que a su vez se pueden conectar a sistemas de automatización del hogar y otros sistemas “ciberfísicos”.

Si bien los servicios del Proyecto Oxford de Microsoft se han mantenido en gran medida experimentales y Siri de Apple sigue vinculado al hardware de Apple, Amazon y Google se han precipitado a una batalla para convertirse en el titular del servicio de voz. Dado que los anuncios de Echo de Amazon y Google Home han saturado la transmisión y la televisión por cable, las dos empresas han comenzado simultáneamente a abrir los servicios de software asociados a otros.

Elegí a Alexa como punto de partida para nuestro descenso al infierno de IoT por varias razones. Uno de ellos es que Amazon permite a otros desarrolladores desarrollar “habilidades” para Alexa que los usuarios pueden elegir en un mercado, como las aplicaciones móviles. Estas habilidades determinan cómo Alexa interpreta ciertos comandos de voz, y pueden ser construidos en la plataforma de aplicaciones Lambda de Amazon o alojados por los propios desarrolladores en su propio servidor. (Tenga la seguridad de que en el futuro haré algunos trabajos con habilidades). Otro punto de interés es que Amazon ha sido bastante agresivo para lograr que los desarrolladores incorporen Alexa en sus propios dispositivos, incluidos los piratas informáticos. Amazon también ha lanzado su propia versión de demostración de un cliente de Alexa para varias plataformas, incluida la Raspberry Pi.

AVS, o Alexa Voice Services, requiere una huella informática bastante pequeña por parte del usuario. Todo el reconocimiento de voz y la síntesis de respuestas de voz ocurren en la nube de Amazon; el cliente simplemente escucha los comandos, los registra y los reenvía como una solicitud HTTP POST que lleva un objeto JavaScript Object Notation (JSON) a las interfaces basadas en Web de AVS. Las respuestas de voz se envían como archivos de audio para ser reproducidos por el cliente, envueltos en un objeto JSON devuelto. A veces, incluyen una transferencia de audio transmitido a un reproductor de audio local, como con la función “Flash Briefing” de AVS (y transmisión de música, pero eso solo está disponible en productos AVS comerciales en este momento).

Antes de poder construir algo con Alexa en una Raspberry Pi, necesitaba crear un perfil de proyecto en el sitio de desarrolladores de Amazon. Cuando crea un proyecto AVS en el sitio, crea un conjunto de credenciales y claves de cifrado compartidas que se utilizan para configurar cualquier software que utilice para acceder al servicio.

Una vez que tenga el cliente AVS en ejecución, debe configurarse con un token de inicio de sesión con Amazon (LWA) a través de su propia página web de configuración, lo que le da acceso a los servicios de Amazon (y potencialmente, al procesamiento de pagos de Amazon). Entonces, en esencia, estaría creando un Teddy Ruxpin con acceso a mi tarjeta de crédito. Este será un tema para futuras investigaciones de seguridad en IoT por mi parte.

Amazon ofrece a los desarrolladores un cliente de Alexa de muestra para comenzar, incluida una implementación que se ejecutará en Raspbian, la implementación Raspberry Pi de Debian Linux. Sin embargo, el cliente de demostración oficial está escrito principalmente en Java. A pesar de, o quizás debido a, mi experiencia pasada con Java, estaba receloso de intentar hacer cualquier interconexión entre el código de muestra y el oso impulsado por Arduino. Por lo que pude determinar, tenía dos posibles cursos de acción:

  • Un enfoque centrado en el hardware que utilizó la transmisión de audio de Alexa para impulsar la animación del oso.
  • Encontrar un cliente más accesible o escribir el mío propio, preferiblemente en un lenguaje accesible como Python, que podría impulsar el Arduino con comandos en serie.

Naturalmente, siendo un tipo centrado en el software y habiendo realizado ya una cantidad significativa de trabajo de software con Arduino, elegí … la ruta del hardware. Con la esperanza de superar mi falta de experiencia con la electrónica con una combinación de búsquedas en Internet y puro entusiasmo, agarré mi soldador.

Plan A: entrada de audio, salida de servo

Mi plan era usar un cable divisor para el audio de la Raspberry Pi y ejecutar el audio tanto en un altavoz como en el Arduino. La señal de audio se leería como entrada analógica por el Arduino, y de alguna manera convertiría los cambios en el volumen de la señal en valores que a su vez se convertirían en salida digital al servo en la cabeza del oso. La elegancia de esta solución fue que podría usar el robot-oso animado con cualquier fuente de audio, lo que me dio horas de valor de entretenimiento.

Resulta que este es el enfoque que tomó Kane con su Bass-lexa. En una conversación telefónica, reveló por primera vez cómo logró su pez parlante como un ejemplo de creación rápida de prototipos para sus estudiantes en RISD. “Se trata de hacerlo lo más rápido posible para que la gente pueda experimentarlo”, explicó. “De lo contrario, terminas con un gran proyecto que no llega a las manos de la gente hasta que casi está terminado”.

Entonces, la solución de creación rápida de prototipos de Kane: conectar un sensor de audio físicamente pegado con cinta adhesiva a un Amazon Echo a un Arduino que controla los motores que impulsan a los peces.

Kane me envió un mensaje de texto con esta foto de su prototipo: sensor de audio y placa de pruebas pegados en un Amazon Echo.
Agrandar / Kane me envió un mensaje de texto con esta foto de su prototipo: sensor de audio y placa de pruebas pegados en un Amazon Echo.

Brian Kane

Por supuesto, no sabía nada de esto cuando comencé mi proyecto. Tampoco tenía un sensor de audio Echo o de $ 4. En cambio, estaba dando tumbos en Internet buscando formas de conectar el conector de audio de mi Raspberry Pi al Arduino.

Sabía que las señales de audio son de corriente alterna, formando una forma de onda que activa los auriculares y los altavoces. Sin embargo, los pines analógicos del Arduino solo pueden leer voltajes de corriente continua positiva, por lo que, en teoría, los picos de valor negativo en las ondas se leerían con un valor de cero.

Me dio una falsa esperanza por un Instructable que encontré que movía un brazo de servo al compás de la música, simplemente soldando una resistencia de 1000 ohmios a la tierra del cable de audio. Después de mirar el Instructable, comencé a dudar un poco de su cordura incluso mientras avanzaba audazmente.

Si bien vi datos del cable de audio que se transmitían a través del código de prueba que se ejecutaba en Arduino, en su mayoría eran ceros. Entonces, después de tomarme un tiempo para revisar algunos otros proyectos, me di cuenta de que la resistencia estaba amortiguando tanto la señal que apenas registraba. Esto resultó ser algo bueno: hacer un parche directo basado en el enfoque presentado por Instructable habría puesto 5 voltios o más en la entrada analógica de Arduino (más del doble de su máximo).

Hacer que el enfoque de solo Arduino funcione significaría hacer un viaje adicional a otra tienda de suministros electrónicos. Lamentablemente, descubrí que mi favorito, Baynesville Electronics, se encontraba en las últimas etapas de su venta de cierre y se estaba quedando sin existencias. Pero seguí adelante, necesitando adquirir los componentes para construir un amplificador con una compensación de CC para convertir la señal de audio en algo con lo que pudiera trabajar.

Fue cuando comencé a comprar osciloscopios que me di cuenta de que me había aventurado en la guarida de osos equivocada. Afortunadamente, había una respuesta de software esperándome entre bastidores: un proyecto de GitHub llamado AlexaPi.

Leave a Reply

Your email address will not be published. Required fields are marked *