使用 Ansible 在树莓派上部署 Mycroft AI 语音助手

使用本文中的这些 Ansible 剧本可以帮你获得更优的 Mycroft AI 体验。

使用本文中的这些 Ansible 剧本可以帮你获得更优的 Mycroft AI 体验。

使用 Ansible 在树莓派上部署 Mycroft AI 语音助手

Mycroft AI 是一款虚拟助手应用程序,可以响应语音请求并完成相应的任务,比如在互联网上搜索你需要的某些信息,或者下载你喜欢的博客等等。这是一款优秀的开源软件,不同于那些收集个人数据业务的公司的同款软件,Mycroft AI 注重于保护隐私以及提供平台灵活性。

Mycroft AI 使用 python 开发,可以安装于不同的硬件平台上。家喻户晓的树莓派便是一个非常热门的运行语音助手的硬件方案(不过不是唯一的方案)。方便的是,Mycroft 为树莓派提供了 Picroft 镜像,虽然目前 Picroft 还有一些限制,比如不支持 64 位系统,不过不能阻止它成为一种优秀的解决方案。

树莓派 4,我选择的目标平台

树莓派在 Mycroft 社区中非常受欢迎,因为其性价比高,在教育行业中有着巨大的优势,并且由于 Mycroft 提供的便捷功能以及树莓派本身易于访问的输入/输出(GPIO)引脚等,为树莓派提供了有趣的扩展可能(比如,提供 唤醒词 LED GPIO 能力)。

树莓派 4B 具有足够的 CPU 算力以及内存来平稳运行 Mycroft。我使用的是 8G 内存的树莓派4B,运行 Raspberry Pi OS Bullseye 64-bit 系统,你可以从 RaspberryPi.org 网站下载该系统镜像文件。

自动化这件事

构建你自己的 Mycroft AI 系统,必须要注意一些细节问题。根据我(一年以来)的初步经验,以下罗列了一些重要的技术细节点:

  • 音频输出(扬声器配置)
  • 音频输入(麦克风配置)
  • 麦克风质量(以购买的实际硬件为准)
  • 唤醒词响应(比如打招呼 “嘿,Mycroft”)
  • 响应延迟(比如提问 “天气怎么样”)

这些并不是 Mycroft AI 的问题(LCTT 译注:难道软件平台就没有处理延时问题?),它们只能是你在选择硬件和配置操作时必须牢记关心的事情。树莓派本身能够运行 Mycroft AI,但有一些配置需要额外的注意下:

  • CPU 调度器
  • SD 卡性能
  • PulseAudio 配置
  • 网络延迟

我做了大量的研究和实践来解决上面列出这些令人头疼的注意点,最终我实现了我的“终极”目标 —— 最流畅的体验!

Ansible 雪中送炭

我已经摸索出了最流畅的体验配置,但是如何确保在任何树莓派 4 板子上都能不遗漏每一个设置细节,然后达到重新部署这种流畅性体验的目标呢?

Ansible 能帮助你实现。Ansible 在设计上是幂等设计,这意味着它仅在需要时响应更改的请求。如果一切配置正确,Ansible 不会改变任何事情。这便是幂等设计的优美之处。

为了达到这一目的,我使用了两种 Ansible 场景角色工具:

  • 一个用于配置和调整树莓派
  • 一个用于安装和配置 Mycroft AI

Ansible prepi 角色

Ansible prepi role 应用了一些配置,以便让树莓派 4B 发挥更佳的性能以及为安装 Mycroft 做前提准备。

  • 更新 Raspberry Pi OS 至最新版本
  • 添加 Debian backports 仓库
  • 使用 next 分支更新固件,该分支支持 5.15 版本内核以及边缘固件
  • 使用测试版本更新 EEPROM,该版本支持边缘功能
  • 设置 initial_turbo 用来加速启动过程
  • 将树莓派超频至 2GHz
  • 在 RAMDisck 上挂载 /tmp
  • 优化 / 分区挂载选项,提升 SD 卡读/写性能
  • 管理 I2C、SPI、UART 接口
  • 设置 CPU 控制器至避免在空间内核函数之间发生上下文切换的模式,以便提升性能
  • 安装和配置 PulseAduio(非系统范围)
  • 新固件或者 EEPROM 安装后重启树莓派

Ansible mycroft 角色

Ansible mycroft role 基于脚本 dev_setup.sh 从 Github 仓库获取并安装和配置 Mycroft AI,该脚本是 Mycroft 核心团队提供。

  • 需要准备 Python3 环境
  • 系统集成环境
  • 额外的安装技能
  • 安装 Boto3、py_mplayer、pyopenssl 库
  • 支持 IPC 的 RAMDisck
  • 支持文件配置
  • PulseAudio 优化
  • 安全的 Mycroft 消息总线 websocket

我利用 Ansible 剧本 来协调上面两个角色的使用。

个人配置需求

