Vous ne pouvez pas ignorer Tedlexa, l’ours de l’Internet des objets / IA de vos cauchemars

Tedlexa, un ours en peluche IoT.
Agrandir / Alexa, comment créer quelque chose qui combine l’IA avec un jouet effrayant des années 1980?

Mise à jour, 1/2/21: C’est le week-end du Nouvel An, et le personnel d’Ars profite toujours des temps d’arrêt nécessaires pour se préparer à une nouvelle année (et une multitude d’e-mails au CES, nous en sommes sûrs). Pendant ce temps, nous refaisons surface certaines histoires Ars vintage comme ce projet 2017 de l’éditeur émérite d’Ars Sean Gallagher, qui a créé des générations de carburant cauchemardesque avec seulement un jouet nostalgique et du matériel IoT. Tedlexa est né (err, documenté par écrit) le 4 janvier 2017, et son histoire apparaît inchangée ci-dessous.

Cela fait 50 ans que le capitaine Kirk a adressé pour la première fois des commandes à un ordinateur invisible et omniscient sur Star Trek et pas tout à fait aussi longtemps que David Bowman a été sérénade par l’interprétation de HAL 9000 de « A Bicycle Built for Two » en 2001: Une odyssée de l’espace. Alors que nous parlons à nos ordinateurs et à d’autres appareils depuis des années (souvent sous la forme d’interjections jurons), nous commençons seulement à gratter la surface de ce qui est possible lorsque les commandes vocales sont connectées à un logiciel d’intelligence artificielle.

Pendant ce temps, nous avons toujours fantasmé sur les jouets parlants, de Woody et Buzz in Histoire de jouet à cet effrayant ours en peluche IA qui s’est associé à Haley Joel Osment dans Steven Spielberg IA (Eh bien, peut-être que les gens ne rêvent pas cette ours en peluche.) Et depuis l’engouement pour Furby, les fabricants de jouets ont essayé de rendre les jouets plus intelligents. Ils les ont même connectés au cloud, de manière prévisible résultats mitigés.

READ  La rumeur dit que la série dédiée Radeon RX 7900 sera lancée une à deux semaines après la conception de référence AMD

Naturellement, j’ai décidé qu’il était temps de faire avancer les choses. J’ai eu l’idée de connecter une IA basée sur la parole et l’Internet des objets à un ours animatronique – pour mieux regarder les yeux sans vie et parfois clignotants de la Singularité elle-même. Mesdames et messieurs, je vous donne Tedlexa: un modèle de 1998 vidé de l’ours animatronique Teddy Ruxpin attaché au service vocal Alexa d’Amazon.

Présentation de Tedlexa, l’assistant personnel de vos cauchemars

Je n’ai en aucun cas été le premier à combler le fossé entre les jouets animatroniques et les interfaces vocales. Brian Kane, instructeur à la Rhode Island School of Design, jeté le gant avec une vidéo d’Alexa connectée à cette autre icône servo-animée, Billy the Big Mouthed Bass. Ce Frakenfish était entièrement alimenté par un Arduino.

Je ne pouvais pas laisser le hack de Kane rester sans réponse, après avoir déjà exploré l’étrange vallée avec Bearduino—Un projet de piratage matériel du développeur / artiste basé à Portland Sean Hathaway. Avec un ours piraté et un Arduino déjà en main (plus un Raspberry Pi II et un assortiment d’autres jouets à ma disposition), je me suis mis à créer l’ours en peluche parlant ultime.

À nos futurs robots-suzerains: s’il vous plaît, pardonnez-moi.

La voix de son maître

Amazon fait partie d’un groupe d’entreprises qui tentent de connecter les commandes vocales à la vaste puissance de calcul du «cloud» et à l’Internet des objets (grand public) en constante croissance. Microsoft, Apple, Google et de nombreux autres prétendants ont cherché à connecter les interfaces vocales de leurs appareils à un nombre exponentiellement croissant de services cloud, qui à leur tour peuvent être connectés à des systèmes domotiques et à d’autres systèmes «cyberphysiques».

