sponsored links

使用 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 ansible_host=192.168.1.97 ansible_user=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
    prepi_pi_user: pi
    prepi_hostname: mylovelypi
    prepi_firmware_update: yes
    prepi_overclock: yes
    prepi_force_turbo: yes
    prepi_cpu_freq: 2000
    prepi_pulseaudio_daemon: yes

    # MYCROFT
    mycroft_branch: dev
    mycroft_user: "{{ prepi_pi_user }}"
    mycroft_skills_update_interval: 2.0
    mycroft_recording_timeout_with_silence: 3.0
    mycroft_enclosure_name: 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 配置完成後,你可以看到一條祝賀訊息,提示你下一步需要做什麼。

使用 Ansible 在樹莓派上部署 Mycroft AI 語音助手

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中國榮譽推出

分類: 體育
時間: 2021-12-20

相關文章

家中養什麼花?別錯過“這5種”,四季賞花,四季常青,淨化空氣

家中養什麼花?別錯過“這5種”,四季賞花,四季常青,淨化空氣
現在越來越多的朋友在家中養花,養花也成了一件很簡單的事情.現在經濟發達,想要買什麼東西都可以網上購買,在網上買一些花種子,店裡面還會給你贈送花盆.鏟子.肥料.生根粉.營養土等等,一送就是一全套,所以種 ...

生氣,朋友40元買了條狗準備吃肉,我花500從他手中買下狗狗

生氣,朋友40元買了條狗準備吃肉,我花500從他手中買下狗狗
今天朋友打電話過來說請吃火鍋,就在朋友家裡,自己做的.閒來無事我便早早的去了他家,進屋後,看到他院子裡拴著一條狗狗,一問才知道狗是花40塊錢買的,就打算等會兒做狗肉火鍋呢. 我當時就火了,原來是吃狗肉 ...

長壽海棠和長壽花是同一種嗎?長壽海棠和長壽花區別是什麼?

長壽海棠和長壽花是同一種嗎?長壽海棠和長壽花區別是什麼?
長壽海棠和長壽花這兩種花看起來非常的相似,而且因為兩種花名字中有"長壽"兩字,很多人就會覺得這兩種花是同一個品種.那麼長壽海棠和長壽花是同一種嗎?長壽海棠和長壽花區別是什麼?接下來 ...

周冠宇或成中國第一個F1車手,花2.2億“買”資格引爭議

周冠宇或成中國第一個F1車手,花2.2億“買”資格引爭議
(觀察者網訊)據美國邁阿密汽車運動媒體Motorsport17日稱,憑藉2021年二級方程式賽車(F2)賽季的出色表現,22歲小將周冠宇有望成為中國歷史上第一位F1正式車手,周冠宇的團隊已經向阿爾法· ...

全運國乒再爆冷門!劉詩雯不敵00後小將,成第三個落馬的奧運冠軍

全運國乒再爆冷門!劉詩雯不敵00後小將,成第三個落馬的奧運冠軍
全運會的乒乓球賽場繼續神仙打架!繼陳夢 許昕輸掉球后,全運會乒乓球女團D組廣東隊迎戰北京隊,劉詩雯在比賽中以9-11.11-6.8-11.12-10和9-11,總比分2:3落敗不敵北京00後小將郭雨涵 ...

家裡的花只長葉不開花?快速自制高磷“促花肥”,3天就能用

家裡的花只長葉不開花?快速自制高磷“促花肥”,3天就能用
家庭養花已經越來越成為流行趨勢了,但是很多花友卻養不好花,尤其是家裡面的植物葉子長得特別茂盛,卻總不見開花.這很有可能是由於缺磷導致的,本文就來詳細說一說,如何快速自制一款高磷的促花肥,三天就能用,用 ...

5種“漂亮花”,從來不生蟲,家裡乾淨衛生,花開不斷,真省心

5種“漂亮花”,從來不生蟲,家裡乾淨衛生,花開不斷,真省心
咱們在家裡養花,最喜歡讓家裡清清爽爽,空氣清新生機勃勃的,最討厭有蟲子黃葉.但是在家養一些花花草草,不可避免地出現一些小黑飛之類的小蟲,飛來飛去的讓人看著心煩,哪些花可以養的非常省心?不招蟲,不愛生病 ...

秋季這些花別亂剪,正確修剪才能枝繁葉茂,花滿枝頭

秋季這些花別亂剪,正確修剪才能枝繁葉茂,花滿枝頭
隨著氣溫的下降,喜歡養花的花友們又要忙碌起來了,像翻盆換土.修剪整形.促花壯苗.扦插繁殖等都要排上日程了,給下面這幾種花卉植物進行修剪時要注意別亂剪,否則影響開花時的數量和質量. 月季 秋季修剪月季花 ...

可以當花養的“甘藍菜”,像花一樣美,不僅能吃,還能養成盆景

可以當花養的“甘藍菜”,像花一樣美,不僅能吃,還能養成盆景
我們知道的花都是栽到花盆裡去觀賞的,這些花多數是以觀賞為主,是不能夠吃的,其實有一種甘藍它叫做羽衣甘藍,是十字花科的多年生的觀葉植物,跟我們吃的普通的甘藍一樣,都是可以食用的,只是我們吃的甘藍它能夠包 ...

