安装 Alexa 将树莓派打造成一个个人助理

这个树莓派 Alexa 教程将向您展示如何构建和设置一个功能齐全的个人助手,该助手使用树莓派和 Alexa 语音服务来响应您的语音命令。

制作支持 Alexa 的设备的唯一缺点是它无法访问 Pandora 或 Spotify 等音乐服务。

但是,这款树莓派 Alexa 确实利用了亚马逊自己的 Echo 设备的所有其他功能,因为它利用了 Alexa 语音服务。默认情况下,它将一直处于监听状态,因此您只需说出其名称即可与 Alexa 对话。

这意味着您可以访问亚马逊自己的虚拟助手 Alexa ,类似于 Microsoft 的 Cortana ,苹果的 Siri 和 Google Now。

利用 Alexa 语音服务,您可以仅通过语音就可以完成许多不同的事情,例如单位转换和检查体育比赛成绩。

建立自己的 Alexa 供电个人助理所需的全部是带有 USB 麦克风和扬声器的树莓派。

设备清单

以下是我用于构建自己的树莓派 Alexa 教程的所有细节,您将需要方便使用的麦克风和扬声器来进行设置。

推荐的

  • 树莓派

  • Micro SD 卡

  • 电源

  • 网络连接

  • USB 麦克风

  • 发言人

可选的

  • 树莓派外壳

注册 Alexa 语音服务产品

1 在开始设置树莓派之前,我们首先必须创建我们自己的 Amazon 开发人员帐户。

我们可以通过转到 Amazon 开发人员网页并按照提示进行操作。由于它是不言自明的,因此我们不会按照确切的步骤来设置您的帐户。

创建帐户并登录后,我们就可以继续设置树莓派 Amazon Echo 所需的一切。

登录后,将出现以下屏幕,将鼠标悬停在”** Alexa “(**1 ) 选项卡上,然后选择”** Alexa Voice Service “(**2 ) 。

2 在下一个屏幕上,单击产品。该屏幕是使我们能够为树莓派设置访问权限以连接到 Alexa 语音服务的区域。

3 现在单击” 创建产品 “以继续为 Pi 设置” 产品 “。

4 在此屏幕上,您需要先进行一些设置,然后才能继续。

(1 ) 产品名称在”** Alexa App **” 中显示给用户,将其设置为简单但可识别的名称。

(2 ) 产品 ID 用于授权过程。 ID 必须仅包含字母,数字和下划线。对于我们的示例,我们将其设置为”** pimylifeup \ _alexa \ _tutorial **”。

(3 ) 确保将” 产品类型 “设置为” 内置 Alexa 的设备 “。

(4 ) 除非您打算创建自己的伴侣应用程序,否则请将其设置为”** No **”。

(5 ) 现在,对于” 产品类别 “,我们将其设置为” 其他 (请指定)“,指定类别为”** 树莓派 **”。

(6 ) 最后,您可以编写设备的简短说明。此设置仅用于 AVS 服务。

5 继续上一步,在继续操作之前,我们仍然需要在此页面上设置几个其他选项。

这些选项中的大多数用于指示您打算如何将 Alexa 语音服务用于 Amazon 。

以下是所有这些剩余选项的快速浏览。

(1 ) 在这里,您可以设置与树莓派 Alexa 设备进行交互的人的预期方式。

在我们的指南中,我们将其设置为” 触摸启动 “和” 免提 “,以便您可以通过按按钮或与设备通话来触发它。

(2 ) 除非您打算以商业方式分发树莓派 Alexa,否则将此选项设置为”** No **”。

(3 ) 除非您打算使用”** Alexa for Business **” 服务,否则请选择”** 否”。

(4 ) 为该选项选择”** No **”,除非您碰巧该设备也与 AWS IoT Core 账户关联。

(5 ) 现在,对于最后一个选项,请确保为此选项选择” “,因为它不仅仅适用于 13 岁以下的人群。
6 填写所有必需的选项后,您可以通过单击页面底部显示的” 下一步 “按钮继续进行设置过程。

7 现在,系统将提示您设置使用 Amazon (LWA) 安全配置文件登录。

由于我们还没有个人资料,因此,我们必须通过点击” 创建新个人资料 “链接来创建个人资料,如下所示。

8 现在,在文本框中输入此安全配置文件的名称和简短说明 (1 )。我们将这些保留为我们打算利用它的简单描述符。

对于我们的教程,我们将”** Profile Name “设置为” Pi My Life Up 树莓派 Alexa “,并将” Profile Description “设置为” Pi My Life Up 树莓派 Alexa **” 树莓派 Alexa **”。

安全配置文件名称 “字段使您可以轻松识别安全配置文件及其用途。” 安全配置文件描述 “字段用于说明该配置文件的用途。

设置完两个字段后,单击”** NEXT “按钮 (**2 ) 继续。

