您无法看不到Ted Lexa,噩梦般的物联网/ AI熊

2021-01-03 00:11:57

21年1月2日更新:这是新年的周末,Ars员工仍在享受一些必要的停机时间来为新年做准备(以及大量的CES电子邮件,我们确定)。发生这种情况时,我们重新制作了一些类似Ars的复古故事,例如Ars编辑器Emeritus Sean Gallagher的2017年项目,他只用怀旧玩具和一些物联网设备就制造了几代噩梦般的燃料。 Tedlexa于2017年1月4日出生(错误,书面记录),下面的故事没有任何改变。

自Kirk船长首次向《星际迷航》上一部看不见的,无所不知的计算机发出命令以来已有50年了,而距大卫·鲍曼(David Bowman)被HAL 9000的《自行车》引述为小夜曲的时间不远了。专为两个而建2001年:太空漫游。尽管我们已经与计算机和其他设备进行了数年的交谈(通常以言语插入的形式),但直到现在,我们才开始探索连接语音命令时可能发生的情况到人工智能软件。

同时,我们似乎一直幻想着说话的玩具,从《玩具总动员》中的伍迪和巴兹,到史蒂芬·斯皮尔伯格A.I.中与海莉·乔尔·奥斯曼在一起的令人毛骨悚然的AI泰迪熊。 (好吧,也许人们不是在梦见那只泰迪熊。)自从菲比热潮以来,玩具制造商一直在努力使玩具变得更智能。他们甚至将它们连接到云-结果可疑。

自然,我认为是时候将事情向前推进了。我想到了将语音驱动的AI和物联网与动画熊联系起来的方法-更好地凝视着奇点本身那死气沉沉,偶尔眨眼的眼睛。女士们,先生们,我给您Tedlexa:1998年的Teddy Ruxpin动画熊的内脏模型拴在亚马逊的Alexa语音服务上。

无论如何,我都不是第一个弥合电子动画玩具和语音接口之间差距的人。罗德岛设计学院的讲师布莱恩·凯恩(Brian Kane)用与其他伺服动画图标大嘴鲈鱼比利(Billy the Big Mouthed Bass)相连的Alexa视频将摔倒了。该Frakenfish均由Arduino驱动。

过去曾与Bearduino一起探索过这个令人难以置信的山谷,这是波特兰开发商/艺术家Sean Hathaway的硬件黑客项目,我不能不对Kane的黑客行为一无所知。我已经准备好了使用硬件攻击的熊和Arduino(再加上Raspberry Pi II和我可以使用的其他玩具),我着手创建了最终的说话泰迪熊。

亚马逊是争相将语音命令连接到"云"的强大计算能力的公司中的一员。以及不断增长的(消费者)物联网。微软,苹果,谷歌和许多其他竞争者都试图将其设备中的语音接口连接到数量呈指数增长的云服务,而云服务又可以被束缚到家庭自动化系统和其他“网络物理”系统。系统。

尽管微软的牛津项目服务仍处于试验阶段,而苹果公司的Siri仍与苹果硬件捆绑在一起,但亚马逊和谷歌已全力以赴,成为语音服务提供商。由于亚马逊Echo和Google Home的广告已经饱和了广播和有线电视,因此两家公司同时开始向其他用户开放相关的软件服务。

由于多种原因,我选择Alexa作为进入IoT地狱的起点。其中之一是,亚马逊允许其他开发人员为Alexa建立“技能”,用户可以从市场中选择它们,例如移动应用程序。这些技能决定了Alexa解释某些语音命令的方式,它们可以在亚马逊的Lambda应用程序平台上构建,也可以由开发人员自己托管在自己的服务器上。 (放心,我将在以后的技能上做一些工作。)另一个兴趣点是,亚马逊一直相当积极地让开发人员将Alexa内置到他们自己的小工具中,包括硬件黑客。亚马逊还为包括Raspberry Pi在内的许多平台发布了自己的Alexa客户端演示版。

AVS或Alexa语音服务在用户端需要很小的计算资源。所有语音识别和语音响应合成都发生在亚马逊云中;客户端只是侦听命令,记录命令,然后将它们作为HTTP POST请求转发,并携带JavaScript对象符号(JSON)对象到AVS'基于Web的界面。语音响应作为音频文件发送,由客户端播放,并包装在返回的JSON对象中。有时,它们包括用于将音频流传输到本地音频播放器的切换功能,例如AVS的Flash Briefing。功能(以及音乐流媒体-但是目前仅在商业AVS产品上可用)。

