--- title: '智慧音箱 2023' disqus: hackmd --- # 智慧音箱 2023 ###### tags:`Project 2023` ![downloads](https://img.shields.io/github/downloads/atom/atom/total.svg) ![build](https://img.shields.io/appveyor/ci/:user/:repo.svg) ![chat](https://img.shields.io/discord/:serverId.svg) [TOC] ## Linktree :globe_with_meridians: [我們所查詢的網站linktree](https://linktr.ee/raspimaster) --- ## 智能音箱使用說明 > 此為我們設計之智能音箱助理,可詳細參閱以下使用說明體驗喔 !!! ### 步驟 1. 需先說喚醒詞 **【助理】** 將智能音箱助理喚醒 2. 接著可語音輸入您欲知道的資訊 (1) **【天氣】** (2) **【開燈/關燈】** (3) **【不要聽】** (4) **【時間】** (5) **【我要聽音樂】** ==如無使用以上功能將自動跳至 【Chat GPT】== 3. 如需結束智能音箱助理即可說 **【拜拜】** 用以結束程式 ### 功能介紹(點選顯示更多內容) :::spoiler **【助理】**:desktop_computer: > 此為本智能音箱助理的喚醒詞,說出此喚醒詞即可開機執行,它回答【是的,主人】,將可以開始和他對話溝通。 ::: :::spoiler **【天氣】**:partly_sunny: > 它將會回答你現在天氣的氣象和溫度。 > ::: :::spoiler **【時間】** :clock12: > 它將會回答你現在詳細時間。 > 依照 : xxxx年xx月xx日 xx時xx分xx秒 (為西元紀年且是24小時制)。 ::: :::spoiler **【開燈/關燈】**:bulb: > 此功能可控制 LED 燈的開啟和關閉,將直接反應於 LED 上。 ::: :::spoiler **【不要聽】**:mute: > 此為本智能音箱助理的休眠詞,說出此休眠詞將會使音箱助理進入休眠,對任何回答、指令將不會有反應,如需再次開啟時,請再叫一次它的名字【助理】即可繼續執行。 ::: :::spoiler **【拜拜】**:zzz: > 此為本智能音箱助理的關機詞,說出此關機詞此音箱助理將會關機且程式終止,如需再次開機,需 ++**手動**++ 執行程式並接著說出【助理】即可再次執行。 ::: --- ## 進度報告 ### 03/02 1. 按照[此網站](https://hackpi.fun/raspberry-pi/Linux/raspberry-pi-google-assistant/)去進行設定、安裝到為 Google Assistant 設置音頻 **目前遇到無音頻麥克風等設備** ### 03/10 1. 嘗試將樹梅派與Voice Kit連接,但是遇到沒有合適的Hdmi母轉mini Hdmi公轉接線之問題,因此上網訂購合適的的轉接頭 ### 03/15 1. 駁回了前面的嘗試,第一次使用樹莓派3+,網路上資訊不多,查了許多資料 [我們所查詢的網站linktree](https://linktr.ee/raspimaster) 2. 如果要下載東西的話,強烈建議測完網速看誰的行動數據跑最快然後連線下載,才不會浪費時間(台灣之星真的慢) 3. 如果沒有下載桌面的話,從頭到尾就是終端機的畫面,有下載桌面也可以使用內建的終端機(建議下載) 4. 第一次設定桌布時會出現(之後重灌都會 ![](https://i.imgur.com/jqgZoFf.jpg) 6. 本週遇到的困境是無法連線到wifi (時區雖然已調成臺灣但時間還是錯的 ![](https://i.imgur.com/db4Otw5.jpg) ### 03/23 1. 我們試圖利用網路上資源以及歷年學長姐們的建議去解決 - 「***樹梅派無法連線網路之問題***」 ### 04/20 1. 好像查到了ip位址,不確定,應該不是 ![](https://i.imgur.com/KKMp9nr.jpg) 2. 不管做什麼都失敗QQ ![](https://i.imgur.com/eGI8PVt.jpg) 3. 真的查了很多資料 ![](https://i.imgur.com/TuUzXE3.png) ### 05/04 1. 得知我們使用的樹莓派本身沒有網路,需要再另接網卡,而我們先前買的網卡與該板子不相容 2. 暫時改用去年學長使用的器材 3. 著手查詢Google AIY Voice Kit的相關資料 ### 05/11 1. 改用Google AIY Voice Kit,但是因為當下找不到適當的HDMI轉Micro HDMI的轉接頭,而嘗試不用連接螢幕的方式進行設定,但不行。 2. 該塊樹莓派似乎不能用預設密碼登入 ### 05/25 1. 今天我們重啟數據機重新設定基本網路設定,終於使得樹梅派連接到我們該空間所使用的實驗室網路。 ![](https://hackmd.io/_uploads/B1Y6i9nHn.jpg) 2. 利用 Putty 及 IP (192.168.0.103) 連接之後會需要輸入帳號密碼,此帳號密碼為我們自己設定的,成功就可以開始連線使用SSH。 ``` 帳號 : pi 密碼 : password ``` ### 06/08 1. speaker可以發出聲音,但非常大聲,還沒找到調音量的方法。alsamixer沒作用 之前無法發出聲音原因是因為voice hat沒插好,不能直直插下去,要稍微斜插 3. 麥克風尚在設定中 ### 06/28 1. 啟用google cloud platform api服務 * Google Assistant API * Cloud Speech-to-Text API * Cloud Text-to-Speech API 1. 但執行demo的測試檔案會報錯 `attributeerror: module 'google.cloud.speech' has no attribute 'types'` 1. 發現voice hat需要某個角度斜插按鈕才會亮,但麥克風好像沒有作用 ### 06/29 成功設定Google cloud platform api的服務,且執行測試的demo檔案不再報錯,但是依然無法錄音,跟他說話依然沒有反應。而google api的數據是有在跑的 ![](https://hackmd.io/_uploads/B10GRcq_h.png) ![](https://hackmd.io/_uploads/S1qxR5cdh.png) ### 07/05 成功測試完成語音指令基礎功能(包含LED的開燈、關燈、拜拜(**結束功能**)指令) * **開燈** ![](https://hackmd.io/_uploads/BJtxZ3fF3.png) * **關燈** ![](https://hackmd.io/_uploads/rkX7ZhMYh.png) * **結束功能** ![](https://hackmd.io/_uploads/HyCSZ2MKn.png) * **程式碼** ![](https://hackmd.io/_uploads/H1itW3GKh.png) ### 07/06 * 新增語音指令:查詢現在溫度。使用openweathermap api以及python的pyowm來獲取當下的溫度 * 嘗試連接chatgpt api,需要付費,要綁有錢的卡 * 因上面兩個api有python版本要求,更新版本(3.9.9)後執行程式找不到module pyowm跟aiy,因此需要重載。 執行`pip install pyowm` 到[github](https://github.com/google/aiyprojects-raspbian/blob/aiyprojects/HACKING.md#install-voice-bonnethat-packages)重新下載 ### 07/12~07/13 成功初步測試喚醒詞的功能 * 程式碼(新增while迴圈偵測喚醒詞) ![](https://hackmd.io/_uploads/SJ4QVHpFh.png) * 測試結果 ![](https://hackmd.io/_uploads/BJslpQ6F2.png) 執行apt相關指令出現錯誤。發現apt-key全數過期,新增新的[apt key](https://forums.raspberrypi.com/viewtopic.php?t=290058) ![](https://hackmd.io/_uploads/rJA3ZS6Fn.png) ### 07/19 * 樹莓派帳號被鎖,於是重灌系統 * 改善天氣預報功能:新增天氣狀況 * 改善喚醒詞的程式碼:如果說「電腦」,開始聆聽關鍵字指令。在說「不要聽」以前,它會一直抓關鍵字,不須每次下指令都說「電腦」。 * 遇到`ImportError: cannot import name 'load_dotenv' from 'dotenv' (/home/pi/.local/lib/python3.7/site-packages/dotenv/__init__.py)`,pip 已經安裝相關套件,但抓不到 ### 07/20 1. 解決了昨日的`ImportError: cannot import name 'load_dotenv' from 'dotenv' ` * **解決方法 : 我們重新看了一下原始程式碼,並沒有需要使用到此函式庫的指令,於是乎先試著將它註解掉看看是否能正常值行,於是便成功運行了。** 2. 無法辨識中文 * **解決方法 : pyttsx3 可能是造成此程式套件無法讀取中文緣故,所以我們將有使用到此函式的code,改為可使用的 「gTTS」,便成功讀取** 3. 一開始它只會說英文,於是乎便在說話的那一段後面更改為我們設定的語言 ▼ 〈 **tts** 那行便是主要更改且設定語言之程式 〉 ![](https://hackmd.io/_uploads/Hk_kDILc2.jpg =600x200) ### 7/26~7/27 1. 新增音樂播放功能,但只能從已下在音樂中隨機播放,分為三個類別 2. 新增以按鈕停止語音的功能 3. 新增時間播報功能 4. 語音功能時好壞,推測是網路問題 5. 調整好喚醒詞以及chatGPT的使用,只要不是喚醒詞中的詞語都會視為要問chatGPT問題 6. 調整助理的罐頭台詞,使其更接近人性(? ### 8/2~8/3 1. 會有語音中斷播出的問題,嘗試解決 2. 因產品定位不清晰,於是詢問老師建議,決定嘗試英語教學平台 ### 8/9~8/17 1. 新增功能 * 英文單字考試 * 英文單字練習 * 英文單字的解答 * 行程表(開發中) * 能用語音暫停跟播放音樂(開發中) 2. 因喇叭線脫落意外發現語音輸出會中斷是跟voice kit喇叭接觸不良有關,於是買了usb外接音效卡來外接喇叭,已解決語音中斷輸出問題 3. 外接麥克風靈敏度增加, ### 8/23~8/31 1. 成功用按鈕停止播放音樂 2. 開始撰寫畢業論文報告書 # 樹莓派安裝開機設定步驟 --- ## 在準備開始樹莓派之前須準備以下東西 1. 乾淨 SD 卡 (最好 64G ↑) 2. micro HDMI 轉 HDMI 線*1 (本次使用Raspberry 4) 3. 電源線 (Type C) 4. 螢幕*1 5. 滑鼠*1 6. 讀卡機*1 (為安裝樹梅派OS) --- ### 第一步 * 進入 [樹梅派官網](https://www.raspberrypi.com/software/) 下載對應 OS 至已準備好的**SD 卡**上 ### 第二步 * 將安裝好 **樹莓派 OS**的 SD 卡插入預備之樹莓派 * 將所有裝置、線路接上樹莓派 * 連接電源 ### 第三步 * 按照設定步驟設定 (上方Linktree有連結) ### 第四步 * 樹莓派連接 WIFI * 樹莓派連接 SSH (連接到WIFI就可以得到 樹莓派之IP Address) ``` 我們是利用 Putty 及 IP (192.168.0.103) 連接之後會需要輸入帳號密碼 此帳號密碼為我們自己設定的,如成功就可以開始連線使用SSH。 ``` User story --- ```gherkin= Feature: Guess the word # The first example has two steps Scenario: Maker starts a game When the Maker starts a game Then the Maker waits for a Breaker to join # The second example has three steps Scenario: Breaker joins a game Given the Maker has started a game with the word "silky" When the Breaker joins the Maker's game Then the Breaker must guess a word with 5 characters ``` > I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it. [name=Bill Gates] ```gherkin= Feature: Shopping Cart As a Shopper I want to put items in my shopping cart Because I want to manage items before I check out Scenario: User adds item to cart Given I'm a logged-in User When I go to the Item page And I click "Add item to cart" Then the quantity of items in my cart should go up And my subtotal should increment And the warehouse inventory should decrement ``` > Read more about Gherkin here: https://docs.cucumber.io/gherkin/reference/ User flows --- ```sequence Alice->Bob: Hello Bob, how are you? Note right of Bob: Bob thinks Bob-->Alice: I am good thanks! Note left of Alice: Alice responds Alice->Bob: Where have you been? ``` > Read more about sequence-diagrams here: http://bramp.github.io/js-sequence-diagrams/ Project Timeline --- ```mermaid gantt title A Gantt Diagram section Section A task :a1, 2014-01-01, 30d Another task :after a1 , 20d section Another Task in sec :2014-01-12 , 12d anther task : 24d ``` > Read more about mermaid here: http://mermaid-js.github.io/mermaid/ ## Appendix and FAQ :::info **Find this document incomplete?** Leave a comment! ::: ###### tags: `Templates` `Documentation`