这个树莓派 Google Assistant 项目将引导您逐步了解如何构建和设置自己的 Pi 支持的 Google Assistant。
该助手将积极聆听您的声音并回答您的查询,您只需要说”Ok Google” 或”Hey Google”,然后再进行查询即可。
要设置自己的 Google Assistant,我们将引导您逐步测试音频设置,注册 Google Assistant API 并向您展示如何下载和设置实际的 Google Assistant 示例。
在本教程结束时,您应该在树莓派上运行一个功能强大的虚拟助手。
要在树莓派上设置自己的 Google 助手,您只需要一个 USB 麦克风和一组扬声器即可。
当然,您还需要启动树莓派所需的所有默认设备。
设备清单
下面列出了我们用于此树莓派 Google 助手教程的所有设备的完整列表。
推荐的
树莓派
Micro SD 卡
电源
USB 麦克风
发言人
以太网网络连接或 * Wifi 加密狗 (Pi 3 具有 WiFi 内置的)
可选的
- 树莓派外壳
注册 Google API
1 在开始在树莓派本身上设置 Google Assistant 代码之前,我们必须首先在 Google Actions Console 上注册并设置一个项目。
准备好您的 Google 帐户后,转到 Google 控制台操作仪表盘,或直接转到下面的 URL ,即可转到那里。
https://console.actions.google.com
2 一旦您登录了您的帐户,将会看到以下屏幕。
在此处,您将需要单击” 添加 / 导入项目 “按钮,如下面的屏幕截图所示。
3 在下一个屏幕上,系统将要求您输入” 项目名称 “(1 )
除了项目名称外,您还需要设置屏幕截图 (2 ) 中显示的国家和语言。
设置项目名称并选择语言和国家 / 地区后,请点击” 创建项目 “(3 ) 按钮。
4 在新标签中,转到 Google 开发人员控制台并启用 Google 嵌入式助手 API 。
现在,在继续操作之前,单击” 启用 “按钮,确保已选择项目 (1 )
确定已选择当前项目后,请单击” 启用 “按钮 (2 )
5 现在回到创建项目的另一个选项卡中,向下滚动到屏幕底部。
您应该看到一些文字,” 您要注册设备吗?点击这里 “。
您需要做的就是单击” 单击此处 “文本。
6 您现在将进入以下屏幕,单击” 注册模型 “按钮继续。
7 在此屏幕上,您需要设置” 产品名称 “,” 制造商名称 “并设置” 设备类型 “(1 )
您可以在下面看到我们输入的数据,在这里设置的内容并不重要,但是需要设置所有三个框才能注册模型。
对于” 产品名称 “,我们只是将其设置为我们使用此名称的简单描述符,在本教程中,该名称只是”** pi3 Google Assistant **”。
“制造商名称 “并不重要,因为我们无意将此设备广泛使用,因此我们将其设置为我们的网站名称”** Pi My Life Up **”。
最后,我们将” 设备类型 “设置为”” 扬声器”**,因为我们认为它最匹配我们在树莓派上使用 Google Assistant API 的预期。
确保写下然后加上” 设备型号 ID **”(**2 ),因为在本教程后面的内容中将需要它。
最后,设置完所有内容,并写下” 设备型号 ID **” 后,单击”** 注册型号 “(3 ) 按钮继续。
8 现在您已经注册了模型,现在将转到” 下载凭证 “屏幕。
该屏幕至关重要,因为提供的凭据文件是我们基于树莓派 3 的 Google 助手与服务器进行通讯所需要的。
要获取此凭据文件,请点击” 下载 OAuth 2.0 凭据 “(1 ) 按钮,如以下屏幕截图所示。
将其保存在安全的地方,因为我们会将文件中的文本发送到树莓派。 (当然,除非您直接将其下载到您的 Pi)
将凭据安全地存储在计算机或树莓派上之后,需要单击” 下一步 “(2 ) 按钮。
9 最后,您可以指定可能需要的任何特征。
在我们的情况下,我们不需要任何这些,因此只需单击” 保存特征 “按钮,如下所示。
10 一旦完成,就应该在此屏幕上显示您。
现在,我们只能在树莓派本身上设置 Google Assistant 的最后一件事。
11 我们还需要配置 OAuth 同意屏幕。没有这个,Google 不会允许我们在本教程的后面部分授权我们的树莓派 Google Assistant 设备。
为此,您需要转到 API 凭据 OAuth 同意屏幕设置页面。
在此第一页上,确保在顶部下拉框 (1 ) 中选择了您的项目。
其次,您需要选择” 外部 “作为用户类型 (2 )。此选项将允许拥有 Google 帐户的任何人使用我们正在设置的 Google Assistant 软件。
完成所有配置后,请点击”** CREATE “按钮以继续设置身份验证屏幕 (**3 )。
12 此页面将允许您设置身份验证屏幕的详细信息。由于我们不希望将其公开提供,因此我们只需要设置一个选项。
点击电子邮件下拉列表,选择您的帐户电子邮件地址 (1 ),选择该选项将使我们继续阅读该指南。
设置完所需的所有内容后,请点击页面底部的” 保存 “按钮 (2 )。
13 最后,我们需要转到 Google 我的帐户活动控件。
在这里,您需要激活以下活动控件,以确保 Google Assistant API 正常运行。
* 网络和应用活动
* 位置记录
- 设备信息
- 语音和音频活动
为 Google Assistant 设置音频
1 现在,我们已经在 Google Actions Console 上建立了一个帐户,我们必须为其配置音频。
我们将要使用的 Google Assistant SDK 对它的正常运行有一些严格的要求。
要开始在树莓派上设置音频,我们必须首先获取各种输入和输出的卡号和设备号。
我们下面的步骤将显示您必须为这些设备获取正确的编号。
** 1a。** 利用以下命令找到您的 USB 麦克风。
写下卡号和设备号。
记录-l
** 1b。** 现在可以找到您的扬声器,我们将使用以下命令。
再次写下卡号和设备号。
请注意,树莓派的 ** 3.5mm 插孔通常标记为 Analog 或 bcm2835 ALSA ,而 HDMI 输出被标识为 ** bcm2835 IEC958/HDMI **。
播放-l
2 现在,我们已经获取了麦克风和音频输出的设备和卡号,我们需要在 pi 用户主目录中创建一个名为.asoundrc 的文件。
.asoundrc
文件有助于定义音频驱动程序应使用的音频设备。
我们可以通过在终端中运行以下命令来创建此文件。
vim /home/pi/.asoundrc
3 在此文件中输入以下行。
确保用 <设备号> 替换 < 卡号 > 并将它们分别在 ** 步骤 1 ** 中检索到的值替换为 < 设备号 >。
pcm。!默认{
类型不对称
capture.pcm"麦克风"
playing.pcm"扬声器"
}
pcm.mic {
型插头
奴隶 {
pcm"硬件:<卡号>,<设备号>"
率 48000
}
}
pcm.speaker {
型插头
奴隶 {
pcm"硬件:<卡号>,<设备号>"
}
}**4** 随着线的插入,进行更改。按** CTRL + X **,然后按** Y **,最后按 ENTER **保存。
测试扬声器和麦克风
1 。在开始设置树莓派 Google Assistant 和设置所需的 API 的所有艰苦工作之前,我们将首先进行测试以确保音频正常工作。
在此阶段,您必须将 USB 麦克风和扬声器连接到树莓派。
一旦确定两个都连接到树莓派,我们就可以通过运行以下命令进行测试,以确保扬声器工作正常。
扬声器测试-t WAV
您应该听到扬声器发出的声音。这个声音将是一个人讲话。
如果您没有听到扬声器双重检查的声音,则说明它们已正确插入并已打开。
2 现在,让我们通过录制来测试我们的麦克风,为此,我们将在您的树莓派上运行以下命令。
此命令将进行短短的 5 秒录制。
arecord --format = S16_LE --duration = 5 --rate = 16000 --file-type = raw out.raw
如果在运行此命令时收到错误消息,请确保已插入麦克风。仅当该命令可以成功收听麦克风时,该命令才会成功。
3 完成录音后,我们现在可以运行以下命令以读取原始输出文件并将其播放回扬声器。
这样做可以让您测试播放音量并收听录音音量。
这样做是一项至关重要的任务,因为您不希望树莓派听到任何细微的声音,但是当您说”** Ok Google **” 时,您也不想让它几乎听不到您的声音。
播放--format = S16_LE --rate = 16000 out.raw
4 如果发现播放音量或录制音量太高或太低,则可以运行以下命令启动调音台。
此命令将允许您调整各种输出设备的输出音量。
根据我们的测试,我们建议您使用至少 70 的音量,并使用本节” 步骤 1 “中的命令检查音量。
alsamixer
确认麦克风和扬声器正常工作后,就可以继续设置您自己的树莓派 Google 助手了!
下载并设置 Google Assistant
1 现在已经配置并设置了 Google Assistant API,我们需要做一些事情。
首先,通过运行以下命令来更新树莓派的软件包列表。
sudo apt update
2 树莓派更新完成后,我们就可以继续设置运行 Google Assistant API 所需的一切。
在您的树莓派上,我们将创建一个文件,该文件将存储我们先前在计算机上下载的凭据。
为此,请运行以下两个命令创建一个文件夹,然后开始写入我们的凭证文件。
mkdir〜/googleassistant
vim 〜/googleassistant/credentials.json
3 在此文件中,我们需要将下载到您的计算机的凭据文件的内容复制。
您可以在任何文本编辑器中打开.json 文件,然后按 CTRL + A,然后按 CTRL + C 复制内容。
现在,在 SSH 窗口中,右键单击并单击 **” 粘贴”**。
4 一旦您将凭据的内容复制到了我们的 vim 会话中,我们就可以通过按 CTRL + X,然后按 Y ,然后最后按 Enter 来保存文件。
5 现在将凭据文件安全地保存到我们的树莓派中,我们将开始安装一些我们依赖的依赖项。
运行以下命令以将 Python3 和 Python 3 虚拟环境安装到我们的树莓派。
sudo apt install python3 -dev python3-venv python3-pip libssl-dev libffi-dev libportaudio2
6 现在,通过在树莓派上运行以下命令,我们可以启用 python3 作为我们的虚拟环境变量。
python3 -m venv env
7 启用该功能后,我们可以继续并确保已安装最新版本的 pip
和 setuptools
。
要更新这些 Python 软件包,我们需要在树莓派上使用以下命令。
env/bin/python3 -m pip install --upgrade pip setuptools --upgrade
8 要进入我们已经设置的新 Python 环境,我们应该在终端中运行以下命令。
源环境/bin /激活
9 现在,我们拥有安装 Google 助手库所需的所有软件包。
为此,我们将运行以下命令以利用 pip 安装最新版本的 Python 软件包。
python3 -m pip install-升级 google -assistant-library
python3 -m pip install --upgrade google-assistant-sdk [示例]
授权您的树莓派使用 Google 助手
1 现在,我们已经设置了在树莓派上运行 Google Assistant 软件的所有先决条件,我们终于可以完成最后几步来授权系统了。为此,我们必须先将 Google 授权工具安装到我们的树莓派中。
该软件包可让我们对设备进行身份验证,并赋予我们自己权利以对您的 Google 帐户进行 Google Assistant 查询。
在树莓派上运行以下命令以安装 Python 授权工具。
python3 -m pip install-升级 google -auth-oauthlib [工具]
2 现在安装了 Google 身份验证库,我们需要运行它。为此,我们将在树莓派上运行以下命令。
此命令将生成您需要在 Web 浏览器中访问的 URL ,因此请做好准备。
google-oauthlib-tool --client-secrets〜/googleassistant/credentials.json \
--scope https://www.googleapis.com/auth/assistant-sdk-prototype \
--scope https://www.googleapis.com/auth/gcm \
-节省-无头
3 现在将显示文本”,请访问此 URL 以授权此应用程序:“,后跟一个非常长的 URL 。
确保将此 URL 完全复制到 Web 浏览器中以将其打开。
4 在此屏幕上,登录到您的 Google 帐户,如果您有多个帐户,请确保选择用于设置 API 密钥的帐户。
之后,您将看到一个带有文本” 请复制此代码,切换到您的应用程序并将其粘贴到其中 “的屏幕,然后是一个长验证码。
复制身份验证代码并将其粘贴回您的终端会话,然后按 Enter 键。
如果身份验证被接受,您应该在命令行中看到以下行:
“已保存的凭据:/home/pi/.config/google-oauthlib-tool/credentials.json
“
5 现在保存了身份验证凭据,Google 仍然要求我们同意某些内容。
使用此命令确保将
如果您不知道自己的项目 ID 是什么,可以转到 Google 上的 Actions Console,单击创建的项目,然后单击左上角的 Cog - 然后点击” 项目设置 “。
此外,请确保将
如果丢失了设备 ID ,则可以通过转到 Console Actions 网站,单击创建的项目,然后转到” 设备注册 “来再次找到它。
要与助手交谈,请在终端中按 ENTER ,然后说出” 几点钟 “之类的动作。
如果一切正常,您将听到助手的口头答复。
googlesamples-assistant-pushtotalk --project-id <projectid> --device-model-id <deviceid>
6 如果您没有听到来自 Google Assistant 的任何答复,但是会打开一个包含您的结果的新标签,那么您应该返回” 为 Google Assistant 设置音频 “部分以及” 为 Google Assistant 测试您的音频 “部分。
在下一节中,我们将向您展示如何重新运行 Google Assistant,而无需再次搜索所有步骤,并确保将”** Project ID “和” Device ID **” 放在手边因为我们仍然需要那些来利用样本。
在树莓派上使用 Google 助手
1 现在,我们终于对树莓派进行了完全授权,现在我们将带您完成如何运行 Google Assistant 软件的步骤,而不必阅读整个教程。
首先,无论何时开始新的终端会话,都需要将其放回我们设置 Google Assistant 软件的环境中。
为此,请在树莓派上运行以下命令。
源环境/bin /激活
2 您将通过看到 **(env)** 出现在每行的开头来知道这是否正常工作。
出现 **(env)** 表示您可以再次致电 Google Assistant 示例。
要启动一键通示例,您需要运行以下命令,这对我们来说是幸运的,这一次我们不需要输入项目 ID 或设备 ID ,因为当我们首次使用一键通工具时,这些 ID 已被缓存。
googlesamples-assistant-pushtotalk
3 除了一键通示例外,还有热词示例代码。此示例代码将通过侦听某些短语来触发它。默认情况下,它将侦听”** Ok Google **”,然后侦听您要向其发出的命令。
启动热词示例非常类似于一键通示例,但是您正在使用 googlesamples -assistant-hotword 实用程序。
googlesamples-assistant-hotword --device-model-id <deviceid>
4 希望到目前为止,您已经成功使用 Google Assistant 软件设置了树莓派。
如果遇到音频问题,建议您返回” 为 Google Assistant 设置音频 “部分和” 为 Google Assistant 测试音频 “部分。
让 Google Assistant 在启动时启动 1 现在,您已经启动并运行了 Google 助手,您可能会希望在启动时启动它,而不必每次都要输入命令。
实现此目的的最简单方法是为其创建服务。这项服务将使 Google 助手可以在树莓派的后台运行,并且可以轻松地让我们对其进行控制。
首先,我们将编写 bash 脚本,该脚本将执行 hotword 示例。我们将从服务文件中调用此 bash 脚本。
vim /home/pi/start_assistant.sh
2 对该文件,您将要添加以下几行。
第一行有助于定义应使用什么来运行此文件,因此,当命令行解释该文件时,它将知道需要使用 bash 。
第二行我们使用 ** source ** 来读取和执行激活文件中的命令,这将使我们进入在本教程前面创建的 python 环境中。
最后,我们运行关键词 Google Assistant 示例。确保将 **
#!/bin/bash
源/home/pi/env/bin/activate
googlesamples-assistant-hotword --device-model-id <deviceid>
3 将这些行添加到文件后,请按 ** CTRL + X ,然后按 Y **,最后按 ENTER * 保存。
4 现在,我们已经创建了 bash 脚本,我们可以通过在树莓派上运行以下命令,继续为 Google Assistant 创建服务文件。
sudovim/lib/systemd/system/assistant.service
5 在此文件中输入以下行。
这些行告诉操作系统如何处理我们的服务,与之一起运行的用户以及是否依赖于特定的事物 (例如,网络是否可用)。
[单元]
Description = Google助手
Wants = network-online.target
之后= network-online.target
[服务]
类型=简单
ExecStart =/bin/bash /home/pi/start_assistant.sh
重新启动=中止
用户= pi
组= pi
[安装]
WantedBy =多用户目标
6 将这些行添加到服务文件后,请按 CTRL + X,然后按 Y ,最后按 ENTER 保存。
7 现在,我们已经创建了服务,我们需要启用它,以便它实际上在启动时启动。
为此,我们只需要使用 systemctl ,输入以下命令即可启用我们的新服务。
sudo systemctl启用 assistant .service
8 现已启用该服务,让我们尝试启动它,这将使我们确保一切都按预期进行。
sudo systemctl启动助手。服务
9 您现在应该可以使用”** Ok Google **” 热词与 Google 助手进行对话和互动。
立即尝试以确保该服务能够按预期运行。
如果由于某种原因它不起作用,您可以利用下面的命令显示 Google Assistant 示例的最后输出,请随时注意任何错误。
sudo systemctl状态助手
10 希望目前,您已经成功设置了 Google 助手,可以在启动时启动。
如果您喜欢私人助理,那么您可能还需要查看我们的教程,以了解如何在树莓派上设置 Alexa 。设置 IP 非常简单,一旦开始工作,就会带来很多乐趣。
如果您收到回应,则说明您已经在树莓派上成功设置了自己的 Google 助手。如果您想提供反馈或讨论此树莓派 Google 助手项目,请前往我们的论坛。