9 创建” 通过亚马逊登录 “安全配置文件后,我们可以继续生成所需的 ID 信息,以便可以从树莓派连接到 Alexa 语音服务。

首先,切换到” 平台信息 **” 部分中的” 其他设备和平台 **” 标签 (1 )。

本部分将使我们生成连接到 Alexa 语音服务所需的相关数据。

现在我们需要设置一个” 客户 ID 名称 “(2 ),然后才能生成实际的 ID 和授权数据。

客户端 ID 用于标识和授权您的树莓派连接到 Alexa 。该值不会显示给最终用户,仅用于授权。

对于我们的指南,我们将客户端 ID 设置为”** pi \ _my \ _life \ _up \ _raspberrypi \ _alexa **”,因为它既代表设备又代表我们打算使用它。

设置客户 ID 后,请按”** GENERATE ID “按钮 (**3 )。

10 生成客户端 ID 后,请点击” 下载 “(1 ) 按钮。

确保将文件保存在易于访问的位置,因为我们稍后将在本教程中获取该文件的内容。

现在,选中条款和条件文本” 我同意 “(2 ) 旁边的复选框。

下载完客户端 ID 文件后,请继续并单击” 完成 “(3 ) 按钮。

11 您现在已经成功创建了产品,可以访问 AWS API。

12 在我们的树莓派上设置 Alexa 之前,我们必须启用我们刚刚创建的安全配置文件。

为此,您需要转到 “使用 Amazon 登录” 主页

13 在此屏幕上,您需要选择我们在先前步骤中创建的 LWA 安全配置文件 (1 )

选择后,单击” 确认 “(2 ) 按钮。

14 在这里,您需要设置” 同意隐私声明 URL **”(**1 )。如果您仅将其用于个人用途,则可以将其设置为伪造的 URL 以继续。

对于我们的教程,我们只是将同意 URL 设置为”** http://example.com**”,因为我们不打算将其作为可公开访问的配置文件。

设置同意隐私声明 URL 后,继续并按” 保存 “(2 ) 按钮。

在树莓派上设置 Alexa

1 在继续将 Alexa 安装到树莓派之前,首先请确保我们正在运行最新的可用软件。

您可以通过在树莓派上运行以下命令来实现。

sudo apt-get update
sudo apt-get upgrade

2 现在,我们从 alexa-device-sdk GitHub 下载我们需要的所有安装和配置脚本。

这些脚本将在树莓派上设置和配置 Alexa ,并处理设置 Alexa 软件的大部分繁琐工作。

通过运行以下三个命令来下载所有三个脚本。

wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/setup.sh
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/genConfig.sh
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/pi.sh**3** 现在我们可以使用所有脚本了,我们现在想将先前下载的** config.json **文件移动到正确的位置。

如果您在树莓派上下载了文件,则可以将其移至 **/home/pi 位置,然后跳至步骤 5 **。

否则,您可以通过运行以下命令来创建新文件。

vim 〜/config.json

4 现在,将您先前下载的 ** config.json ** 文件的内容复制并粘贴到此文件中。

内容最终应为 6 行,如下面的示例所示。

{

“设备信息”: {
“clientId”:”amzn1.application-oa2-client.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”,
“productId”:”pimylifeup_alexa_tutorial”
}
}

输入正确的数据后,请依次按 ** CTRL ** + ** X ,然后按 Y **,最后按 ENTER * 保存文件。

5 现在,我们可以通过运行以下命令继续运行”** setup.sh **” 脚本。

该脚本将安装所有必要的信息,并在您的树莓派上准备 Alexa 。

bash setup.sh config.json

6 在开始设置过程之前,系统会询问您是否同意各种条款和协议,因为 Alexa Device SDK 依赖于多个第三方存储库。

我们在下面提供了此消息的外观示例。

要继续安装过程,您需要输入”** AGREE “并按 ENTER ** 继续。

如果由于某些原因您不同意这些条款,则可以输入”** QUIT **”,但不会安装和设置该软件。

请注意,安装过程可能会花费一些时间,因为将要安装的软件包很少,而一些软件包则需要从头开始自动编译。

############################################### ##########################
############################################### ##########################


AVS Device SDK Raspberry pi脚本-条款和协议


AVS Device SDK依赖于多个第三方库,环境,
和/或其他使用此脚本安装的软件包
第三方来源("外部依赖项")。