READ  Le purificateur d'air Dyson Zone commence à 949 $

Alors que les services Project Oxford de Microsoft sont restés largement expérimentaux et que Siri d’Apple reste lié au matériel Apple, Amazon et Google se sont précipités dans une bataille pour devenir l’opérateur historique du service vocal. Alors que les publicités pour Echo et Google Home d’Amazon ont saturé la diffusion et la télévision par câble, les deux sociétés ont simultanément commencé à ouvrir les services logiciels associés à d’autres.

J’ai choisi Alexa comme point de départ pour notre descente dans l’enfer de l’IoT pour plusieurs raisons. L’un d’eux est qu’Amazon permet à d’autres développeurs de développer des «compétences» pour Alexa que les utilisateurs peuvent choisir sur un marché, comme les applications mobiles. Ces compétences déterminent la manière dont Alexa interprète certaines commandes vocales, et elles peuvent être construites sur la plate-forme d’application Lambda d’Amazon ou hébergées par les développeurs eux-mêmes sur leur propre serveur. (Rassurez-vous, je vais faire un travail futur avec des compétences.) Un autre point d’intérêt est qu’Amazon a été assez agressif pour amener les développeurs à intégrer Alexa dans leurs propres gadgets, y compris les pirates informatiques. Amazon a également publié sa propre version de démonstration d’un client Alexa pour un certain nombre de plates-formes, y compris le Raspberry Pi.

AVS, ou Alexa Voice Services, nécessite une empreinte informatique assez petite du côté de l’utilisateur. Toute la reconnaissance vocale et la synthèse des réponses vocales se produisent dans le cloud d’Amazon; le client écoute simplement les commandes, les enregistre et les transmet sous forme de requête HTTP POST portant un objet JavaScript Object Notation (JSON) aux interfaces Web d’AVS. Les réponses vocales sont envoyées sous forme de fichiers audio à lire par le client, enveloppées dans un objet JSON renvoyé. Parfois, ils incluent un transfert de l’audio diffusé vers un lecteur audio local, comme avec la fonction «Flash Briefing» d’AVS (et la diffusion de musique – mais ce n’est disponible que sur les produits AVS commerciaux pour le moment).

READ  L'artiste principal de Starfield dit que l'esthétique globale du jeu est "NASA-Punk"

Avant de pouvoir construire quoi que ce soit avec Alexa sur un Raspberry Pi, j’avais besoin de créer un profil de projet sur le site développeur d’Amazon. Lorsque vous créez un projet AVS sur le site, il crée un ensemble d’informations d’identification et de clés de chiffrement partagées utilisées pour configurer le logiciel que vous utilisez pour accéder au service.

Une fois que le client AVS est en cours d’exécution, il doit être configuré avec un jeton de connexion avec Amazon (LWA) via sa propre page Web de configuration, ce qui lui donne accès aux services d’Amazon (et potentiellement au traitement des paiements Amazon). Donc, en substance, je créerais un Teddy Ruxpin avec accès à ma carte de crédit. Ce sera un sujet pour de futures recherches sur la sécurité sur l’IoT de ma part.

Amazon propose aux développeurs un exemple de client Alexa pour commencer, y compris une implémentation qui fonctionnera sur Raspbian, l’implémentation Raspberry Pi de Debian Linux. Cependant, le client de démonstration officiel est écrit en grande partie en Java. Malgré, ou peut-être à cause de mon expérience Java passée, je craignais d’essayer de faire une interconnexion entre l’exemple de code et l’ours piloté par Arduino. Pour autant que je sache, j’avais deux pistes d’action possibles:

  • Une approche axée sur le matériel qui a utilisé le flux audio d’Alexa pour piloter l’animation de l’ours.
  • Trouver un client plus accessible ou écrire le mien, de préférence dans un langage accessible comme Python, qui pourrait piloter l’Arduino avec des commandes série.

Naturellement, étant un gars axé sur les logiciels et ayant déjà fait une quantité importante de travail logiciel avec Arduino, j’ai choisi… la voie matérielle. Dans l’espoir de surmonter mon manque d’expérience avec l’électronique avec une combinaison de recherches sur Internet et d’enthousiasme brut, j’ai attrapé mon fer à souder.

