(感謝作者 Neutrino-1開放授權,使我們得以摘譯這篇文章,特此致謝。原文網址:https://www.instructables.com/Mrs-Minutes-Voice-Assistant-Using-Raspberry-Pi-Zer/,若讀者想要下載相關檔案及程式碼,請至點及原文網址,並至相關步驟進行下載,謝謝。)
我是漫威超級英雄電影的超級粉絲,最近,漫威影業推出了新影集《洛基》(Loki),是截至目前為止我最喜愛的影集。所以,我想如果使影集中的一個角色栩栩如生,應該會很有趣!
所以,請大家與「分鐘小姐」(Miss Minutes)見個面。分鐘小姐是《洛基》中的AI角色,替影集中的一個虛構單位「時間變異管理局」(Time variance authority)工作。而分鐘小姐於影集中可執行許多任務:她說話;與其他角色互動;當然能獲取資料及訊息,幾乎等同於Friday與Jarvis在《鋼鐵人》(Iron Man)中所扮演的角色。
所以,這就是我所自造、以及本文所要介紹的作品。
但為完成這個作品,我實際上借用了許多其他作者的概念、方法或作品。所以,請您務必閱讀所有指示,以建構您自己的AI分鐘小姐。此外,請務必取得下方的製作材料,好使您能輕鬆進行本專案。
材料:
- 3D列印機
- 橙色長絲材料
- 領口麥克風
- 桌面音箱
- 樹梅派Zero W
- 音效卡
- 母直流插孔
- 5V直流適配器
- 公音頻插孔
- 膠槍
第一步:建立分鐘小姐的外殼
通常,我從電子產品開始自造,然後逐步構建外殼,但本專案中我將以稍微不同的方式處理。 首先,我將製作外殼,然後在其中安裝電子設備。
在開始建模前,我試著搜索是否有人已完成了類似專案,我發現了 Thingiverse網站上的用戶PhilippHee令人驚艷地「分鐘小姐時鐘專案」。 但不幸的是,在記錄專案頁面時,Thingiverse 已將該頁面關閉,一旦頁面備份,我將會更新連結。
不論如何,幾週前我已經下載了STL檔案,所以我不是完全從頭開始創建專案。 我使用fusion 360軟體,根據我的需要編輯並重新混合了他的專案。您可查看上方圖像,了解如何修改圖像,以滿足該專案的需要。
第二步:多色3D列印
一旦STL檔案準備好,就可進行列印。我將模型放入Cura軟體並將其切片。 您可使用單一顏色進行列印,然後於其上繪製眼睛與輪廓,或者如我一樣在列印時更換長絲材料。
您可查看此連結,了解如何在僅使用一個噴嘴列印時更改顏色。
上方圖片是參考用,您需暫停以更改長絲材料的顏色。
- 初始——橙色燈絲
- 第一次變化——黑絲
- 第二次變化——白絲
- 第三次變化——黑絲
為了列印這個模型,我使用PLA和一個直徑為 0.6 毫米、層高為 0.4 毫米的更大噴嘴,以便更快列印。這個模型完整列印約需9小時,在列印過程中我不得不更換長絲材料3次。但是,我仍沒有選擇適合的圖層高度以改變顏色,所以把它搞砸了。
無論如何,這次失敗經驗提供了一個解釋的機會,使您了解若並未使用多色3D列印技術,如何改變顏色。
第三步:3D 列印後處理
列印後,我花了幾分鐘小心去除支撐材料。
請注意:去除支撐材料時,不要做任何大動作,因為面的厚度非常小,很容易折斷。
對我來說,顏色不是那麼有吸引力,所以我修改了顏色。我使用黑色記號筆勾勒輪廓,用增白劑勾勒眼睛,弄了一段時間後,我完全改變了顏色!您可於上圖中,看見模型看起來比我列印的原始顏色要好得多。
第四步:樹梅派Zero W和Google助理
由於3D模型已準備就緒,我們可以開始自造分鐘小姐的「大腦」。
我將使用樹梅派Zero W作為硬體;至於軟體,我將使用Google助理SDK。這在2年前是不可能的,因為Google助理SDK不支援樹莓派Zero。但去年Google發佈了一項新的Google助理服務,該服務支援各種硬體,包括了樹梅派Zero W。
第五步:音效硬體
在處理語音助理前,讓我們先處理一下硬體問題。您可看見樹梅派Zero W,沒有任何類型的音頻輸入或音頻輸出。
為解決這個問題,我使用了一個帶有微型 USB 至全尺寸 USB 適配器的USB音效卡,我們將透過USB獲取音頻輸入和輸出,並將其發送至相應的音頻外圍設備。
對於音頻輸入,讓我們使用領口麥克風,因為這將非常適用於分鐘小姐的鼻子。但麥克風附帶的 3.5毫米立體聲插孔不適用於音效卡,所以,我以音頻插孔取代它。至於音頻輸出,我們可使用任何普通揚聲器,但在這樣的情況下,我們至終也會構建一個音頻放大器電路,因此我將使用由USB供電的桌面揚聲器。
第六步:針對樹梅派Zero W,揚聲器和麥克風的設置
這似乎有點棘手,但其實相當容易,甚至Google助理服務的文檔網頁,也有關於如何設置揚聲器和麥克風的硬體指南。
首先,在SD卡上安裝樹莓派作業系統。如果您不確定如何安裝?請觀看我的影片,了解如何在沒有顯示器和鍵盤的情況下設置樹莓派。在安裝作業系統後,請使用 putty 透過 SSH 連接至樹梅派。
現在,請使用下方的命令,檢查樹莓派是否檢測到音效卡:
lsusb
透過命令,檢查麥克風與揚聲器的連結:
arecord -l
aplay -l
請您記下音效卡的ID和設備的ID。取得 ID後,請使用以下命令,在 /home/pi 中創建一個名為 .arecordrc 的新檔案:
sudo nano /home/pi/.arecordrc
請將以下的程式碼,貼入nano編輯器中:
type asym
capture.pcm “mic”
playback.pcm “speaker”
}
pcm.mic {
type plug
slave {
pcm “plughw:[card ID]<card number=””>,[device ID]<device number=””>”
}
}
pcm.speaker {
type plug
slave {
pcm “hw:[card ID],[device ID]”<br><card number=””><device number=””> }
}</device></card></device></card>
然後,請將卡號和設備號,替換為您在上一個命令中找到的 ID。接著按下ctrl+X退出,並按Y保存文件。最後,使用命令調整音量:
alsamixer
第七步:測試音效和麥克風
請使用以下命令,測試麥克風:
speaker-test -t wav
您可以使用以下命令,將聲音錄製起來:
arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw
以下這個命令,可將您錄製的聲音播放:
aplay --format=S16_LE --rate=16000 out.raw
第八步:設定Google助理
要使用Google助理 SDK,您需前往此連結,創建一個新專案並設置任意名稱。在下一頁,用滑鼠向下移動至網頁底部,選擇設備註冊及設置設備。完成後,下載我們稍後將使用的憑證(credentials)。然後,前往此連結,並啟用Google助理API。最後,設置 oauth 同意螢幕。您可按照這份Google文件了解更多詳細訊息。
第九步:安裝Google助理SDK
在上一步驟的Google文件中,python 軟體包被安裝於虛擬環境中,但稍後在啟動並運作命令時可能會出現問題。所以,我使用以下命令:
sudo apt-get update
安裝python3:
sudo apt-get install python3-dev
安裝軟體包的系統依賴項:
sudo apt-get install portaudio19-dev libffi-dev libssl-dev
安裝Google助理SDK:
python3 -m pip install --upgrade google-assistant-sdk[samples]
取得授權碼:
<pre>google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \
--save --headless --client-secrets /path/to/<a rel="nofollow"></a>client_secret_client-id<a rel="nofollow"></a>.json
如果一切都運作順利,您將會看見類似於以下的回應:
credentials saved: /path/to/.config/google-oauthlib-tool/credentials.json
第十步:修改pushtotalk.py
首先,複製這個Github上的倉儲:https://github.com/googlesamples/assistant-sdk-pyt…
然後,開啟檔案pushtotalk.py(路徑:assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc/)。
刪除第456至465行的程式碼,並將它們替換為:
assistant-assist()
第十一步:在啟動時運作Google助理
運作以下命令:
sudo nano /etc/rc.local
請使用您的檔案目標輸入以下命令,然後在退出「 0 」之前接著「&」:
sudo -H -u pi python3 /[path to pushtotalk]/pushtotalk.py &
為在運作Google助理前,確保您有連接網際網路,請輸入以下命令:
sudo raspi-config
選擇「啟動選項」(boot option),接著選擇「在啟動時等待網路」(wait for the Network at boot),這將確保在啟動期間,有穩定的網際網路連接後,才啟動Google助理。
第十二步:測試Google助理
當重新啟動時,樹莓派在連接至wifi 網路前不會啟動。 一旦連接至網絡,樹莓派就會啟動並開始運作 pushtotalk.py 腳本。
由於我們修改了pushtotalk.py,Google助理會一直處於聽的狀態,我們並不需要觸發詞,這是我們將錯誤轉化為功能之處。 由於麥克風是全向性的,並且除了單向性外,語音是低沉的(以及錄音音量低),因此助理不會因背景聲音和語音而被觸發。
現在,您可在沒有任何觸發詞的情況下,與您的Google助理互動,也可按下按鈕並面對助理開始說話。
第十三步:將分鐘小姐的所有部件組裝起來
是時候把所有部件放進機箱。讓我們從電源的放置展開,接下是樹莓派Zero W和音效卡,再來便可安裝麥克風。至於揚聲器,我將打開桌面揚聲器並將其內部的揚聲器取出,如同我們對針對麥克風所做的一樣,我也會更改此揚聲器的音頻插孔。最後,請將所有部件焊接在一起,並運用一些熱熔膠粘住。最後,添加一些熱插件並蓋住分鐘小姐的背面,便大功告成了!
小結
若您喜歡這篇文章,請務必在instructables上追蹤我,以閱讀更多有趣的專案;還有別忘記訂閱我的Youtube頻道喔!