0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用树莓派构建Google Home Assistant

454398 来源:网络整理 作者:网络整理 2019-12-04 17:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

语音助手已迅速普及。许多家庭使用Alexa或Google Home来控制从照明到媒体甚至计时的所有内容。

这些设备运行的技术(至少部分地)适用于所有人。使用Google的Assistant SDK,您可以在自己的设备上使用该服务。本教程介绍如何在Raspberry Pi上设置Google Assistant,以及如何通过GPIO引脚语音激活LED

Raspberry Pi Home Assistant所需的硬件

您将需要:

在SD卡上重新安装Raspbian的Raspberry Pi。

USB网络摄像头或麦克风。

外部扬声器。

Pi LED教程中的电路(可选)

登录到您的Google帐户的浏览器。

注意:本教程的设备可能有所不同。我纯粹将备用USB网络摄像头用于其麦克风。任何兼容的网络摄像头或麦克风都可以正常工作,并且有大量的Pi兼容设备可以提供帮助。

此外,我正在使用3.5mm输出的音频HDMI和其他输出源也可以使用,尽管它需要修改以下声音设置。

插入USB网络摄像头和扬声器,并在使用时设置LED电路。

设置声音

可以直接在Pi上或通过SSH连接到Pi来遵循本教程。

两种方式都可以在终端上进行,以检查声音设置。使用命令 arecord -l 《/strong》和 aplay -l 《/strong》列出可用设备。

上图显示USB网络摄像头为卡1 和设备0 。记下麦克风和扬声器输出的卡号和设备号。

现在,确保您位于/home/pi 目录中,创建一个新文件并打开它在nano中:

sudo nano .asoundrc

此目录的内容将根据所使用的卡号和设备号而有所不同。如果愿意,可以在此处选择偏向于HDMI输出而不是3.5mm。

输入上述代码的版本后,按 Ctrl + X 保存并退出。

通过录制和播放短片来测试设置:

可选步骤:如果要更改麦克风的输入音量,请打开 alsamixer ,然后按 F6 在设备之间循环

就是这样!声音已设置。

创建Google Project

打开Pi的浏览器,或者,如果您通过SSH连接,请在本地打开浏览器。导航到Google Action Console,然后点击新建项目。

这可能需要一些时间。完成后,将窗口保持活动状态并打开一个新标签-我们将在稍后介绍。

启用Google Assistant API

您需要进行一些在线调整将需要继续。导航到Google Assistant API网站,然后单击启用。

该项目还需要活动权限。转到“活动控制”面板,并确保打开以下活动:

网络和应用活动(包括“ Chrome历史记录”复选框)

设备信息

语音和音频活动

现在您可以继续注册设备。

注册Raspberry Pi

返回操作控制台,然后从左侧面板中选择设备注册。在产品下,为您的设备创建一个易于记忆的名称。制造商名称并不重要(但必须在此处),然后为设备类型选择自动。

点击注册模型,然后在下一个屏幕上单击下载OAuth 2.0凭据。这会将JSON文件下载到您的计算机。如果您不熟悉JSON文件,请放心,但是学习如何使用JSON值得将来使用!

Google官方指南建议将文件移至/home/pi ,因此请打开文件管理器并立即执行此操作。

SSH用户的其他步骤:

如果您使用的是SSH,已将JSON文件下载到本地计算机而不是Pi。要传输它,请打开没有SSH连接的单独的终端窗口。在此窗口中,使用以下命令复制客户端秘密JSON文件:

scp ~/Downloads/client_secret_client-id.json pi@raspberry-pi-ip-address:/home/pi/

用您的Pi的IP地址替换“ raspberry-pi-ip-address”,然后不要不要忘记小路前面的冒号。如果您将JSON文件下载到另一个位置,请修改您的本地路径以反映此情况。在出现提示时输入密码,该文件将复制到Pi的主目录。

切换回SSH终端,并导航至/home/pi 。输入 ls -l 《/strong》以列出目录中的文件。您应该看到已传输的客户端机密JSON文件。

安装SDK

Google建议在Python虚拟环境中工作。创建一个名为 env 的新虚拟环境。

如果您以前从未做过,本教程将帮助您学习如何使用Python虚拟环境。

安装最新版本的Pip,Setuptools和Wheel并激活您的虚拟环境:

env/bin/python -m pip install --upgrade pip setuptools wheel

source env/bin/activate

Google助手具有一些依赖项,您现在应该将其安装到虚拟环境中。

sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev

最后,安装Google Assistant SDK,示例和OAuth工具。

python -m pip install --upgrade google-assistant-library

python -m pip install --upgrade google-assistant-sdk[samples]

python -m pip install --upgrade google-auth-oauthlib[tool]

启动并运行。如果任何安装失败,请彻底检查拼写和间距。

对Raspberry Pi进行身份验证

使用 google-auth-oauthlib [tool]

google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \

--scope https://www.googleapis.com/auth/gcm \