在用Raspberry Pi上的Alexa进行构建之前,我需要在亚马逊的开发人员网站上创建项目资料。当您在站点上创建AVS项目时,它将创建一组凭据和共享加密密钥,用于配置用于访问服务的任何软件。

一旦您运行了AVS客户端,就需要通过其自己的设置网页为其配置“使用亚马逊登录(LWA)”令牌-使其能够访问Amazon的服务(并可能访问Amazon付款)处理中)。因此,从本质上讲,我将创建一个可以使用我的信用卡的Teddy Ruxpin。这将是我未来有关物联网的一些安全研究的主题。

亚马逊为开发人员提供了一个示例性的Alexa客户端入门,其中包括一个将在Raspbian上运行的实现,即Debian Linux的Raspberry Pi实现。但是,官方的演示客户端主要是用Java编写的。尽管有或者可能是由于我过去的Java经验,但我还是不愿意在示例代码和Arduino驱动的熊之间进行任何互连。据我确定,我有两种可能的行动方案:

以硬件为中心的方法,它使用来自Alexa的音频流来驱动熊的动画。

找到一个更易访问的客户端或编写我自己的客户端,最好使用Python等可访问的语言编写,以使用串行命令来驱动Arduino。

自然,作为一个专注于软件的人,并且已经在Arduino上完成了大量软件工作,我选择了……硬件路线。希望通过结合互联网搜索和原始热情来克服我对电子产品缺乏的经验,我抓住了烙铁。

我的计划是使用分离器电缆连接Raspberry Pi的音频,并将音频同时传输到扬声器和Arduino。音频信号将由Arduino读取为模拟输入,而我会以某种方式将信号中的音量变化转换为值,然后将其转换为数字输出,再输入到熊头的伺服器中。该解决方案的优雅之处在于,我可以将动画机器人熊与任何音频源一起使用,从而带来数小时的娱乐价值。

事实证明,这就是凯恩(Kane)运用他的Bass-lexa的方法。在一次电话交谈中,他首次展示了他如何摘掉会说话的鱼,以此作为RISD学生快速原型制作的一个例子。这就是尽可能快地制作它,以便人们可以体验它,他解释。否则,您最终会遇到一个大项目,直到这个项目即将完成,它才会进入人们的手中。

因此,凯恩(Kane)的快速原型解决方案:将物理上通过管道连接到Amazon Echo的音频传感器连接到控制驱动鱼的马达的Arduino。

当然,当我开始我的项目时,我什么都不知道。我也没有Echo或4美元的音频传感器。取而代之的是,我徘徊在互联网上,寻找将Raspberry Pi的音频插孔热连接到Arduino的方法。

我知道音频信号是交流电,形成驱动耳机和扬声器的波形。 Arduino上的模拟引脚只能读取正的直流电压,因此,从理论上讲,波中的负值峰值将被读取为零。

我发现Instructable给我带来了虚假的希望,我发现它会随着音乐及时移动伺服臂-只需将1,000 ohm电阻焊接到音频电缆的接地即可。在看了Instructable之后,即使我大胆向前,我还是开始怀疑它的合理性。

当我看到音频电缆上的数据通过在Arduino上运行的测试代码流入时,它几乎为零。因此,在花了一些时间审查其他项目之后,我意识到电阻器对信号的抑制作用是如此之大,以至于几乎没有记录。事实证明,这是一件好事-根据Instructable提出的方法进行直接修补,该方法会在Arduino的模拟输入上施加5伏或更高的电压(超过其最大输入电压的两倍)。

使仅Arduino的方法起作用将意味着对另一家电子用品商店进行额外的操作。不幸的是,我发现我的首选产品Baynesville Electronics处于“停业销售”的最后阶段,并且库存不足。但是我向前推进,需要采购组件以构建一个具有DC偏移的放大器,以将音频信号转换为我可以使用的东西。

就是当我开始购买示波器时,我才意识到自己冒险进入了错误的Bear Den。幸运的是,有一个软件答案正等着我—一个名为AlexaPi的GitHub项目。