本帖最后由 wwb123 于 2018-11-26 10:32 编辑
原文链接:点击查看Vox:谷歌助手 你对学习谷歌助手API感兴趣吗?不知道从哪里开始?自己组装(AIY)谷歌语音套件是一个答案! 硬件组件 3.SD卡8GB+×1 软件应用程序和在线服务 2.Python 3.Microsoft Visual Studio 2017 简要介绍 我决定通过谷歌Assistant API和SDK获得经验和一些入门知识。我发现了一个很好的解决方案,从您的个人谷歌助手开始,并使用其API。这个工具包节省了大量的时间和精力来构建与谷歌助手交互的硬件解决方案。然而,你总是可以建立自己的解决方案,最低的硬件你需要:树莓派,SD卡,USB麦克风和树莓派电源。然而,本教程只介绍AIY语音工具包,但如何使用它实现家庭自动化和其他伟大的事情,您可以通过您的谷歌帐户和谷歌助手进行操作。 组装设备 让我们看看我们的AIY声卡。目前有两个版本的语音工具包,我使用了第一个版本,但你可能会使用新版本。你可以使用树莓派0 WH版本,但是我建议使用树莓派3,因为树莓派0有一些限制。 现在让我们组装纸箱和连接所有外设(按钮,音响,麦克风等)到树莓派上。V1和V2有很好的组装指南。 安装软件 你有两个选择: 如果您对树莓派和谷歌助手不熟悉,我建议您继续使用第一个选项,因为它拥有运行谷歌助手SDK和AIY语音工具包所需的所有库和软件。如果您要继续第二个选项,则需要自己安装所需的库和软件,这对新用户来说可能有点棘手。 在你在SD卡上写入镜像后,你需要做很多的改变。我们希望在将SD卡插入树莓Pi之前 启用ssh并提供无线连接细节。 通过在引导分区中创建一个名为SSH的空白文件来启用SSH。当sd卡映像被创建时,它在媒体上创建2个分区。一个分区被标记为boot,第二个分区是树莓派根分区。 设置无线网络。转到媒体的根分区并进入到etc/wpa_supplicant。将WiFi配置按照以下格式添加到wpa_supplicant.conf文件。在配置文件中追加以下文本,通过替换适当的ssid、password和key_mgmt值进行配置无线网络。 - network={
- ssid="SSID"
- psk="password"
- key_mgmt=WPA-PSK
- }
复制代码
安装谷歌助理 现在让我们启动助手,把SD卡插入树莓派并且打开电源。如果所有操作都正确,那么在树莓派启动之后,就可以通过SSH连接到树莓派。你需要使用PuTTY SSH客户端连接你的树莓派IP地址。你的WiFi路由器应该有所有已连接设备的列表。默认情况下,树莓派使用raspberry作为用户名,pi作为密码。所以你可以改变它们,至少密码是可以改变的。 当你成功连接到你的树莓派,我们使用由AIY语音工具包镜像提供的简单脚本检查组装的语音工具包是否正确运行。 - /home/pi/AIY-projects-python/checkpoints/check_audio.py
复制代码 确认音频工作: 如果您在连接您的设备时遇到任何问题,请查看官方指南。 现在,让我们设置谷歌云平台凭据,这里列出了一些简单而常规的步骤,这些步骤在这里有详细介绍。在创建新项目并获得凭据后,您可以将它们复制到主文件夹下的assistant.jason文件! 让我们进行一些演示吧!移动到演示文件夹(如果你使用的是上面的镜像): 运行助理的例程: - /src/examples/voice/assistant_grpc_demo.py
复制代码 对于第一次运行,您将被要求授予权限: 将终端中看到的链接复制粘贴到浏览器中。如果您有多个谷歌帐户,我建议您使用一个您希望提供与您的数据最相关的帐户(上班时间,您所在位置的天气等)。 要允许项目访问您的帐户,请单击Allow。 将代码行复制粘贴到终端: 如果你从来没有和谷歌助手互动过,语音工具包会告诉你给我许可,你需要给它许可才能使用你的账户。在设备上下载谷歌Assistant.app(它支持Android和iOS设备)并运行它。 现在演示运行:
当您完成演示测试后,按下按钮并说“再见”或按Ctrl-C中断并停止演示。 高级用法 我附加了一个Python框架脚本(assistant.py),我用它与我的其他物联网项目一起工作,以获得它们的正在读取的事务和数据。我用它来做我的气象站项目,监控摄像头以及与我的谷歌账户的一般交互:获得交通状况,日历提醒等。 您可以使这个脚本自动运行。首先,你可以看到它开始于: 它使Raspbian OS知道用什么程序(在我们的例子中是Python 3)来运行这个脚本。 然后让它可执行: - sudo chmod +x assistant.py
复制代码 现在让我们设置lxsession来自动启动: - sudo nano ~ / config / lxsession / LXDE-pi /autostart
复制代码 重要的是:我不建议使用rc.local和服务处理这个自启动这个事情,因为它们有几个缺点:要么提供不同的路径到assistant.json或显示连接。 然后添加以下一行(本示例使用/home/pi作为脚本的路径): 这里的&符号非常重要,这意味着我们的脚本可以在后台运行。重新启动你的设备,就这样!请用安全的方式重新启动树莓派,树莓派虽小,但很像电脑 在本文中可以找到在启动时运行脚本的其他解决方案和案例。 您还可以查看此链接中许多不同的示例,了解如何在这里使用和扩展您的个人谷歌助手。
Python脚本 演示自定义命令和与其他设备(如家庭网络和其他智能设备)的交互 - #!/usr/bin/env python3
- import aiy.assistant.grpc
- import aiy.audio
- import aiy.voicehat
- import subprocess
- import RPi.GPIO as GPIO
- def main():
- status_ui = aiy.voicehat.get_status_ui()
- status_ui.status('starting')
- assistant = aiy.assistant.grpc.get_assistant()
- button = aiy.voicehat.get_button()
- with aiy.audio.get_recorder():
- while True:
- status_ui.status('ready')
- print('Press the button and speak')
- button.wait_for_press()
- status_ui.status('listening')
- print('Listening...')
- text, audio = assistant.recognize()
- if text:
- print('You said {}'.format(text))
- if text == 'power off':
- status_ui.status('stopping')
- aiy.audio.say('Goodbye!', volume=20)
- subprocess.call('sudo shutdown -h now', shell=True)
- break
- if text == 'reboot':
- status_ui.status('stopping')
- aiy.audio.say('See you soon!', volume=20)
- subprocess.call('sudo reboot', shell=True)
- break
- if text == 'weather station':
- # Here goes your logic to handle custom command.
- # In my case I connect to my weather station and get its readings.
- # aiy.audio.say('Readings result', volume=20)
- continue
- if audio:
- aiy.audio.play_audio(audio, assistant.get_volume())
- GPIO.cleanup()
- if __name__ == '__main__':
- main()
复制代码 AIY项目的API库、示例和系统镜像github地址: https://github.com/google/aiyprojects-raspbian
|