自制超迷你語音助手--Pico

  • 自制超迷你語音助手--Pico
  • 自制超迷你語音助手--Pico
  • 自制超迷你語音助手--Pico
  • 自制超迷你語音助手--Pico
  • 自制超迷你語音助手--Pico

广州体彩北京单场开奖 www.mkcubp.com.cn 自制超迷你語音助手--Pico

自制超迷你語音助手--Pico

自制超迷你語音助手--Pico

自制超迷你語音助手--Pico

自制超迷你語音助手--Pico


項目簡介:

一個解決個人使用智能音箱痛點的迷你語音助手小機器人。

由于個人希望有一個可以從硬件開始定制的語音助手,且需要在語音助手上接入并控制我自己的設備(自有協議),可擴展性還要好,方便后續升級(不論是硬件還是軟件),同時還希望設備能很迷你...

所以就耗時5個月設計了Pico。

Pico主要有以下特點:

  • 自主設計的電路硬件,可以方便地增減需要的硬件???,比如添加多麥???、手勢識別???,刪去不必要的藍牙音箱功能等等
  • 從最底層實現語音功能,所有代碼都可以開放成SDK
  • 使用最常用的Mqtt協議實現自定義硬件接入,將語音識別結果用來控制任何東西(后期加入語義理解的話效果更佳)
  • 帶一個OLED顯示屏
  • 極致小巧,僅僅比口香糖大一點

結構設計說明:

Pico的結構設計草圖↑

對于Pico的ID設計之前想過好幾種方案:

  1. 使用鋁合金CNC加工,做成類似魔方的正方體外殼樣式
  2. 使用DLP樹脂3D打印,設計成類似天貓精靈的迷你版圓柱體外殼,以光固化打印的精度也能達到不錯的質感
  3. 使用透明亞克力切割成形,設計為三明治夾層式的堆疊設計,這也是我最終采用的方案

最終選擇亞克力作為外殼結構有幾個原因:

  • 其一是該方案的“視覺極客感”最強,由于直接使用透明蓋板將PCB電路展現出來,個人覺得顏值方面化繁為簡,符合個人審美哲學
  • 其次是對于CNC加工和3D打印在之前的作品中都已經有所使用,而亞克力設計方式還是第一次接觸,嘗試未知技術是很重要的一個考量因素
  • 其三是由于整體體積非常緊湊小巧,因而如果使用封閉式設計的話散熱就變成需要考量的因素了,而夾層式的開放設計則在這方面完全無需擔心
  • 最后一個原因是,亞克力便宜

如上面草圖所示,結構主要為三層:亞克力前蓋、PCB電路板、亞克力后蓋,使用M2的滾花軸銅柱進行組合連接,其中前板采用熱彎折的方式彎折10度左右形成底座,后方走USB線。

機械結構的設計使用Rhinoceros軟件完成↓

亞克力厚度使用的2mm, 找了個小伙伴操作機床雕刻成型, 然后用電烙鐵加熱彎折。值得注意的是亞克力的熔點是300度左右,但100度左右的時候就會變軟了,因此這里將烙鐵溫度設定為100度,不帶調溫功能的烙鐵是不能直接拿來操作的。

使用機床雕刻的亞克力外殼

使用電烙鐵進行熱彎↑

電路設計說明:

硬件電路方面使用自己設計的超迷你ARM-Linux核心板MiniPi↓

MiniPi作為核心板,運行Linux系統,使用mini-PCIE的金手指封裝引出了需要的IO。

這里Pico主要使用到兩個USB接口(一個接USB聲卡,一個接無線網卡),串口(用于調試和控制臺輸出),幾個GPIO(用于驅動按鍵和LED),I2C接口(保留,后期可能會用于和板載的Arduino通信,Arduino用于驅動一些外圍交互??槿綰焱飧杏?、手勢識別等),此外OLED也是使用I2C接口驅動的。

