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