如何将 Alexa 添加到您的智能镜子

将智能语音助手的功能融入你的智能镜子中,例如亚马逊的 Alexa。

如果你已经构建了一面智能镜子,那么你可能已经体验到了访问日历、天气和新闻的便利。然而,其潜力远不止于此!借助 Magic Mirror 软件,你可以通过安装各种模块来扩展其功能,例如添加 Alexa 以实现语音控制。

许多开发者已经创建了这些模块。 这些模块的功能从实用性极高的(如 Alexa 集成或通过摄像头或被动红外传感器进行存在检测)到娱乐性十足的(如雪花效果和 Spotify 播放信息显示)不等。

我们特别推荐 MMM-awesome-alexa 这个模块,因为它由活跃的开发者维护,而且在 Magic Mirror 软件中还有其他可用的 Alexa 模块。

如果你更喜欢安装 Google Assistant,谷歌官方提供了一份 详细教程,指导如何在 Raspberry Pi 上安装 Assistant,其中包含步骤、图片和下载链接。虽然也有一些用于 Google Assistant 的 Magic Mirror 模块,但我们发现它们存在一些问题,例如经常崩溃或覆盖镜面信息。 为了获得最简单的设置体验,我们建议你购买 谷歌 AIY 套件 并按照其 具体教程 进行操作。

安装大多数模块通常需要以下几个基本步骤:

  • 从 GitHub 下载模块代码
  • 配置模块特定的选项
  • 将模块添加到你的镜面配置中

根据模块的不同,步骤二和三可能涉及较多或较少的操作。 例如,设置 Alexa 比添加雪花效果需要更多配置。 此外,这个特定的 Alexa 模块需要在下载模块之前安装一些额外的软件(依赖项)。

所需材料

本指南假定你已经成功搭建了一面智能镜子。 如果你还没有完成这一步,请先从构建智能镜子开始,但请注意本文所列额外材料产生的成本和空间需求。

你还需要以下材料:

  • 一个已完成的智能镜子
  • 一个麦克风
  • 一个扬声器

对于麦克风和扬声器,我们推荐原装的 谷歌 AIY 语音套件。 这款价格约为 16 美元的套件,很难找到更便宜的麦克风和扬声器组合。 你不一定需要使用随附的纸板箱; 将组件取出,并将麦克风和扬声器放置在镜子外面,可能效果更好。

第二代 谷歌 AIY 语音套件 也是可用的,但价格更高,并且包含一个 Raspberry Pi Zero,它的性能不足以运行唤醒词或魔镜软件,因此我们建议你跳过它。

连接好扬声器和麦克风后,你就可以开始安装 Alexa 模块了。 如果你使用 Google AIY 套件,只需按照其 组装指南 连接麦克风和扬声器组件即可。

安装模块依赖项

在下载和配置 mmm-awesome-alexa 之前,你需要安装一些模块所需的依赖项。 在尝试安装其他任何内容之前,更新你的 Raspberry Pi 是一个好习惯。 在你的 Raspberry Pi 上,首先运行以下命令:

sudo apt update && sudo apt upgrade

一旦你的 Raspberry Pi 完成更新,请依次运行以下命令:

sudo apt-get install sox libsox-fmt-all
sudo apt-get install swig3.0 python-pyaudio python3-pyaudio sox
pip install pyaudio
sudo apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0 ffmpeg libav-tools
sudo apt-get install libatlas-base-dev

每个命令都会安装一个依赖项,这些依赖项对于模块的运行是必需的。 逐个运行命令,等待下载和安装完成,然后再运行下一个命令。

下载模块代码

为你的魔镜添加任何模块的第一步是从 GitHub 下载模块的代码。 为此,你需要登录到你的 Raspberry Pi,打开终端,然后将目录更改为模块的存储位置。 之后,你将使用下载命令从 Github 中提取代码。 如果你有 shell 访问权限,则可以远程完成所有这些操作。

打开终端后,键入以下内容:

cd ~/MagicMirror/modules

此命令会将你移动到 Magic Mirror 软件的模块文件夹的工作目录。 每当你下载新模块时,最好将其保存在这里,以便保持组织性。 下一步是使用以下命令从 Github 下载软件:

git clone https://github.com/dolanmiu/MMM-awesome-alexa.git

完成后,使用以下命令将目录更改为模块:

cd MMM-awesome-alexa

Alexa 模块需要一些额外的依赖项才能正常工作。 运行以下命令来安装它们:

npm install --only=prod

现在,将目录更改为新创建的 node_modules 文件夹:

cd node_modules

删除先前添加的命令中的 snowboy 文件夹。 我们需要更新版本的 snowboy:

rm -rf snowboy

接下来,我们将使用以下命令下载最新版本的 snowboy:

git clone https://github.com/Kitt-AI/snowboy.git

在我们继续之前,将目录更改为新的 snowboy 文件夹。

cd snowboy

现在我们需要删除 node_modules 文件夹并安装一些额外的依赖项。 对于这些步骤,你必须停留在 snowboy 文件夹中,这一点很重要; 请勿更改目录。 逐个运行以下命令:

