文章目錄
將你的樹莓派變身 Google Home
目前的智能化已經對人們的生活影響越來越深刻,從智能音箱鼻祖 Amazon Echo 發佈之後,智能數字助理就進入了人們的生活當中,也成爲人們生活的一部分,特別是其與智能家居配合之後,以前科幻電影中的場景,目前已經漸漸成爲現實。
當前國內的廠家也有發佈類似的產品,比如小米的小愛同學,阿里的天貓精靈等智能助理產品,智能家居加上智能助理中樞,將是物聯網真正進入人們平常生活的最深刻的體現。
而且 Google 和 Amazon 都發布了自己語音助手的 SDK ,今天就來看一下如何接入
Google Assistant SDK
,來體驗一下樹莓派版本的 Google Home
。
準備工作
材料準備
硬件:
- Raspberry Pi
- USB 麥克風或者免驅聲卡搭配 3.5mm 接口麥克風
- 3.5mm 接口的揚聲器
軟件:
- Google 賬戶
- 科學上網環境
基本步驟
- 硬件準備和網絡連接
- 配置測試聲音設備
- 配置開發者項目及相關設置
- 安裝 SDK 和示例項目
- 註冊你的硬件設備
- 運行示例代碼
- 其他
步驟一:硬件準備和網絡連接
-
已經安裝好系統並且搭建好科學上網環境的樹莓派
-
連接你的麥克風和揚聲器到樹莓派,麥克風你可以購買一個免驅聲卡,連接你的 3.5 mm 麥克風,比如下面這樣的,幾塊錢就能買到。樹莓派有一個 3.5mm 的耳機插口,你的揚聲器可以接入此接口。
-
將你的樹莓派連接網絡
-
ssh 遠程連接你的樹莓派
步驟二:配置測試聲音設備
第一步:確認你的錄音和播放設備正常工作
- 在命令行輸入以下命令,按下
Ctrl+C
來結束。
speaker-test -t wav
如果你沒有聽到任何聲音,請檢查你的揚聲器和樹莓派連接是否正常,或者揚聲器是不是聲音調的太小了。同時你可以通過輸入以下命令
sudo raspi-config
選擇
然後選擇
將你的聲音輸出從耳機插口輸出
- 錄製一個簡短的聲音片段,如果你這時出現了問題,請轉到下面的第二步。
arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw
- 播放剛剛錄製的音頻來檢查錄製效果。
aplay --format=S16_LE --rate=16000 out.raw
調整你的錄製和播放設備,通過下面這個命令:
alsamixer
如果你的錄製和播放設備工作正常,那麼這一步的聲音設備的配置就完成了,如果你出現了錯誤,那麼可以繼續下面的步驟嘗試修復問題。
第二步:找到你的錄製和播放設備。
通過下面這個命令來顯示你的聲音捕捉設備列表,找到你的麥克風,並記錄下設備卡號和設備號。
arecord -l
如上圖所示的 card num
是1,device num
爲 0。
通過下面這個命令來顯示你的聲音播放設備列表,記錄下你的 3.5 mm 接口的設備卡號和設備號,3.5mm 設備的特徵是帶有 Analog
或者 bcm2835 ALSA
(不是 bcm2835 IEC958/HDMI) 字段。
aplay -l
第三步
在你的 /home/pi 目錄下創建一個名爲 .asoundrc 文件,可以直接輸入
cd ~
sudo nano .asoundrc
粘貼以下內容到你的終端編輯器內:
pcm.!default {
type asym
capture.pcm "mic"
playback.pcm "speaker"
}
pcm.mic {
type plug
slave {
pcm "hw:<card number>,<device number>"
}
}
pcm.speaker {
type plug
slave {
pcm "hw:<card number>,<device number>"
}
}
其中的兩處 <card number>,<device number>
,分別是剛剛讓你記錄的麥克風和揚聲器的設備卡號和設備號,比如剛剛我展示的圖片,我的是內容是
如果你有一個 HDMI 的聲音輸出並且連接了耳機接口,那麼請按照剛剛上面 sudo raspi-config
的設置將你的聲音輸出強制從耳機接口輸出。
然後重複步驟一看看是不是依然存在問題,如果依然存在問題,可以嘗試更換你的聲音錄製和播放設備。
步驟三:配置開發者項目及相關設置
Google 的開發者項目允許你的設備能夠訪問 Google Assistant API
,爲了能夠訪問這個 API,需要進行以下的配置工作。
首先,進入 Google 的 Cloud Platform Console,在你的項目頁面,創建一個項目或者選一個已經存在的項目。
然後允許你剛剛所選的項目使用 Google Assistant API
,點擊以下鏈接開通 Google Assistant API
點擊啓用即可。
然後通過下面的步驟創建一個客戶端認證 ID 憑證:
-
輸入產品名稱及其他可選信息,點擊保存即可。
-
應用類型選擇其他,並輸入一個名稱。
-
點擊創建後彈出一個提醒的窗口,這裏可以直接點擊確定關閉它。
-
此時出現這樣的界面:
點在下載圖標,下載這個 json 文件。名字類似與client_secret_client-id.json
最後上面下載的文件必須放到 pi 用戶的 Downloads 目錄下面以授權使 Google Assistant SDK
示例項目正常使用,不要重命名這個文件。
可以通過以下方法來將剛剛下載的文件傳到 Downloads 目錄。
- 在你的電腦新打開一個終端,不要 ssh 連接 pi,輸入以下命令:
scp ~/Downloads/client_secret_具體你的文件名.json pi@raspberry-pi-ip-address:/home/pi/
然後輸入密碼。
2. 如果你是 Windows,你可以使用 FileZilla 等 ftp 工具,如下:
打開 Downloads 目錄,將你的文件拖入即可。
爲了使用 Google Assistant 你必須要共享一些活動數據給 Google,授予 Google Assistant
一定的權限,否則你運行項目的時候,她會一直跟你說,她需要權限才能跟你說話。
打開活動控制頁面
步驟四:安裝 SDK 和示例項目
Google 推薦在 Python 的虛擬環境運行該項目,避免對系統環境造成影響,具體運行以下命令:
sudo apt-get update
sudo apt-get install python3-dev python3-venv
python3 -m venv env
env/bin/python -m pip install --upgrade pip setuptools
source env/bin/activate
上面的最後一條命令是激活虛擬環境,然後安裝依賴軟件包:
sudo apt-get install portaudio19-dev libffi-dev libssl-dev
使用 pip 來安裝最新版本的依賴包:
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]
然後在命令行輸入一下命令
google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \
--save --headless --client-secrets /home/pi/Downloads/client_secret_你的文件名.json
然後你應該會在命令行中看到一個網址
Please visit this URL to authorize this application: https://...
將這個網址完整的 copy 到瀏覽器中,登陸你的 Google 賬號,然後點擊授權允許,你會在瀏覽器中看到一行代碼,類似4/XXXX
,將這行代碼 copy 到命令行Enter the authorization code:
的後面
如果授權成功,那麼你會在類似下面的響應。
credentials saved: /path/to/.config/google-oauthlib-tool/credentials.json
步驟五:註冊你的硬件設備
使用 Google 的註冊工具,首先設備名最好是數字和字母的組合,首字段必須是數字或字母。
使用下面的命令格式註冊:
googlesamples-assistant-devicetool register-model --manufacturer 生產者 \
--product-name 產品名 [--description my-product-description] \
--type device-type [--trait 支持的特性] --model 我的設備
上面的我的設備這個必須是一個唯一的名字,所以你可以使用你的項目 ID 作爲前綴,下面的是 Google 的一個示例命令:
googlesamples-assistant-devicetool register-model --manufacturer "Assistant SDK developer" \
--product-name "Assistant SDK light" --type LIGHT --model my-model
然後使用以下命令向服務器查詢你剛剛創建的設備:
googlesamples-assistant-devicetool get --model my-model
比如下面
步驟六:運行示例代碼
現在你就可以準備運行示例項目來和你的樹莓派對話了,首先運行下面的命令:
googlesamples-assistant-hotword --project_id 你的項目 iD --device_model_id 上一步創建的設備
然後對着你的麥克風可以說話詢問了,注意要是英文。激活的關鍵詞是 Ok Google
或 Hey Google
,你可以在終端中看到對話開始和結束的提示。
可以試着問問她你所在的城市的天氣,讓她唱首歌,讓她叫你起牀等等。
步驟七: 其他
你還可以增加一個 LED 燈來爲你的對話添加一些特性,通過 LED 燈提示對話開始等,也可以擴展這個項目及你的樹莓派。具體的可以參考擴展 Google Assistant。
以上就是變身 Google Home 的基本過程,下一步,我將我的樹莓派變身成爲智能家居中樞,讓 Siri 爲我開關燈!