本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于树莓派的语音助手
发布时间:2021-09-12
分享到:
基于树莓派的语音助手
发布时间:2021-09-12
分享到:

Meet Miss Minutes 是 Loki 中的一个 AI 角色,他为征服者康(Kang)控制的名为时间差异机构的虚构机构工作。分钟小姐可以在系列中做很多事情,她会说话,与其他角色互动,当然还可以像钢铁侠电影中的星期五和贾维斯一样获取数据和信息。下面我介绍一下完整的制作流程。

零件清单:

  • 3d 打印机
  • 打印机升级
  • 橙色灯丝
  • 领口麦克风
  • 桌面扬声器
  • 树莓派零 w
  • 声卡
  • OTG 
  • 母 DC 插孔
  • 5v 直流适配器
  • 男音频插孔
  • 胶枪

第 1 步:构建“分钟小姐”外壳

通常,我从电子产品开始,然后逐步构建外壳,但在本教程中,我将以稍微不同的方式处理这个项目。首先,我将制作外壳,然后在其中修复电子设备。

在我开始建模之前,我尝试搜索是否有人已经做过类似的项目,我发现了 Thingiverse 用户PhilippHee 的这个惊人的 Miss Minutes 时钟项目。但不幸的是,在记录项目页面时,Thingiverse 已关闭,一旦页面备份,我将确保更新链接。

不管怎样,几周前我已经下载了 STL 文件。所以,而不是我完全从头开始创建项目。我使用fusion 360根据我的需要编辑和重新混合了他的项目。您可以查看上面的图像,了解如何修改图像以满足该项目的需要。

第 2 步:多色 3D 打印

一旦 STL 文件准备好,就可以打印了。我将模型放入 Cura 并将其切片。您可以使用单一颜色进行打印,然后在其上绘制眼睛和轮廓。或者像我一样在打印时更换灯丝。

您可以查看此链接以了解如何在仅使用一个喷嘴打印时更改颜色。

上面的图片是参考图片,您需要暂停以更改灯丝的颜色。

初始 - 橙色灯丝
第一个变化 - 黑丝
第二次变化 - 白丝
第三次变化——黑丝
为了打印这个模型,我使用了 PLA 和一个直径为 0.6 毫米、层高为 0.4 毫米的更大喷嘴,以便更快地打印。这个模型的完整打印大约需要 9 个小时,在打印过程中我不得不更换灯丝 3 次。但是,我仍然没有选择正确的图层高度来改变颜色,从而把它搞砸了。

无论如何,这提供了一个机会来解释,如果您没有使用多色 3d 打印技术,您如何改变颜色。

第 3 步:对 3D 打印进行后处理

打印后,我花了几分钟小心地去除支撑材料。

注意:去除支撑材料时不要做任何大的动作,面的厚度非常小,很容易折断。

你可以在这里停下来继续其余的指导,但对我来说,颜色不是那么吸引人,所以我固定了颜色。我用黑色记号笔勾勒轮廓,用增白剂勾勒眼睛。弄了一段时间后,我完全改变了颜色!您可以在上图中看到它看起来比我打印的原始颜色要好得多。

第 4 步:Raspberry Pi Zero W + Google Assistant

由于 3d 模型已准备就绪,我们可以从 Miss Minutes 的大脑开始。我将使用 raspberry pi zero w 作为硬件和软件,我将作弊,而不是编写任何自定义 AI 或使用花哨的库来构建语音助手。我将使用谷歌助手 SDK。这在 2 年前是不可能的,因为谷歌助手 SDK 不支持树莓派零。但最近去年他们发布了一项新的谷歌助手服务,该服务支持各种硬件,包括树莓派零 w。

第 5 步:音频硬件

在搞乱语音帮助之前,让我们先处理一下我们遇到的硬件问题。您可以看到 raspberry pi zero w 没有任何类型的音频输入或音频输出。

为了解决这个问题,我使用了一个带有微型 USB 到全尺寸 USB 适配器的 USB 声卡。这将通过 USB 获取音频输入和输出,并将其发送到相应的音频外围设备。