Plan A: entrée audio, sortie servo

Mon plan était d’utiliser un câble séparateur pour l’audio du Raspberry Pi et de transmettre l’audio à un haut-parleur et à l’Arduino. Le signal audio serait lu comme une entrée analogique par l’Arduino, et je convertirais en quelque sorte les changements de volume du signal en valeurs qui seraient à leur tour converties en sortie numérique vers le servo dans la tête de l’ours. L’élégance de cette solution était que je pouvais utiliser le robot-ours animé avec n’importe quelle source audio, ce qui me permettait de profiter d’heures de divertissement.

Il s’avère que c’est l’approche que Kane a adoptée avec sa Bass-lexa. Lors d’une conversation téléphonique, il a révélé pour la première fois comment il avait retiré son poisson parlant comme exemple de prototypage rapide pour ses étudiants du RISD. « Il s’agit de le faire le plus rapidement possible pour que les gens puissent en faire l’expérience », a-t-il expliqué. « Sinon, vous vous retrouvez avec un gros projet qui ne tombe entre les mains des gens que lorsqu’il est presque terminé. »

Donc, la solution de prototypage rapide de Kane: connecter un capteur audio physiquement connecté à un Amazon Echo à un Arduino contrôlant les moteurs entraînant le poisson.

Kane m'a envoyé par texto cette photo de son prototype - capteur audio et planche à pain sur un Amazon Echo.
Agrandir / Kane m’a envoyé par texto cette photo de son prototype – capteur audio et planche à pain sur un Amazon Echo.

Brian Kane

Bien sûr, je ne savais rien de tout cela lorsque j’ai commencé mon projet. Je n’avais pas non plus d’Echo ou de capteur audio à 4 $. Au lieu de cela, je trébuchais sur Internet à la recherche de moyens de connecter à chaud la prise audio de mon Raspberry Pi à l’Arduino.

Je savais que les signaux audio sont du courant alternatif, formant une forme d’onde qui entraîne les écouteurs et les haut-parleurs. Les broches analogiques de l’Arduino ne peuvent cependant lire que les tensions de courant continu positives, donc en théorie, les pics de valeur négative dans les ondes seraient lus avec une valeur de zéro.

J’ai eu de faux espoirs par un Instructable que j’ai trouvé qui a déplacé un bras d’asservissement au rythme de la musique – simplement en soudant une résistance de 1 000 ohms à la masse du câble audio. Après avoir regardé l’Instructable, j’ai commencé à douter un peu de sa santé mentale alors même que j’avançais hardiment.

Alors que j’ai vu les données du câble audio en streaming via le code de test en cours d’exécution sur l’Arduino, il s’agissait principalement de zéros. Donc, après avoir pris le temps de passer en revue d’autres projets, j’ai réalisé que la résistance amortissait tellement le signal qu’elle s’enregistrait à peine. Cela s’est avéré être une bonne chose – faire un patch direct basé sur l’approche présentée par l’Instructable aurait mis 5 volts ou plus dans l’entrée analogique de l’Arduino (plus du double de son maximum).

Faire fonctionner l’approche uniquement Arduino signifierait faire une course supplémentaire vers un autre magasin de fournitures électroniques. Malheureusement, j’ai découvert ma destination, Baynesville Electronics, était dans les dernières étapes de sa vente de sortie d’entreprise et manquait de stocks. Mais j’ai poussé en avant, ayant besoin de se procurer les composants pour construire un amplificateur avec un décalage CC pour convertir le signal audio en quelque chose avec lequel je pourrais travailler.

C’est quand j’ai commencé à acheter des oscilloscopes que j’ai réalisé que je m’étais aventuré dans la mauvaise tanière d’ours. Heureusement, il y avait une réponse logicielle qui m’attendait dans les coulisses: un projet GitHub appelé AlexaPi.

LEAVE A REPLY

Please enter your comment!
Please enter your name here