这些是与外部依赖性相关的条款和条件
(可从 https ://github.com/alexa/avs-device-sdk/wiki/Dependencies获得)
如果您选择安装外部依赖项,则需要同意遵守。

如果您不同意与"外部"相关的所有条款和条件
依赖项,在安装程序提示时在命令行中输入"QUIT"。

否则输入"AGREE"。


############################################### ##########################
############################################### ##########################

7 设置过程完成后,我们仍然需要安装一些其他软件包才能使 Alexa 软件正常工作。

由于某些原因,这些软件包未在标准设置过程中安装,如果没有它们,您将遇到错误。

通过运行以下命令来安装这些其他软件包。

sudo apt-get install gstreamer1.0-alsa gstreamer1.0-tools gstreamer1.0-plugins-ugly

更改 Alexa 的默认语言

也可以调整树莓派 Alexa 设备将使用的默认语言。

如果您对使用英语操作的设备感到满意,则可以随意跳到下一部分。

1 要更改语言,我们需要修改在安装过程中生成的”AlexaClientSDKConfig.json” 文件。

我们可以通过运行以下命令开始修改此文件。

vim /home/pi/build/Integration/AlexaClientSDKConfig.json

2 在此文件中,您需要搜索以下部分。

您可以使用 CTRL + W 组合键搜索文件。

“设备设置”:

3 在此部分中,您应该看到一个名为””defaultLocal”` 的选项。

“defaultLocale”:”en-US”,

要更改默认语言,我们需要将”en-US” 更改为要使用的语言的语言环境,以下是 Alexa SDK 支持的语言列表。

语言语言环境
英文 (美国方言)zh-CN
英文 (英国方言)zh-CN
英语 (加拿大方言)zh-CA
英语 (澳大利亚方言)zh-CN
英文 (印度方言)en-IN
法语 (加拿大方言)fr-CA
法语 (法语)zh-CN
西班牙语 (西班牙语)zh-ES
西班牙语 (墨西哥方言)zh-MX
西班牙语 (美国方言)zh-CN
日语 (日语)ja-JP
意大利语 (意大利语)it-IT
印地语 (印度方言)hi-IN
葡萄牙语 e (巴西方言)pt-BR

4 例如,如果我们想将语言切换为西班牙语,我们将修改该选项,使其外观如下所示。

“defaultLocale”:”es-ES”,5 更改了默认语言后,继续并按 CTRL + X,然后按 Y ,再按 ENTER ,保存文件。

为树莓派 Alexa 设备设置音频

1 在继续运行 Alexa 软件之前,我们必须首先确保正确配置音频。

我们必须首先获取麦克风和音频输出的卡号和设备号。

** 1a。** 运行以下命令以列出所有可用的记录设备。通过此命令,记下麦克风的卡号和设备号。

记录-l

** 1b。** 现在,运行以下命令列出所有播放设备。记录要输出的设备的卡号和设备号。

请注意,树莓派的 3 .5mm 插孔通常标记为 ** Analog bcm2835 ALSA ,而 HDMI 输出被标识为 bcm2835 IEC958/HDMI **。

播放-l

2 现在我们已经拥有了所需的所有设备和卡号,我们现在需要继续运行,并通过运行以下命令为 pi 用户创建 **。 asoundrc ** 文件。

此 **。 asoundrc ** 文件用于 ALSA 声音驱动程序,以了解要使用的设备。

vim /home/pi/.asoundrc

3 在此文件中,您需要输入以下行来配置音频。

将这两个值替换为您在本节的” 步骤 1 “中获取的值。

pcm。!默认{
  类型不对称
  capture.pcm"麦克风"
  playing.pcm"扬声器"
}
pcm.mic {
  型插头
  奴隶 {
    pcm"硬件:<卡号>,<设备号>"
  }
}
pcm.speaker {
  型插头
  奴隶 {
    pcm"硬件:<卡号>,<设备号>"
  }
}

4 完成后,您可以按 ** CTRL ** + ** X ,然后按 Y **,最后按 ENTER * 保存文件。

在您的树莓派上授权和运行 Alexa

1 现在,我们在树莓派上安装了 Alexa ,现在我们可以继续启动示例 Alexa 应用,以授权我们的设备。

您需要在树莓派上输入以下命令以启动 Alexa 示例应用程序。

bash startsample.sh

2 首次启动示例 Alexa 应用程序时,系统将显示以下消息。

** {xxxx} ** 是已生成的唯一代码,用于授权您的树莓派访问 Alexa 语音服务。

要授权您的树莓派,请转到 Amazon 代码,然后按照提示批准您的树莓派与 Alexa 的连接。

Alexa 示例应用程序将自动与 Amazon Web 服务器通信,以检测您何时对该设备进行了授权。

#################################
#尚未授权#
#################################

############################################### ##########################
#要进行授权,请浏览至:'https://amazon.com/us/code'并输入代码:{XXXX}#
############################################### ##########################

3 一旦您看到下面的文本,您将知道您的树莓派已被成功授权与 Alexa 语音服务进行通话。

您可能必须向上滚动命令行历史记录,因为一旦被标记为授权,Alexa 软件将产生大量输出。

##########################
#授权! #
###########################

4 您可以通过多种方式与 Alexa 示例软件进行交互。与之交互的最简单方法是说”** Alexa **”,然后提示您进入 Alexa 语音服务。

或者,您也可以在命令行中输入”** t “以跳过必须大声说” Alexa **” 的过程。

如果需要,可以使用”** h “,它将模拟按下一个按钮。使用” h “将使 Alexa 示例软件不断收听,直到再次在命令行中输入” h **”。

如果一切正常,您将获得从 Alexa 语音服务到树莓派的响应。该响应将通过您之前配置的音频设备进行播放。

让您的树莓派 Alexa 设备在启动时启动

1 若要使 Alexa 软件在我们的树莓派上启动时启动,我们必须首先对”** SampleApp **” 代码进行一些修改。

默认情况下,代码旨在等待 ** stdin ** 的输入,但是当 stdin 不可用时,它将抛出错误,因此我们必须修改输入循环。

通过运行以下命令开始修改”** UserInputManager.cpp **” 脚本。

sudovim/home/pi/avs-device-sdk/SampleApp/src/UserInputManager.cpp

2 在此文件中,使用 vim 的 ** CTRL ** + ** W 功能查找以下代码部分。我们发现搜索” m \ _interactionManager-> begin (); **” 最容易找到它在该代码部分的下面以及 while 循环中,请确保您添加下面显示的代码。此附加代码将使输入线程休眠,并停止任何输入处理发生。

查找以下代码块

SampleAppReturnCode UserInputManager :: run(){
    bool userTriggeredLogout = false;
    m_interactionManager-> begin();
    而(true){

添加到下面

        std :: this_thread :: sleep_for(std :: chrono :: hours(1));
        继续;

3 更改后,代码应类似于我们在下面显示的代码。

SampleAppReturnCode UserInputManager :: run(){
    bool userTriggeredLogout = false;
    m_interactionManager-> begin();
    而(true){
        std :: this_thread :: sleep_for(std :: chrono :: hours(1));
        继续;

4 现在,按 ** CTRL ** + ** X ,然后按 Y **,最后按 ENTER * 保存文件。

5 由于我们现在已经修改了其中一个脚本,因此现在需要重新编译它。

不必担心,这将是一个相当快的过程,因为我们只需要从以下两个命令所示的前面重新运行安装脚本即可。

cd/home/pi
sudo bash setup.sh config.json

6 现在,我们已经编译了 Alexa SampleApp,现在我们可以继续创建服务文件,以便在启动时自动启动 Alexa 服务。

让我们通过运行以下命令来创建此服务文件。

sudovim/lib/systemd/system/alexa.service

7 在此服务文件中,您需要输入以下所示的行。

这些文本行将定义操作系统应如何处理我们的服务。

它告诉操作系统什么用户将执行 bash 脚本。它还设置了我们要求网络在初始化 Alexa 之前处于活动状态。

[单元]
Description =树莓派 Alexa 
Wants = network-online.target
之后= network-online.target

[服务]
类型=简单
ExecStart =/bin/bash /home/pi/startsample.sh
重新启动=中止
用户= pi
组= pi

[安装]
WantedBy =多用户目标

输入所有内容后,您可以按 ** CTRL ** + ** X ,然后按 Y **,最后按 ENTER ** 保存文件。

8 创建了 Alexa 服务后,我们需要先启用它,然后才能在启动时加载它。

要启用新服务,将使用 ** systemctl ** 实用程序。输入以下命令将其启用。

sudo systemctl启用 alexa .service

9 现在启用了 Alexa 服务,让我们继续启动它。现在启动服务将使我们能够确保一切正常进行。

通过在树莓派上运行以下命令来启动服务。

sudo systemctl启动 alexa .service

10 服务启动后,您现在应该可以使用”Alexa” 热键与树莓派 Alexa 设备进行交互。

如果没有响应,则可以通过运行以下命令来检查服务的状态。

sudo systemctl状态 alexa .service

改善您的麦克风增益

1 如果您的麦克风无法接听声音,则一种解决方案是增加麦克风增益。利用 alsamixer 可以做到这一点。

要启动 ** alsamixer **,请在终端中输入以下命令:

alsamixer

2 加载 AlsaMixer 应用后,您可以按 ** F6 选择其他 USB 设备,使用箭头键选择您的麦克风,然后按 Enter **。

3 选择麦克风后,请使用 [方向键] 增大捕获音量。对捕获量满意后,可以按 ** ESC ** 退出。

4 现在要保留这些新设置,我们将需要告诉 ** alsa ** 存储新设置并将其永久化。为此,我们可以运行以下命令。

sudo alsactl商店

您现在应该已经可以完全操作,并建立并运行自己的树莓派 Amazon Alexa。如果您认为本教程很有用,或者遇到任何问题,请在下面发表评论。

分享到