語音助手已迅速普及。許多家庭使用Alexa或Google Home來控制從照明到媒體甚至計時的所有內容。
這些設備運行的技術(至少部分地)適用于所有人。使用Google的Assistant SDK,您可以在自己的設備上使用該服務。本教程介紹如何在Raspberry Pi上設置Google Assistant,以及如何通過GPIO引腳語音激活LED。
Raspberry Pi Home Assistant所需的硬件
您將需要:
在SD卡上重新安裝Raspbian的Raspberry Pi。
外部揚聲器。
Pi LED教程中的電路(可選)
登錄到您的Google帳戶的瀏覽器。
注意:本教程的設備可能有所不同。我純粹將備用USB網絡攝像頭用于其麥克風。任何兼容的網絡攝像頭或麥克風都可以正常工作,并且有大量的Pi兼容設備可以提供幫助。
此外,我正在使用3.5mm輸出的音頻。 HDMI和其他輸出源也可以使用,盡管它需要修改以下聲音設置。
插入USB網絡攝像頭和揚聲器,并在使用時設置LED電路。
設置聲音
可以直接在Pi上或通過SSH連接到Pi來遵循本教程。
兩種方式都可以在終端上進行,以檢查聲音設置。使用命令 arecord -l 《/strong》和 aplay -l 《/strong》列出可用設備。
上圖顯示USB網絡攝像頭為卡1 和設備0 。記下麥克風和揚聲器輸出的卡號和設備號。
現在,確保您位于/home/pi 目錄中,創建一個新文件并打開它在nano中:
sudo nano .asoundrc
此目錄的內容將根據所使用的卡號和設備號而有所不同。如果愿意,可以在此處選擇偏向于HDMI輸出而不是3.5mm。
輸入上述代碼的版本后,按 Ctrl + X 保存并退出。
通過錄制和播放短片來測試設置:
可選步驟:如果要更改麥克風的輸入音量,請打開 alsamixer ,然后按 F6 在設備之間循環
就是這樣!聲音已設置。
創建Google Project
打開Pi的瀏覽器,或者,如果您通過SSH連接,請在本地打開瀏覽器。導航到Google Action Console,然后點擊新建項目。
這可能需要一些時間。完成后,將窗口保持活動狀態并打開一個新標簽-我們將在稍后介紹。
啟用Google Assistant API
您需要進行一些在線調整將需要繼續。導航到Google Assistant API網站,然后單擊啟用。
該項目還需要活動權限。轉到“活動控制”面板,并確保打開以下活動:
網絡和應用活動(包括“ Chrome歷史記錄”復選框)
設備信息
語音和音頻活動
現在您可以繼續注冊設備。
注冊Raspberry Pi
返回操作控制臺,然后從左側面板中選擇設備注冊。在產品下,為您的設備創建一個易于記憶的名稱。制造商名稱并不重要(但必須在此處),然后為設備類型選擇自動。
點擊注冊模型,然后在下一個屏幕上單擊下載OAuth 2.0憑據。這會將JSON文件下載到您的計算機。如果您不熟悉JSON文件,請放心,但是學習如何使用JSON值得將來使用!
Google官方指南建議將文件移至/home/pi ,因此請打開文件管理器并立即執行此操作。
SSH用戶的其他步驟:
如果您使用的是SSH,已將JSON文件下載到本地計算機而不是Pi。要傳輸它,請打開沒有SSH連接的單獨的終端窗口。在此窗口中,使用以下命令復制客戶端秘密JSON文件:
scp ~/Downloads/client_secret_client-id.json pi@raspberry-pi-ip-address:/home/pi/
用您的Pi的IP地址替換“ raspberry-pi-ip-address”,然后不要不要忘記小路前面的冒號。如果您將JSON文件下載到另一個位置,請修改您的本地路徑以反映此情況。在出現提示時輸入密碼,該文件將復制到Pi的主目錄。
切換回SSH終端,并導航至/home/pi 。輸入 ls -l 《/strong》以列出目錄中的文件。您應該看到已傳輸的客戶端機密JSON文件。
安裝SDK
Google建議在Python虛擬環境中工作。創建一個名為 env 的新虛擬環境。
如果您以前從未做過,本教程將幫助您學習如何使用Python虛擬環境。
安裝最新版本的Pip,Setuptools和Wheel并激活您的虛擬環境:
env/bin/python -m pip install --upgrade pip setuptools wheel
source env/bin/activate
Google助手具有一些依賴項,您現在應該將其安裝到虛擬環境中。
sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev
最后,安裝Google Assistant SDK,示例和OAuth工具。
python -m pip install --upgrade google-assistant-library
python -m pip install --upgrade google-assistant-sdk[samples]
python -m pip install --upgrade google-auth-oauthlib[tool]
啟動并運行。如果任何安裝失敗,請徹底檢查拼寫和間距。
對Raspberry Pi進行身份驗證
使用 google-auth-oauthlib [tool]
google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \
--scope https://www.googleapis.com/auth/gcm \
--save --headless --client-secrets /home/pi/YOUR_CLIENT_SECRET_ID.json
您需要用下載的文件替換YOUR_CLIENT_SECRET_ID,因此值得首先復制文件名。此客戶端ID必須正確。不要更改文件名!
您應該會收到一條帶有鏈接的消息,要求您粘貼授權碼。
單擊鏈接將打開瀏覽器。系統會提示您啟用Google帳戶中的設備。復制隨后的授權代碼,并將其粘貼回您的終端窗口。
您應該收到一條確認信息,其中顯示 Credentials Saved:/home/pi…,這意味著Pi已被已成功為您的Google帳戶授權。
對其進行測試
現在一切就緒,現在該對您的Pi Google Assistant進行測試了。使用以下命令運行助手:
googlesamples-assistant-hotword --project-id my-dev-project --device-model-id my-model
您將需要用項目ID(位于“設置”齒輪下)替換 my-dev-project 操作控制臺)。您的 device-model-id 列在操作控制臺的“設備注冊”部分下。
嘗試一下!說“ OK Google”并提出問題。聽到響應后,您可以在終端中看到程序輸出:
就是這樣! Google助手現已在您的Raspberry Pi上運行。請注意,如果輸出音量有點低,可以通過說出“嘿,Google,將您的音量提高到80%”來更改它。
獎金:語音激活的GPIO
可以使用Arduino和Siri來控制燈光,但是有一種更簡單的方法。如果您設置了LED,則可以使用Google Assistant來控制聲音。
設置Google Assistant以使用GPIO引腳相對簡單,但是需要一些額外的步驟。轉到Google Action Console,然后在“設備注冊”下找到您的設備。單擊它,然后打開特征菜單:
打開 OnOff 特征,然后單擊保存。
現在,確保您處于 env 虛擬環境中,使用git將一個版本的SDK克隆到您的Pi:
git clone https://github.com/googlesamples/assistant-sdk-python
由于這是一個虛擬環境,因此您需要先安裝RPi.GPIO。
pip install rpi.gpio
現在,導航至包含以下內容的文件夾 hotword.py 腳本。
cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library
修改腳本
您需要在腳本中添加幾行hotword.py腳本,因此在nano編輯器中將其打開:
nano hotword.py
在import語句下,為RPi.GPIO添加您自己的腳本。
import RPi.GPIO as GPIO
查找 process_event 方法。在第66行,刪除或注釋掉print語句,并添加if語句來控制LED。
#print(‘Do command’, command, ‘with params’, str(params))
if command == “action.devices.commands.OnOff”:
if params[‘on’]:
print(‘---------------’)
print(‘Led turned on’)
print(‘---------------’)
GPIO.output(18, GPIO.HIGH)
else:
print(‘---------------’)
print(‘Led turned off’)
print(‘---------------’)
GPIO.output(18, GPIO.LOW)
此邏輯控制LED,但到目前為止,它不是。 t配置為輸出。在調用process_event方法之前,在 main()函數中進行設置。
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT, initial=GPIO.LOW)
現在,GPIO引腳設置為輸出并在其中初始化低狀態。保存并退出。您可以通過傳遞您的型號ID號(在操作控制臺中找到)作為參數來運行修改后的腳本。
python hotword.py --device-model-id YOUR-MODEL-ID-HERE
終端輸出與之前相同,并且助手將作為標準工作。但是,現在,當您說“ OK Google,打開”時,您將看到一個新的輸出:
注意:上面的圖片已裁剪,僅顯示助手正在聽取請求,并且打印說明已添加到腳本中。
您還應該看到LED亮起!
您自己的DIY Raspberry Pi Google Home Assistant
責任編輯:wv
-
樹莓派
+關注
關注
117文章
1710瀏覽量
105731 -
Google Home
+關注
關注
1文章
13瀏覽量
6049
發布評論請先 登錄
相關推薦
評論