对于音频输入,让我们使用领式麦克风,因为这将非常适合 Miss Mins 的鼻子。但是麦克风附带的 3.5mm 立体声插孔不适用于声卡。所以,我用这个音频插孔代替了它。对于音频输出,我们可以使用任何普通扬声器。但在这种情况下,我们最终也会构建一个音频放大器电路。因此,我将使用由 USB 供电的桌面扬声器。

第 6 步:Raspberry Pi 零 W 的扬声器和麦克风设置

这似乎设置起来有点棘手,但它相当容易,甚至谷歌助手服务文档页面也有关于如何设置扬声器和麦克风的硬件指南。

首先,在 SD 卡上安装树莓派操作系统。如果你不确定如何?查看我的视频,了解如何在没有显示器和键盘的情况下设置树莓派。安装操作系统后,使用 putty 通过 SSH 连接到 raspberry pi。

现在按照下面的命令

使用命令检查树莓派是否检测到声卡

lsusb 

现在通过命令检查麦克风和扬声器的连接

 arecord -l

记下卡 ID 和设备 ID。

获得 ID 后,使用以下命令在/home/pi 中创建一个名为.arecordrc的新文件

sudo nano /home/pi/.arecordrc

将此代码粘贴到 nano 编辑器中

 type asym
  capture.pcm "mic"
  playback.pcm "speaker"
}
pcm.mic {
  type plug
  slave {
    pcm "plughw:[card ID]<card number="">,[device ID]<device number="">"
  }
}
pcm.speaker {
  type plug
  slave {
    pcm "hw:[card ID],[device ID]"<br><card number=""><device number="">  }
}</device></card></device></card>

并将卡号和设备号替换为您在上一个命令中找到的 ID。然后按 ctrl+X 退出并按 Y 保存文件。

最后,使用命令调整音量

这为 raspberry pi zero w 设置音频输入和输出

第 7 步:测试音频和麦克风

测试喇叭

speaker-test -t wav

您可以使用此命令来录制音频

arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw

和这个命令来播放你录制的音频

aplay --format=S16_LE --rate=16000 out.raw

第 8 步:设置 Google 助理

要使用谷歌助手 SDK,您需要转到此链接

然后创建一个新项目,并设置任意名称。
在下一页上,向下滚动到底部并选择设备注册并设置设备。完成后,下载我们稍后将使用的凭据。

然后转到此链接并启用谷歌辅助 API。

最后设置 oauth 同意屏幕。

您可以按照谷歌文档了解更多详细信息

第 9 步:安装 Google Assistant SDK


在文档中,python 包安装在虚拟环境中,但稍后在启动时运行脚本时可能会出现问题。

所以,我使用了一些命令更新树莓派操作系统。

第十步:修改Pushtotalk.py

 

首先克隆 repo:https://github.com/googlesamples/assistant-sdk-pyt...

并打开文件(路径:assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc/)pushtotalk.py

第 11 步:启动时运行 Google Assistant

运行命令

然后选择启动选项,然后在启动时启用等待网络

这将在启动期间以稳定的互联网连接启动谷歌助手

第 12 步:测试 Google 助理

一旦树莓派重新启动,树莓派在连接到 wifi 网络之前不会启动。一旦它连接到网络,树莓派就会启动并开始运行 pushtotalk.py 脚本。

由于我们修改了pushtotalk.py,谷歌助手会一直在听,我们不需要触发词。这是我们将错误转化为功能的地方。由于麦克风是全向性的,并且除了单向性之外,语音是低沉的(以及录音音量低),因此助手不会因为背景声音和声音而被触发。

现在,您可以在没有任何触发词的情况下与您的助手互动,也可以按下按钮开始说话。只需面对助手并开始说话。

第 13 步:组装系统

是时候把所有东西都放进机箱了,首先,让我们从电源的放置开始,然后是树莓派零 w 和声卡。现在我们可以安装麦克风了。对于扬声器,我将打开桌面扬声器并将扬声器取出,就像我们对麦克风所做的一样,我也会更改此扬声器的音频插孔。

然后将所有东西焊接在一起并用一些热胶粘在一起以保持原位。最后,添加一些热插件并盖住“分钟小姐”的背面。

以上,制作完成,感谢您的阅读与观看。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论