当前位置: 首页 > 科技观察

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

时间:2023-03-22 15:29:40 科技观察

使用本文中的这些Ansibleplaybook可以帮助您获得更好的MycroftAI体验。MycroftAI是一个虚拟助手应用程序,可以响应语音请求并完成相应的任务,例如在互联网上搜索您需要的某些信息,或者下载您喜欢的博客等。这是一款优秀的开源软件,与同类软件不同作为收集个人数据的公司,MycroftAI专注于隐私和平台灵活性。MycroftAI使用python开发,可以安装在不同的硬件平台上。众所周知的RaspberryPi是运行语音助手的非常流行的硬件解决方案(但不是唯一的解决方案)。方便的是,Mycroft为RaspberryPi提供了Picroft图像。虽然Picroft目前有一些限制,比如不支持64位系统,但这并不妨碍它是一个优秀的解决方案。RaspberryPi4,我选择的目标平台RaspberryPi在Mycroft社区中非常受欢迎,因为它具有成本效益,在教育行业具有巨大优势,并且由于Mycroft提供的便捷功能以及RaspberryPi本身易于访问输入/输出(GPIO)引脚等,为树莓派提供有趣的扩展可能性(例如,提供唤醒字LEDGPIO功能)。RaspberryPi4B有足够的CPU能力和内存来流畅运行Mycroft。我用的是树莓派4B,内存8G,运行RaspberryPiOSBullseye64位系统,系统镜像文件可以到RaspberryPi.org网站下载。自动化这个东西构建自己的MycroftAI系统,你必须要注意一些细节。根据我的初步经验(一年多),下面列出了一些重要的技术细节:音频输出(扬声器配置)音频输入(麦克风配置)麦克风质量(以实际购买的硬件为准)唤醒词响应(例如你好“嘿,Mycroft”)响应延迟(比如问“天气怎么样”)这些都不是MycroftAI的问题(LCTT译注:软件平台不处理延迟问题吗?),它们只能是你对硬件和配置的选择吧必须怀着顾虑进行操作。RaspberryPi本身可以运行MycroftAI,但是有一些配置需要格外注意:CPUschedulerSDcardperformancePulseAudioconfigurationNetworkdelay我做了很多研究和实践来解决上面列出的令人头疼的问题。最后我实现了我的“终极”目标——最流畅的体验!Ansible在雪地里帮助我。想出了最流畅的体验配置,但是如何保证在任何一台树莓派4板子上都能漏掉每一个设置细节,进而达到重新部署这种流畅体验的目的呢?Ansible可以帮助您实现这一目标。Ansible在设计上是幂等的,这意味着它只在需要时响应更改请求。如果一切配置正确,Ansible不会改变任何东西。这就是幂等设计的美妙之处。为此,我使用了两个Ansible场景角色工具:一个用于配置和调整RaspberryPi,另一个用于安装和配置MycroftAIAnsibleprepi角色Ansibleprepi角色应用一些配置以使RaspberryPi4B发挥更好的性能和安装Mycroft的先决条件。将树莓派操作系统更新到最新版本添加Debianbackports存储库使用下一个分支更新固件,支持5.15版内核和边缘固件使用测试版更新EEPROM,支持边缘功能设置initial_turbo以加快启动过程2GHz在RAMDisck上安装/tmp优化/分区安装选项以提高SD卡读/写性能管理I2C、SPI、UART接口将CPU控制器设置为避免空间内核函数之间的上下文切换以提高性能的模式安装和配置PulseAduio(非-system-wide)NewfirmwareorEEPROMReboottheRaspberryPiafterinstallationAnsiblemycroftroleAnsiblemycroftrole是基于脚本dev_setup.sh从Mycroft核心团队提供的Github仓库获取并安装配置MycroftAI.需要准备Python3环境系统集成环境额外安装技巧安装Boto3、py_mplayer、pyopenssl库支持IPC的RAMDisck支持文件配置PulseAudio优化SecureMycroftmessagebuswebsocket我使用Ansible脚本来协调以上两个角色的使用。个人配置要求部分个人配置要求如下:可以上网的树莓派4B板(或更新的板)树莓派OS64位Ansible2.9(或更新版本)可以正常工作的SSH推荐使用Etcher来烧写树莓派OS映像到SD卡,您也可以使用您选择的映像刻录工具。我对RaspberryPi进行了超频以提高性能,但这可能会对您的硬件造成潜在危害。请在使用我的Ansible剧本配置之前仔细阅读。您对您的每个配置选择负责。您将决定使用哪个固件,哪个EEPROM。如果超频的话,需要记得配备相应的散热系统。执行第一步Ansibleplaybook,使用命令从Github获取Ansibleplaybook:$gitclonehttps://github.com/smartgic/ansible-playbooks-mycroft.git在源码中,requirements.yml文件提供playbook列表的依赖角色,这些依赖必须从AnsibleGalaxy中检索。$cdansible-playbooks-mycroft$ansible-galaxyinstall-rrequirements.yml启动galaxy角色安装过程-下载角色“mycroft”,由smartgic所有-从https://github.com/smartgic/ansible-role下载角色-mycroft/archive/main.tar.gz-将smartgic.mycroft提取到/home/goldyfruit/.ansible/roles/smartgic.mycroft-smartgic.mycroft(main)已成功安装-下载smartgic拥有的角色“prepi”-下载来自https://github.com/smartgic/ansible-role-prepi/archive/main.tar.gz的角色-将smartgic.prepi提取到/home/goldyfruit/.ansible/roles/smartgic.prepi-smartgic.prepi(main)安装成功第二步编辑仓库中的Ansible列表,设置要管理的主机。[rpi]rpi4b01ansible_host=192.168.1.97ansible_user=pi[rpi]代表组,不用改。该组的主机rpi4b01的IP地址为192.168.1.97,并创建pi作为Linux(RaspberryPiOS)上的默认用户。现在是棘手的部分:您希望如何配置每个选项?这取决于你,这里是我的首选配置供你参考:#file:install-custom.yml-hosts:rpigather_facts:yesbecome:yespre_tasks:-name:InstallPython3.xAnsiblerequirementraw:apt-getinstall-ypython3changed_when:notags:-alwaysvars:#PREPIprepi_pi_user:piprepi_hostname:mylovelypiprepi_firmware_update:yesprepi_overclock:yesprepi_force_turbo:yesprepi_cpu_freq:2000prepi_pulseaudio_daemon:yes#MYCROFTmycroft_branch:devmycroft_user:"{{prepi_pi_user}}"mycroft_skills_update_interval:2.0mycroft_recording_timeout_with_silence:3.0mycroft_enclosure_name:picroftmycroft_extra_skills:-https://github.com/smartgic/mycroft-finished-booting-skill.git任务:-import_role:名称:smartgic.prepi-import_role:名称:smartgic。mycroft上面的配置内容需要保存在一个文件中(比如install-custom.yml)。现在是关键步骤:运行您新创建的剧本。$ansible-playbook-iinventoryinstall-custom.yml仅当不需要SSH密钥时才应使用-k-k选项。命令执行过程中,树莓派可能会重启数次。Ansibleplaybooks会自动处理这个,所以不用担心。配置Ansible后,您会看到一条祝贺消息,告诉您下一步该做什么。祝贺消息(Ga?tanTrellu,CCBY-SA4.0)Ansible使自定义Mycroft变得更容易这些Ansible剧本是我自开始使用MycroftAI以来学到的经验教训。他们帮助我构建、重构、定制、复制我的安装到各处,并保持一致,这让我高枕无忧!阅读本文后,您有任何意见、问题或疑虑吗?欢迎在Twitter@goldyfruit上与我聊天或访问Mycroft频道寻求答案。

最新推荐
猜你喜欢