糖尿病天天吃二甲雙胍,請花幾分鐘弄清楚這5個注意事項,很重要

糖尿病天天吃二甲雙胍,請花幾分鐘弄清楚這5個注意事項,很重要
現如今,我國糖尿病的發病率是逐年上升,相信大家對於糖尿病也都有了一定的瞭解.但是目前市場上針對糖尿病的藥物也是種類繁多,令人眼花繚亂,糖尿病病人之間所用藥物也不盡相同.但是總有部分人群自己道聽途說,根 ...

糖尿病天天吃二甲雙胍,請花幾分鐘時間搞清這5個問題,很重要

糖尿病天天吃二甲雙胍,請花幾分鐘時間搞清這5個問題,很重要
王大爺,今年65歲,有15年的糖尿病史,一直在吃降糖藥.幾天前,突然出現腹痛.噁心.嗜睡的症狀,以為是飲食和休息出了問題,改變飲食幾天,但症狀並未緩解. 這兩天,他突然感覺自己又出現頭痛.頭暈,而且全 ...

擅自把氨氯地平換成硝苯地平,吃出腦出血!醫生:這樣吃藥很危險

擅自把氨氯地平換成硝苯地平,吃出腦出血!醫生:這樣吃藥很危險
擅自換藥致昏迷,竟是腦出血! 老劉自從53歲被診斷出患有高血壓後,6年來一直服用醫生開的氨氯地平來控制病情.高血壓的藥需要一直吃下去,老劉逐漸覺得氨氯地平太貴了,於是老劉就去附近小藥店聽從店員的推薦購 ...

網紅耗時6年整容成“小楊冪”,下嫁高富帥後,孩子長大露出真顏

網紅耗時6年整容成“小楊冪”,下嫁高富帥後,孩子長大露出真顏
說起整容,很多人都是持著保守態度.不過不少年輕姑娘對此,卻習以為常.還有網紅耗時6年,整容成"小楊冪".低調下嫁高富帥後,孩子長大露出真顏值. 樂了冷知識溫馨提示:多閉眼.多運動. ...

平時的高價花,路邊扔成小山丘,趕緊撿回來,擇擇又是一盆好花

平時的高價花,路邊扔成小山丘,趕緊撿回來,擇擇又是一盆好花
自從愛上養花之後,最最高興的事情莫過於是能夠在路邊或者垃圾箱裡撿到高價花或者貴貨花了.所以說是被別人扔掉的,但是好在不用花錢呀,而且很多被扔掉的花草狀態都還挺不錯.趕緊撿回家,擇一擇,修剪一下,拿個花 ...

繡球花開花過後,做好4點,來年又會開成大花球

繡球花開花過後,做好4點,來年又會開成大花球
繡球花又叫八仙花,開花的時候,色彩很是鮮豔,一小朵一小朵的花組成一個大花球,給人很漂亮的感覺,也是很多花友都喜歡的花卉.我們養繡球花的時候,都希望繡球花能開出大花球,可是在繡球花開花過後,我們有需要如 ...

花500萬買上海老破小的年輕人:擠也要擠在梧桐區

花500萬買上海老破小的年輕人:擠也要擠在梧桐區
"住在這裡才有上海的感覺,小就小一點吧."檸檬說. 愚園路附近的老破小是她在上海租下的第一間房,兩層樓的老房子,木質樓梯踩上去會嘎吱作響,二樓一共有三間房,她租下了其中一個不足10 ...

沙縣小吃和東北豬耳朵,為什麼成了減肥餐頂流?

沙縣小吃和東北豬耳朵,為什麼成了減肥餐頂流?
原創 橘總 Vista氫商業 在經歷火鍋和小燒烤的連環飯局後,我用"嘴裡吃草,內心罵草"對沖罪惡感,被生菜葉子和枯燥的雞胸折磨得日漸暴躁. 然而,約飯的姐妹卻說,她早就在沙縣小吃裡 ...

適合家裡養的“健康花”,乾淨健康,還吉祥,格調高雅有品味

適合家裡養的“健康花”,乾淨健康,還吉祥,格調高雅有品味
現在很多人都喜歡在家裡養一些花,居家養花,大多數人都想養一些格調高雅,利於健康的花,今天咱們就來分享幾種這樣的"健康花",不但能吸收有害氣體,淨化空氣,而且寓意吉祥,家裡養一盆,格 ...

瓜花這道菜,怎麼都好吃

瓜花這道菜,怎麼都好吃
你吃瓜花嗎,此處主要指南瓜花,冬瓜花. 買回來一束一束連葉柄紮在一起的瓜花,沖洗一下,下到開水鍋裡,不放油鹽,汆一下撈起來,就可以吃了.基本沒有花味,只有淡淡的清甜味. 吃瓜花是有一點點咬瘦肉的口感, ...

花街(散文)

花街(散文)
花街 □申海芹 一個穿著黑色高跟鞋的婉約女子,沿街款款而行,那白色的衣裙和如瀑的長髮隨風而飄.我呆呆地站在原地,目送她與我擦肩而過直到遠去.我想此生再也不會在這青磚灰瓦的花街.在這秋風乍起的梧桐樹下遇 ...