--save --headless --client-secrets /home/pi/YOUR_CLIENT_SECRET_ID.json

您需要用下载的文件替换YOUR_CLIENT_SECRET_ID,因此值得首先复制文件名。此客户端ID必须正确。不要更改文件名!

您应该会收到一条带有链接的消息,要求您粘贴授权码。

单击链接将打开浏览器。系统会提示您启用Google帐户中的设备。复制随后的授权代码,并将其粘贴回您的终端窗口。

您应该收到一条确认信息,其中显示 Credentials Saved:/home/pi…,这意味着Pi已被已成功为您的Google帐户授权。

对其进行测试

现在一切就绪,现在该对您的Pi Google Assistant进行测试了。使用以下命令运行助手:

googlesamples-assistant-hotword --project-id my-dev-project --device-model-id my-model

您将需要用项目ID(位于“设置”齿轮下)替换 my-dev-project 操作控制台)。您的 device-model-id 列在操作控制台的“设备注册”部分下。

尝试一下!说“ OK Google”并提出问题。听到响应后,您可以在终端中看到程序输出:

就是这样! Google助手现已在您的Raspberry Pi上运行。请注意,如果输出音量有点低,可以通过说出“嘿,Google,将您的音量提高到80%”来更改它。

奖金:语音激活的GPIO

可以使用Arduino和Siri来控制灯光,但是有一种更简单的方法。如果您设置了LED,则可以使用Google Assistant来控制声音。

设置Google Assistant以使用GPIO引脚相对简单,但是需要一些额外的步骤。转到Google Action Console,然后在“设备注册”下找到您的设备。单击它,然后打开特征菜单:

打开 OnOff 特征,然后单击保存。

现在,确保您处于 env 虚拟环境中,使用git将一个版本的SDK克隆到您的Pi:

git clone https://github.com/googlesamples/assistant-sdk-python

由于这是一个虚拟环境,因此您需要先安装RPi.GPIO。

pip install rpi.gpio

现在,导航至包含以下内容的文件夹 hotword.py 脚本。

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library

修改脚本

您需要在脚本中添加几行hotword.py脚本,因此在nano编辑器中将其打开:

nano hotword.py

在import语句下,为RPi.GPIO添加您自己的脚本。

import RPi.GPIO as GPIO

查找 process_event 方法。在第66行,删除或注释掉print语句,并添加if语句来控制LED。

#print(‘Do command’, command, ‘with params’, str(params))

if command == “action.devices.commands.OnOff”:

if params[‘on’]:

print(‘---------------’)

print(‘Led turned on’)

print(‘---------------’)

GPIO.output(18, GPIO.HIGH)

else:

print(‘---------------’)

print(‘Led turned off’)

print(‘---------------’)

GPIO.output(18, GPIO.LOW)

此逻辑控制LED,但到目前为止,它不是。 t配置为输出。在调用process_event方法之前,在 main()函数中进行设置。

GPIO.setmode(GPIO.BCM)

GPIO.setup(18, GPIO.OUT, initial=GPIO.LOW)

现在,GPIO引脚设置为输出并在其中初始化低状态。保存并退出。您可以通过传递您的型号ID号(在操作控制台中找到)作为参数来运行修改后的脚本。

python hotword.py --device-model-id YOUR-MODEL-ID-HERE

终端输出与之前相同,并且助手将作为标准工作。但是,现在,当您说“ OK Google,打开”时,您将看到一个新的输出:

注意:上面的图片已裁剪,仅显示助手正在听取请求,并且打印说明已添加到脚本中。

您还应该看到LED亮起!