由于底板的功能比較簡單,主要就是作接口擴展,因此底板的PCB采用2層Layout。板載的IC主要有:

  • OLED12864,驅動IC為SSD1306,這個應該屬于很常用了
  • PCM2912A,TI出的USB接口聲卡(很貴,30多一片,價格快趕上用的CPU了),音質還是不錯的
  • CP2102,USB轉串口芯片,也很常用,通過USB線把Pico連接電腦之后,就可以直接用串口控制臺使用Linux了
  • LM4871,功放IC,用于音頻放大然后揚聲器輸出
  • USB-Type C母座,USB接口當然是使用我最愛的Type C

Pico底板原理圖↑

PCB的設計當然使用Altium Designer↓

底板的設計沒有太多可講的,兩層板走線很隨意,也沒有高速器件,USB那邊做好差分走線就行,最好再加上ESD(本版屬于功能驗證性質就沒加了)。聲卡方面經過試驗耦合電容的選擇對聲音效果還是有一些影響的。

這次的Pico上用的MiniPi核心板做了微調,之前一共做過三版:第一版由于是初次設計高速多層板,雖然功能沒問題,但是有不少小缺陷,比如電源電路BUG、沒有加板載的關機按鍵、音頻電路沒有做數字地和模擬地的隔離等等;第二版則是做了一些IO調整;第三版是比較穩定了,但是考慮到把SD卡設計在核心板上可能會在一些項目中不太方便更換(被夾在核心板和地板中間了),因而在金手指上添加了外置SD卡的接口。

MiniPi核心板的CPU和DDR部分的電路如下,濾波電容非常多,CPU這樣極高頻率的器件對電源的純凈度要求很高,要盡量保證每個電源腳都有一個濾波電容↓

CPU部分外圍電路↑

PCB投板回來之后就是藍翔技能施展階段了,主要用到的工具有:熱風槍、烙鐵、鑷子、錫漿、吸錫帶、助焊劑等。這里科普一下貼片元件的焊接方法:與直插元件不同,貼片的器件由于焊盤太?。ㄎ矣玫?402阻容),器件分布太密集,是基本不可能用烙鐵一個一個去焊接的,手工焊接采用的方法主要是回流焊。

所謂回流焊,其實就是利用液體的張力,讓融化之后的液態錫把器件拉到焊盤中央完成焊接,不太理解的可以百度搜索一下“回流焊”。進行回流焊的第一步是制作鋼網,也就是器件焊盤的掩模,這個在設計好PCB之后把相關的加工文件發給廠家就可以進行激光切割制作了,價格也不貴一般50左右。

PCB鋼網掩膜↑

把空PCB對準鋼網掩模之后就可以刮上錫漿了,這樣就完成了一次性對所有的焊盤上錫。然后把元件都按設計擺放上到PCB上,這一步不需要講位置擺的非常準確因為再下一步回流的時候器件會由于液態錫的張力自動歸位的。

上好錫膏的PCB板子↑

上一步貼片完成之后就需要用風槍進行吹焊回流了,相對于一般的器件來說BGA的吹焊難度要大很多因而將其放在最后焊接。吹焊溫度大概控制在250-300度,風槍的吹嘴去掉以增大風口便于均勻加熱,這一步對焊接經驗要求較高,只能多練習嘗試掌握技巧了。

底板的焊接相對簡單,就不多羅嗦了,焊接完畢之后首先用萬用表測電源是否短路,沒問題的話上電檢測電壓,沒有BUG的話就可以進行功能測試了。

焊接完的成品↑

軟件開發說明:

硬件搞定之后就開始移植軟件啦,MiniPi核心板運行的是Debian系的Ubuntu系統,完全兼容樹莓派的各種軟件,所以可以利用上很多優秀的開源資源。

軟件的實現上也參考了另外一個基于樹莓派的智能音箱項目叫做叮當,主頁在這里:叮當主頁

整個軟件框架借鑒了Jasper項目。