下面列举了一些个人配置的需求:

  • 能上网的树莓派 4B 板子(或者更新的板子)
  • Raspberry Pi OS 64-bit
  • Ansible 2.9(或者更新版本)
  • 可正常工作的 SSH

推荐使用 Etcher 来烧录 Raspberry Pi OS 镜像至 SD 卡,你也可以使用你选择的镜像烧录工具。

我将树莓派超频来提升性能,不过这可能对你的硬件是一种潜在危险。在使用我的 Ansible 剧本配置之前,请先仔细阅读。你需要为你的每个配置选择负责。你将决定使用哪个固件、哪个 EEPROM。超频的话需要记得提供相应的冷却系统。

执行 Ansible 剧本

第一步,使用命令从 Github 获取 Ansible 剧本:

“`
$ git clone https://github.com/smartgic/ansible-playbooks-mycroft.git

“`

源码中,requirements.yml 文件中提供了该剧本的依赖角色列表,必须从 Ansible Galaxy 中检索这些依赖。

“`
$ cd ansible-playbooks-mycroft
$ ansible-galaxy install -r requirements.yml
Starting galaxy role install process
– downloading role ‘mycroft’, owned by smartgic
– downloading role from https://github.com/smartgic/ansible-role-mycroft/archive/main.tar.gz
– extracting smartgic.mycroft to /home/goldyfruit/.ansible/roles/smartgic.mycroft
– smartgic.mycroft (main) was installed successfully
– downloading role ‘prepi’, owned by smartgic
– downloading role from https://github.com/smartgic/ansible-role-prepi/archive/main.tar.gz
– extracting smartgic.prepi to /home/goldyfruit/.ansible/roles/smartgic.prepi
– smartgic.prepi (main) was installed successfully

“`

第二步,编辑仓库中的 Ansible 清单,设置需要管理的主机。

“`
[rpi]
rpi4b01 ansiblehost=192.168.1.97 ansibleuser=pi

“`

[rpi] 代表组,无需更改。该组有一个主机 rpi4b01,其 IP 地址为 192.168.1.97, 并创建 pi 作为 Linux(Raspberry Pi OS)上的默认用户。

现在比较棘手的部分到了:你希望每个选项怎么配置?这取决于你自己,下面是我的首选配置,供你参考:

“`

file: install-custom.yml

  • hosts: rpi
    gather_facts: yes
    become: yes

    pre_tasks:

    • name: Install Python 3.x Ansible requirement
      raw: apt-get install -y python3
      changed_when: no
      tags:

      • always

    vars:
    # PREPI
    prepipiuser: pi
    prepihostname: mylovelypi
    prepi
    firmwareupdate: yes
    prepi
    overclock: yes
    prepiforceturbo: yes
    prepicpufreq: 2000
    prepipulseaudiodaemon: yes

    # MYCROFT
    mycroftbranch: dev
    mycroft
    user: “{{ prepipiuser }}”
    mycroftskillsupdateinterval: 2.0
    mycroft
    recordingtimeoutwithsilence: 3.0
    mycroft
    enclosurename: picroft
    mycroft
    extra_skills:
    – https://github.com/smartgic/mycroft-finished-booting-skill.git

    tasks:

    • import_role:
      name: smartgic.prepi

    • import_role:
      name: smartgic.mycroft

“`

上面的配置内容需要保存在文件里(比如,install-custom.yml)。

现在关键步骤:运行你新创建的剧本。

“`
$ ansible-playbook -i inventory install-custom.yml -k

“`

-k 选项只有在不需要 SSH 密钥的时候才使用。在命令执行期间,树莓派可能会重启若干次。Ansible 剧本会自动处理这个问题,不必担心。

Ansible 配置完成后,你可以看到一条祝贺消息,提示你下一步需要做什么。

Congratulations message (Gaëtan Trellu, CC BY-SA 4.0)

Ansible 让定制 Mycroft 变得更容易

这些 Ansible 剧本是我开始使用 Mycroft AI 后学到的经验教训。它们帮助我在任何一个地方都能构建、重构、定制、拷贝我的安装,并保持一致,这让我很省心!

读完此文,你有何意见、问题或疑虑?欢迎在 Twitter上 @goldyfruit上和我交流,或者访问 Mycroft 频道 搜寻答案。


via: https://opensource.com/article/21/12/mycroft-raspberry-pi-ansible

作者:Gaëtan Trellu 选题:lujun9972 译者:jrglinux 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

主题测试文章,只做测试使用。发布者:eason,转转请注明出处:https://aicodev.cn/2021/12/21/%e4%bd%bf%e7%94%a8-ansible-%e5%9c%a8%e6%a0%91%e8%8e%93%e6%b4%be%e4%b8%8a%e9%83%a8%e7%bd%b2-mycroft-ai-%e8%af%ad%e9%9f%b3%e5%8a%a9%e6%89%8b/

Like (0)
eason的头像eason
Previous 2021年12月21日
Next 2021年12月22日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信