您自己的DIY Raspberry Pi Google Home Assistant

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 树莓派
    +关注

    关注

    122

    文章

    2081

    浏览量

    110753
  • Google Home
    +关注

    关注

    1

    文章

    13

    浏览量

    6147
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于树莓(RaspberryPi)构建高效实时监控系统

    由于树莓体积小、可开发性强等特性,常被用于视频监控场景中,结合 ZeroNews,可实现用户在任意位置都能实时安全得访问视频监控系统。 先决条件:树莓正常连接网络,可访问互联网 第
    的头像 发表于 09-22 15:14 1594次阅读
    基于<b class='flag-5'>树莓</b><b class='flag-5'>派</b>(RaspberryPi)<b class='flag-5'>构建</b>高效实时监控系统

    零成本钢铁侠手套!树莓+OpenCV 秒变手势遥控器!

    大家好,这是一个树莓和OpenCV的连载专题。使用树莓与OpenCV实现姿态估计和面部特征点追踪使用树莓
    的头像 发表于 08-16 16:16 1543次阅读
    零成本钢铁侠手套!<b class='flag-5'>树莓</b><b class='flag-5'>派</b>+OpenCV 秒变手势遥控器!

    如何使用树莓与OpenCV实现面部和运动追踪的云台系统?

    大家好,这是一个树莓和OpenCV的连载专题。使用树莓与OpenCV实现姿态估计和面部特征点追踪使用树莓
    的头像 发表于 08-14 17:45 2337次阅读
    如何使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>与OpenCV实现面部和运动追踪的云台系统?

    如何搭建高效的树莓NAS?完整安装与配置指南!

    访问、存储和共享文件。使用树莓创建网络附属存储(NAS)是为家庭或小型办公室构建个性化且经济高效的存储解决方案的绝佳方式。树莓NAS可让
    的头像 发表于 08-13 17:45 2167次阅读
    如何搭建高效的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>NAS?完整安装与配置指南!

    如何使用树莓+OpenCV实现姿态估计和面部特征点追踪?

    大家好,这是一个树莓和OpenCV的连载专题。使用树莓与OpenCV实现姿态估计和面部特征点追踪使用树莓
    的头像 发表于 08-13 17:44 1450次阅读
    如何使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>+OpenCV实现姿态估计和面部特征点追踪?

    树莓屏幕怎么选?

    树莓很多人都用过,但用屏幕的倒不是很多。不少都是直接远程操作,或者直接接身边的显示设备了。但我觉得给开发板配一个屏幕还是很能提升使用体验的。这次我就介绍一下树莓的屏幕怎么选择。
    的头像 发表于 08-08 14:59 1713次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>屏幕怎么选?

    树莓操作系统:版本、特性及设置完整指南!

    树莓操作系统是什么?树莓操作系统是由树莓基金会专为树莓
    的头像 发表于 07-28 18:26 1782次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>操作系统:版本、特性及设置完整指南!

    树莓6 传闻:发布日期与规格!

    每当我想再为我的收藏增添一款树莓时,总会在是立即购买还是等待硬件更强大的下一代之间犹豫不决。但新树莓型号的发布往往容易被错过,尤其是在你的信息流被病毒式传播的猫咪视频占据时。因此,
    的头像 发表于 07-11 16:21 3025次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>6 传闻:发布日期与规格!

    树莓小技巧:无需键盘或显示器,如何通过WiFi设置树莓

    树莓是一款小巧便携的USB供电计算机,可以隐藏起来用于小型项目,如网络服务器或家庭自动化。通常,设置树莓需要键盘和显示器来编辑和查看树莓
    的头像 发表于 06-26 15:41 1831次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>小技巧:无需键盘或显示器,如何通过WiFi设置<b class='flag-5'>树莓</b><b class='flag-5'>派</b>?

    树莓分类器:用树莓识别不同型号的树莓

    在本教程系列的第一部分中,您将学习如何使用树莓AI摄像头来检测不同的树莓型号。本系列由DavidPlowman创建,他是树莓
    的头像 发表于 06-13 16:39 1520次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>分类器:用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>识别不同型号的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>!

    树莓“揪出”家里的耗电怪兽!

    在本应用中,我们将使用树莓设置一个CE电流监测器,并通过网页界面显示电路的电流读数。本项目使用的组件硬件组件树莓2ModelBx112通道20安培电流监测控制器x1项目背景介绍在本
    的头像 发表于 06-04 15:33 2015次阅读
    用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>“揪出”家里的耗电怪兽!

    树莓“吉尼斯世界记录”:将树莓的性能发挥到极致的项目!

    树莓是一款功能强大、体积小巧且高度可定制的设备,多年来,我们见证了它被应用于众多领域。无论是将其装入3D打印的经典游戏机外壳,还是简单地将它隐藏起来作为家庭文件服务器,我们都报道过在社区里用树莓
    的头像 发表于 05-22 16:53 1710次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>“吉尼斯世界记录”:将<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的性能发挥到极致的项目!

    树莓5 与 树莓4:深度对比与独特优势!

    随着技术的不断发展,推动创新与创造力的工具和设备也在不断升级。其中,树莓派系列凭借其多功能性和强大性能,在从简单的DIY项目到复杂的计算任务等众多应用场景中脱颖而出。随着树莓5的近期发布,爱好者
    的头像 发表于 05-21 13:15 3407次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>5 与 <b class='flag-5'>树莓</b><b class='flag-5'>派</b>4:深度对比与独特优势!

    能够精准定位的树莓机器人!

    我为我的自制机器人BigRob(同样由树莓驱动)配备了基于树莓的精准GPS导航系统。本项目所用组件硬件组件NV08C-CSMx1NV08C-CSM是一款集成式卫星导航接收器
    的头像 发表于 05-17 08:33 1504次阅读
    能够精准定位的<b class='flag-5'>树莓</b><b class='flag-5'>派</b>机器人!

    树莓 Zero 打造的智能漫游车!

    使用PXFMini和树莓Zero打造您自己的自主漫游车。本项目所用组件硬件组件ErleRoboticsPXFmini×1树莓Zero×1树莓
    的头像 发表于 05-13 16:39 1282次阅读
    用 <b class='flag-5'>树莓</b><b class='flag-5'>派</b> Zero 打造的智能漫游车!