軟件主要分為以下幾個??椋?/strong>

  • ASR??椋ˋutomatic Speech Recognition,語音識別),用于獲取用戶的指令,其中包括語音喚醒功能
  • TTS??椋═ext-To-Speech,語音合成),用于給出語音應答
  • NLP??椋∟atural Language Processing,自然語言處理),用于理解指令的語義,以便采取相應的動作,包括對話功能
  • MQTT???,用于實現智能家居聯網控制功能

智能音箱正常工作要解決的第一個問題就是如何接收指令,這里主要涉及兩個問題:

  1. 被動喚醒(Passive Listening),即“什么時候開始聽”。這個階段只監聽喚醒詞,當聽到喚醒詞時,進入主動聆聽。
  2. 主動聆聽(Active Listening),即“什么時候結束聽”。這個階段主動聆聽用戶的任何語音指令,然后對聽到的內容進行分析處理。

被動喚醒階段的基本策略是:以1s的時間窗口通過麥克風進行滑窗采集語音,計算每一幀的波形強度,超過設定的閾值的話就把語音送到ASR模型中判斷是否是喚醒詞(“你好Pico”),判斷為真的話,進入下一個階段進行主動聆聽。

主動聆聽的策略與被動喚醒基本相似,以1s的時間窗口通過麥克風進行滑窗采集語音,計算每一幀的波形強度,超過設定的閾值的話,就認為用戶已說完了指令。

喚醒關鍵詞的識別使用的是一個開源引擎叫snowboy(另外還有一個庫叫PocketSphinx也很好用), 這兩個引擎都是離線工作的,不需要連接云端,識別率經測試還是比較高的,當然實際效果跟關鍵詞的選取有關。

snowboy個人使用是免費的↓

SnowBoy的主頁

前端的喚醒和指令獲取工作完成之后,剩下的功能都由訊飛SDK實現,具體的API介紹和使用說明可以參考官方的Reference文檔:

在線語音合成 Linux SDK 文檔

當然訊飛作為中文語音技術的扛把子,SDK開放的功能是非常豐富的,只要不是商業使用,很多功能基本也是免費的:

對于智能家居的控制功能,這個就很有意思了,因為我之前用Android平臺做過一個機器人項目,也實現了幾乎一樣的需求,所以智能家居控制的大部分的功能可以直接移植過來使用,包括自制的物聯網網關硬件。但是跟上面那個娛樂向的手機器人不一樣的是,這次要做的是一個正兒八經的語音助手設備,如果最后只能控制幾個LED的話顯然無法滿足我的無理要求。

所以我做出了一個大膽的決定,讓Pico向【小愛同學】伸出魔爪,進行“語音接口對接”,具體效果可以看后面的演示視頻。

演示效果:

電路項目的主要芯片及數據手冊

電路相關文件

源代碼
pico-py.zip
描述:參考Python源碼,根據叮當項目修改
其他文件
Allwinner_H3_Datasheet.pdf
描述:全志H3 Datasheet
電路圖文件
電路圖.zip
描述:核心板原理圖&底座原理圖PCB
分享到:
收藏 (9)
電子硬件助手小程序 電子硬件助手小程序

電路城電路折扣劵獲取途徑:

電路城7~10折折扣劵(全場通用):對本電路進行評分獲??;

電路城6折折扣劵(限購≤100元電路):申請成為賣家,上傳電路,審核成功后獲取。

(版權歸彭志輝所有)

版權聲明:電路城所有電路均源于網友上傳或網上搜集,供學習和研究使用,其版權歸原作者所有,對可以提供充分證據的侵權信息,本站將在確認后24小時內刪除。對本電路進行投訴建議,點擊投訴本電路反饋給電路城。

使用說明:直接使用附件資料或需要對資料PCB板進行打樣的買家,請先核對資料的完整性,如果出現問題,電路城不承擔任何經濟損失!

換一批 more>>

大家都在看:

繼續閱讀

  • 老年人智能守護系統

    我們設計了門戶安全警報、藥物提醒、廚房安全、摔倒報警四個主要功能???,控制系統分為人體便攜???、屋內檢測與報警???、屋外終端和上位機控制界面。相對一般的智能家居老年人智能家居考慮到老年人對新事物接納能力落后,學習能力下降,在操作的設計上更加簡便,更容易讓老年人接受。同時也可以作為敬老院護理輔助智能家居,護理人員每天的工作量很大,可能也會遺忘一些事情,另外部分敬老院老人比較“調皮”,老年人智能家居就可以協助護理人員的工作,降低護理人員及敬老院的負擔。
    來自:智能家居時間:2019-09-12 智能家居
  • 使用Raspberry Pi和Python GUI控制伺服電機

    本教程中,我們將介紹如何使用Raspberry Pi和Python TK GUI精確控制伺服。硬件組件:Raspberry Pi 3型號B.× 1 Adafruit伺服HiTEC HS-322HD× 1 面包板(通用)× 1 跳線(通用)× 1 伺服電機,或伺服,是具有輸出軸的小型裝置。通過向伺服機構發送編碼信號,可以將該軸定位到特定的角度位置。只要編碼信號存在于輸入線上,伺服將保持軸的角位置。隨著編碼信號的改變,軸的角位置改變。電路城原創內容,未經同意,不得轉載!
    來自:基礎電路時間:2019-08-30 樹莓派 伺服電機 python gui
  • 基于Raspberry Pi 4B實現實時天氣查看

    使用openweathermap API和新的Raspberry Pi 4查看當前天氣數據。硬件組件: Raspberry Pi 4型號B.× 1 軟件應用程序和在線服務: OpenweathermapMicrosoft VS Code收集對項目有很多細節的實時天氣數據可能很困難。存在多個Web API,但許多需要使用付款,或者設置起來很復雜。值得慶幸的是,openweathermap.org為個人提供了一個既自由又簡單的驚人API。只需選擇服務,生成API密鑰并發送請求!然后,使用該數據創建顯示,更改計算機狀態,甚至控制其他設備。電路城原創內容,未經同意,不得轉載!
    來自:基礎電路時間:2019-08-26 物聯網 數據采集 家庭自動化
  • 桌面智能機器人

    該作品定位是一款智能化的桌面機器人,它有四個基本功能:運動功能、語音識別功能、二自由度網絡攝像功能、面部表情功能,我們將這四個功能有機的結合起來,使其可以幫助用戶解決很多問題。例如:1、用戶可該產品上備注留言,機器人將會自動識別提醒時間,到時提醒。2、用戶可通過該產品的面部表情判斷該產品的當前“心情”,這樣用戶可以與該產品有更好的交互。3、用戶還可將運動功能和網絡攝像功能結合起來,可實現家庭全方位監控、特別是在家里有小孩、老人獨自在家的情況下,可以提供良好的監護能力。
    來自:Hackaday Prize 2019時間:2019-08-20 智能家居 stm32f4
  • 基于QT與stm32智能家居控制系統

    ==========================================注意:sim800c??楣鶴蘊員?這里只提供示意圖連接。不提供電路圖==========================================1.主控芯片stm32f103rct62.gprs??槲猻im800c3.操作系統為rt-thread4.上位機程序:QT5.11.3寫的TCP服務器實現的功能:1.stm32f103rct6 + sim800c 扮演TCP客戶端,去連接外網的服務器(QT編寫的TCP服務器)。2.因為sim800c聯網???,只能連接公網的ip;所以我們需要把本地的ip映射到外網上。3.連上服務器后,可以在服務器端查看和服務器連接的客戶端,可以指定客戶端發送命令。目前支持三個家居的遠程控制。4.客戶端代碼支持斷線重連。=========================================測試步驟:請參考內外網映射教程與板子測試:1.連接好硬件,插好sim卡(目前僅測試了移動卡),更改stm32代碼中的服務器ip和端口,然后燒錄程序2.重新上電,等待連接上服務即可。3.命令下發。
    來自:智能家居時間:2019-08-16 stm32 智能家居 遠程控制
  • 開源智能音箱

    現在市面上智能音箱在某種程度上是從廠商的角度設計的,存在兩個問題:一是音箱作為一個一直錄音的黑盒子讓人有隱私顧慮,另一是設備不開放所造成的功能受限問題。那么我們就自己從頭設計一個開源的智能音箱吧,我們已經有各種語音方面的資源(見Make a smart speaker),已經足夠用來打造一個完全開源的智能音箱,就以一個開源項目的方式開始嘗試,項目英文名就叫Smart Speaker from Scratch(類似 Linux From Scratch)。有三個目標: 開源(Open Source)平價(Affordable)可日常使用(Daily Use)開源,即項目所用到的軟硬件盡可能開放,當然也不排斥沒開源的資源,希望有一套完全開源方案,最終希望是有開源的方案和各種其它方案可供用戶選擇(是的,有選擇很重要)。平價,意味著這不應該是很昂貴的玩物,雖然不能做到市面上智能音箱補貼后的價格,但會在硬件和結構的選擇和設計上充分考慮成本,讓成本盡可能的低。比如結構上可以選擇低成本的紙殼(紙殼設計的門檻很低,可以讓更多的人參與到DIY中)??扇粘J褂?,意思是可靠性足夠好,不能停留在prototype階段,不能只是demo的程度,需要可以像市面上的智能音箱那樣,可以日常聽歌,可以控制家里的電器。設計方案:方案采用友善之臂的Nanopi Neo Air和新設計的4麥克風線性陣列。功能:1. 聲音配網。設備沒有連上WiFi時,可以打開網頁應用https://voice-engine.github.io/hey-wifi/,把WiFi信息通過聲音發送給設備,然后設備連接WiFi。2. 回聲消除。音箱在播放音樂的時候要聽清楚人說話的聲音,就需要在音樂和人聲混合當中消除(削弱)音樂,這種場景就用到回聲消除(Echo Cancellation),此功能的實現在https://github.com/voice-engine/ec3. 支持各種語音助手,包括Google Assistant、Amazon Alexa、Snips、Mycroft、百度的DuerOS和出門問問等。項目的Logs見https://hackaday.io/project/164221-smart-speaker-from-scratchGithub倉庫見https://github.com/voice-engine知乎專欄見https://zhuanlan.zhihu.com/voice-engine
    來自:Hackaday Prize 2019時間:2019-03-26 開源 智能家居 智能音箱
  • 一體化超聲波測距

    是采用收發一體封閉式探頭,探頭具備一定的防塵防水等級,適用于潮濕、惡劣的測量場合。是一款操作簡單的高性能、高可靠性商用級功能性???,實測距離0.25至5米。
    來自:安防與監控時間:2019-07-24 51單片機 智能家居
  • 基于模糊算法的智能家庭光線調節系統

    比賽所做的產品主要根據無線智能調光器和無線智能窗簾的設計思想,設計出了一個智能調光系統,結合 Zigbee 無線傳感器網絡技術、模糊控制技術、單片機電子技術等。該系統不僅具有手動調光、全開全關、定時關閉等基本功能,而且具有分區照明,場景模式切換,讓用戶隨時隨地可以操控家中的照明系統,包括開關以及亮度的調節等,節能環保,操作方便,在窗簾的設計上,無線智能窗簾系統擁有更人性化的設計,根據外界環境,人的身體狀態來實現智能的自動升降,而且在滿足接入家中路由器的條件下,利用處在同一局域網下的智能設備實現更加高級的功能。因此這種兩種智能控制系統的結合無疑會給用戶帶來深刻的印象,更加優越的生活質量以及便捷的生活方式。
    來自:Hackaday Prize 2019時間:2019-07-09 stm32 智能家居
  • 基于BK2535無線芯片開發的無線插座

    基于BK2535無線芯片開發的無線插座原理圖與源代碼,已經小批量生產,傳輸距離可以達到10m
銷量
4
查看
655
參數名 參數值
發布于 2019 年 07 月 22日
更新于 2019 年 09 月 04日
Moore8直播課堂

tracer ??