rm -rf node_modules
npm install nan --save
npm install [email protected] --save
npm install
npm run prepublish
npm install --save-dev electron-rebuild
npm install nan
./node_modules/.bin/electron-rebuild

现在,该模块已完全下载并安装。

配置 Alexa 模块

现在已经安装了 mmm-awesome-alexa 模块,我们需要对其进行配置。 第一步是将目录更改为模块的根目录。 在终端中键入以下命令,然后按 Enter:

cd ~/MagicMirror/modules/MMM-awesome-alexa

这个 Alexa 模块包含一个配置助手;我们需要运行它。在终端中输入:

npm run config-helper

你将看到提示,要求提供客户端 ID。 因为你实际上是在设置一个自定义的 Echo,所以你需要打开浏览器并访问 Alexa 开发者网站。 然后使用你的亚马逊账户登录。

登录后,点击“开始”按钮。 因为你正在创建设备,请单击“产品”,然后单击“创建产品”。

在下一个屏幕上,为你的产品提供名称和产品 ID — 我们建议将名称设置为“Magic_Mirror_Alexa”,将产品 ID 设置为“YourFirstName_MM_Alexa”。 为类别选择“智能家居”,并启用“免提”和“远场”选项。 你将看到一系列“是”或“否”的问题,对于所有问题选择“否”,然后单击“下一步”。

在安全配置文件屏幕上,单击“创建新配置文件”。 为你的安全配置文件使用与产品 ID 相同的名称。 然后输入你想要的任何描述,然后单击“下一步”。

查看协议并单击“完成”。

单击你新创建的产品,然后单击“安全配置文件”,你应该会看到一个客户端 ID 和客户端密码。

在“允许的返回 URL”条目中,输入:
https://magic-mirror-avs.github.io/Alexa-Web-Helper/authresponse

然后单击“添加”按钮。 向下滚动并单击“更新”框以完成添加 URL。

在终端中,你将看到一个输入客户端 ID 的提示。 从浏览器复制客户端 ID,将其粘贴到终端中,然后按 Enter 键。 现在,终端将提示输入客户端密码。 切换回浏览器,复制客户端密码,然后将其粘贴到终端中并按 Enter 键。

当提示输入设备 ID 时,输入你在上面创建的名称作为产品 ID(在我们的示例中为 “Magic_Mirror_Alexa”)。

当要求你提供返回 URL 时,输入以下命令并按 Enter 键:

https://magic-mirror-avs.github.io/Alexa-Web-Helper/authresponse

终端将显示一个自定义构建的链接。 复制它并将其粘贴到浏览器中。 如果出现提示,请使用你的亚马逊账户登录。 在下一个屏幕上单击“允许”。

你将在浏览器上看到一个错误,但请不要担心! 这是预料之中的。 滚动浏览错误页面的 URL 并找到 “Code=xxxxxx” 部分。

复制 “code=” 和 “&scope” 之间出现的字母和数字,并将它们粘贴到终端中。 完成后按 Enter 键。

当询问你是否要生成 MagicMirror 配置时,键入 Y,然后按 Enter 键。

系统将询问你使用哪个唤醒词。 “Alexa” 是默认选项,因此请按 Enter 键。

对使用精简模式和可视化回答“否”。

配置助手将生成你的模块信息。 它看起来如下所示:

{
 module: "MMM-awesome-alexa",
 position: "bottom_bar",
 config: {
 wakeWord: "Alexa",
 clientId: "YOUR_CLIENT_ID",
 clientSecret: "YOUR_CLIENT_SECRET",
 deviceId: "YOUR_DEVICE_ID",
 refreshToken: "YOUR_REFRESH_TOKEN",
 lite: false,
 isSpeechVisualizationEnabled: false
 }
 }

复制这些代码行。 我们需要将它们添加到魔镜配置中。

将 Alexa 模块添加到魔镜配置

使用以下命令将目录更改为 Magic Mirror 配置文件夹:

cd ~/MagicMirror/config

并使用 nano 命令打开 config.js:

nano config.js

在第一个 } (即模块的结尾)之后,按 Enter 键,在下一个 { 条目(即新模块的开头)之前创建一个空行。

在你创建的新空白行中,粘贴配置助手步骤中的模块代码。 自动生成的代码实际上存在一个错误; 你还需要在最后一个括号后输入一个逗号,以便你的模块以 } 结尾,

使用 Ctrl+x 关闭文件。 出现提示时,键入 “y” 以确认保存,然后按 Enter 键以保持文件名不变。

模块安装完成。 要在模块就绪的情况下重新启动 Magic Mirror 软件,请键入 pm2 restart mm,Magic Mirror 软件将重新启动。 现在,Alexa 应该可以在你的魔镜上正常工作了。

这是你可以为魔镜设置的更复杂的模块之一。 但对于其他模块,基本步骤都是相同的:下载代码,配置模块特定选项,将模块添加到配置中。 你可以添加 雪花效果到你的镜子上,或者 运动检测功能,甚至可以显示你的 谷歌相册