原文:https://club.rt-thread.org/ask/article/80312d50bc48fd76.html
概要本文給大家介紹一個Infineon和ChatGPT的人工智能語音小管家項目,該項目是博主架構師李肯參加由RT-Thread與英飛凌聯合舉辦的2023英飛凌創意創客大賽的參賽項目,旨在探索智能硬件+智能音箱+ChatGPT的超級組合在C端市場的潛在應用,希望能給大家帶來幫助和啟發。1 前言
如今,智能化的設備慢慢走進了千家萬戶,大大提升了人民生活的智能化,但是隨之而來的是各種智能設備無法互聯互通,形成了一片片信息孤島,這就迫切需要一個類似于智能家居管家系統的中樞設備來接管這些零散的智能設備;而在各種成熟的應用產品方案中,形態各異的智能音箱無疑是一個比較合適的選擇。
眾觀市場上的各種智能音響,小度音響憑借其優異的市場表現,占據了很大一塊市場份額,使得“小度小度,現在幾度”成為了家庭中很常見的交互問候語。
有這么一個設想,我們將家庭環境中形態各異的智能設備,通過簡單的協議改造,加上終端設備出色的主控能力,智能設備全部集合到小度音箱中去,而這個終端系統與小度音響直接打通,這樣跟小度直接對話就能操作這些智能設備,這是一個不錯的點子。
同時,當下人工智能非?;鸨?,尤其以ChatGPT最為強大,倘若這樣的一套終端系統能夠接入最前沿的ChatgPT,那么可以想象的是,這個智能系統的可玩性將會大大提升,而本項目正是基于這樣的目的,著手去探討這樣方案的可行性。
2 項目簡介
2.1 項目名稱
基于Infineon和ChatGPT的人工智能語音小管家
2.2 設計思路
本項目主要使用Infineon的控制芯片作為端側的核心控制器,實現一個物聯網網關,網關外圍接入多種傳感器器件和控制器件,通過Wi-Fi模組實現與云端的互通,并接入小度音箱控制系統,實現使用音箱控制智能設備。
這個項目中,我將引入時下最流行的人工智能模型ChatGPT,這將極大地提升智能管家的時髦性和可玩性。本項目著重定義的應用場景是在智慧家庭中,一個有趣的人工智能小管家,不僅能夠給家庭智能帶來便利,還將提升家居生活的智能化和幸福感。解放雙手,釋放人類,享受智能生活,一切都將變得可能。
2.3 主要解決的問題
家庭中的智能設備越來越多,一個集中式的智能家庭中樞控制系統迫在眉睫,旨在解決所有智能設備的調度和控制問題,為智能生活提供便利。同時,將智能音箱系統接入最前沿的ChatGPT技術,豐富設備的可玩性。
2.4 項目創新點
-
主要是設備端各項傳感器器件和控制器件的集成,以及與小度音響的直連互通。
- 在智能家居中,目前主流的所謂的“智能”,都是一個比較粗獷的智能,比如小度、小愛同學等;真正如果做到引入人工智能這種層次,還得看ChatGPT;如果能將ChatGPT接入智能家庭這個場景中,那么可玩的的東西,想象力就可大了。
2.5 本次參賽的初衷
采用本項目參賽,本身并不期望做出多么驚艷的產品,旨在探索智能硬件+智能音箱+ChatGPT的超級組合在C端市場的潛在應用,希望能給大家帶來幫助和啟發。
3 系統架構介紹
3.1 方案預研
在過往的項目經歷中,我已實現過 基于小度音箱的智能家庭中樞控制系統,參見這里; 這個方案已經證實了,小度音箱作為控制中樞的可行性,現在只不過把控制中樞的邏輯移植過來。
剩下的就是小度音箱與ChatGPT的銜接問題,從查到的資料可知,在DuerOS開放平臺 (baidu.com) 的開放資料可知,小度音箱支持自定義 技能, 而通過這個技能,我們可以實現捕捉到從小度音箱獲取的用戶語音輸入信息,這個時候需要利用到 DuerOS SDK 的API能力, 將語音的輸入轉換成文本信息,進而轉發到了用戶自定義的處理服務器,再由這個服務器將文本信息通過ChatGPT的Open API能力,得到反饋的信息(經ChatGPT處理得到的信息),再通過DuerOS SDK的API,通過小度音箱將信息輸出,形成一個操作閉環。
同時,這個自定義的服務器還可以將與ChatGPT交互的信息,以MQTT Publish的形式推送到智能終端,達到保存信息記錄的目的。
在預研的過程中,有參考一篇博文,給我一定的指導意義,詳見這里。
經過以上分析,得到了方案的可行性,下面開始著手設計系統架構圖。
3.2 系統核心架構圖
經過調研設計,得到整個系統的核心架構圖如下所示:
從上面這個核心架構圖中,我們可以看到整個IoT系統組成,包括智能設備終端側、巴法云物聯網平臺、小度云平臺、小度音箱、OpenAI-ChatGPT后臺,自定義后臺服務(負責對接小度云平臺)等等。下面就整個系統的幾大重要組件,我會一一進行簡要講解。
3.3 終端側
終端側主要承載的是對巴法云平臺的對接,接收巴法云平臺下發的控制指令和ChatGPT交互數據,同時做一些邊緣側的應用邏輯處理,還需要具備對外網絡的通訊能力,保持與巴法云平臺的MQTT長鏈接。
這里巴法云平臺推送的數據主要有兩類:
-
對外圍的智能設備的操作之類,比如關燈/開燈;
-
還有一類就是小度音箱與ChatGPT的交互記錄數據。
終端側包括的核心組件有:英飛凌的PSoC 62 with CAPSENSE evaluation kit,搭載的是國產實時操作系統 RT-Thread,同時外設板載有 ESP8266 Wi-Fi通訊模組、繼電器(GPIO模擬)、存儲的SD卡等等。
終端側不僅包含設備硬件,還需要對應的固件軟件,兩者相輔相成,共同完成終端側的功能邏輯。
3.4 后端側
后端側包括兩部分:
巴法云平臺這個后端側,其實沒有真正的開發工作,僅僅是登錄巴法云平臺后臺,配置MQTT板塊,然后生成【智能燈】兩個設備,以便于終端側和小度音響識別。
同時,巴法云的MQTT后臺,還需要配置一個專門用于傳輸ChatGPT交互數據的topic通道,以便于終端與自定義服務器進行數據傳輸。
自定義服務器
這個后端側是有一定的開發工作量,包括以下幾個核心內容:
-
移植DuerOS SDK,調用其API,通過小度技能的Callback能力,將從小度音箱輸入的語音轉文本信息取得;
-
基于OpenAI 的API KEY 能力,編寫邏輯程序,將文本信息發往ChatGPT服務,并獲得ChatGPT的響應數據;
-
再通過DuerOS SDK 的API,把ChatGPT的響應數據轉為語音,再通過小度音箱播放出來。
值得注意的是,這部分涉及的后端知識比較多,對多個SDK的研究還需要投入更多的時間和精力。
3.5 移動端
這里說的移動端,特指小度APP;其實這里面也沒有開發工作,當你的小度APP賬號登錄之后,它有一個操作步驟可以加入基于巴法云平臺的【智能設備】,按照說明添加成功后,就可以在小度APP上看到巴法云平臺對應的設備列表了。
詳細的綁定操作步驟,見 此文的第二部分。
4 系統設計說明
4.1 硬件部分
-
MCU主控:英飛凌的PSoC 62
Infineon Technologies 的 PSoC 62S2 評估套件 (CY8CEVAL-062S2) 使客戶能夠使用 PSoC 62 MCU 評估和開發應用。該套件采用 PSoC 62 MCU (CY8C624ABZI-S2D44):150 MHz Arm Cortex-M4 和 100 MHz Arm Cortex-M0+內核、2 MB 閃存、1 MB SRAM、硬件加密加速器、豐富的模擬和數字外設、音頻和通信接口,以及采用 CAPSENSE 技術的行業領先電容式感應。PSoC 62S2 評估套件提供了許多開箱即用的用例,用于開發即將推出的連接邊緣節點。
它的具體接口資源展示如下:
在我的項目中,我主要使用它的以下幾個外設資源:
1)UART6:RT-Thread的終端調試串口;
2)UART5:用于連接串口WI-Fi模塊ESP8266,實現網絡通訊能力;
3)GPIO:P0.0 用作系統工作狀態顯示燈,P0.1 用于控制智能燈開關(模擬);
4)SDIO:外掛SD卡,用于存儲ChatGPT的交互信息。
以下是我的實物連接示意圖:
-
Wi-Fi模組:ESP8266
本次參賽,我采用了我慣用的Wi-Fi通訊模組ESP8266,非常的便捷,借助RT-Thread的軟件包,基本無需編寫任何代碼,就可以實現網絡能力;當然串口通訊還是需要配置一下,只不過不用寫代碼而已。
我這里使用的搭建ESP8266 Wi-Fi芯片的模組ESP-12F,它是由安信可科技開發的,該模塊核心處理器 ESP8266 在較小尺寸封裝中集成了 業界領先的 Tensilica L106 超低功耗 32 位微型 MCU,帶有 16 位精簡模式,主頻支持 80 MHz 和 160 MHz,支持 RTOS,集成 Wi-Fi MAC/ BB/RF/PA/LNA,板載天線。
-
GPIO控制:
目前這一塊的接入,采用的是GPIO做模擬,并沒有實際接入繼電器,但已經完全可以實現其操作原理。
其中,P0.0 用作系統工作狀態顯示燈(每一秒閃爍一次),P0.1 用于控制智能燈開關(模擬)。
如上上圖所示。
4.2 軟件部分
整個軟件部分的開發主要分為兩大部分:終端軟件和后端服務器軟件。
終端固件開發主要包括四大部分:英飛凌的PSoC 62的原廠BSP、RT-Thread實時操作系統、ESP8266相關的配置代碼使能、個性化的應用邏輯代碼。
其中英飛凌的PSoC 62的原廠BSP基本不動,原廠和相關開發者已經適配好了;通用的RT-Thread操作系統的代碼也不在此處的修改中,直接復用已有的代碼,這里使用的版本是 5.0.0版本 。
ESP8266相關的AT、網絡組件代碼也是現成的,使能配置之后就可以直接用了,還是非常的方便。
除了AT相關的軟件包代碼外,我還使用了 paho-mqtt 這個軟件包,這個軟件包主要封裝了MQTT協議的實現技術細節,開放了一些靈活好用的API給到應用層,以便于提供MQTT的通訊能力。
還有一個cJSON的軟件包,這里也使用到了,它用于做一些上下行數據包的解析和封裝,主要原因是需要解析一些與云平臺對接的數據協議,這就要求終端必須具備解析JSON數據的能力。
所以這里重點講一下,應用邏輯的代碼:主要包括GPIO的控制等,而這些控制信號的輸入,都是來源于巴法云平臺的下發,而巴法云平臺的聯動下發則來源于用戶對小度音響的語音控制輸入。
另一方面,當終端收到來自ChatGPT交互日志的請求數據時,也會將該數據寫入SD卡作為存儲。
以下是終端軟件應用邏輯部分的層次圖:
其中:
Wi-Fi線程:由于在RT-Thread中AT組件是開啟后,默認就跑起來了,而在應用層暫時沒有一個比較好的方式感知網絡能力的建立,所以這里新建了一個線程,用于實時檢查網絡通訊能力;當網絡通訊能力已建立時,通過信號量的方式,通知其他模塊。
Smart Home (+ ChatGPT) MQTT線程:主要負責跟巴法云物聯網平臺進行對接,采用的MQTT通訊協議,它的運行,依賴于基礎網絡能力的建立;當它與巴法云物聯網平臺建立聯系時,它就可以接收平臺的控制指令下發,比如開關空調或開關照明燈等;
系統運行展示線程:此線程并沒有參與過多的應用邏輯,僅僅是每一秒鐘閃爍一下運行指示燈,表示系統正在運行中;
智能燈(模擬)控制模塊:一個LED模擬繼電器控制智能燈的邏輯,當收到下發的打開或關閉指令時,執行對燈的操控;
SD卡存儲顯示:此線程主要用于存儲小度音箱與ChatGPT的交互信息。
以上各個線程各司其職,相輔相成,共同完成智能家庭中樞控制系統的邏輯功能。
下面展示的是工程項目中的代碼結構,里面的代碼結構一本與上面的代碼邏輯示意圖保持一致。
后端代碼開發:
由于時間關系比較緊張,還未完全學透DuerOS SDK與小度音箱的銜接,以下是部分參考代碼,還需要進一步學習:
1javascriptCopycode 2constsdk=require('baidu-sdk'); 3constOpenAI=require('openai'); 4constopenai=newOpenAI(''); 5sdk.onVoice((data)=>{ 6consttext=data.result.recognize[0].payload.result.word[0]; 7openai.generate(text).then((response)=>{ 8sdk.sendText(response.data[0].text); 9}); 10});關于應用OpenAI 的API KEY 構建ChatGPT能力,倒不是一個難事,使用python腳本即可實現,范例代碼如下:
1importopenai 2#my_gpt_key="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" 3#my_gpt_key="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" 4#my_gpt_key="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" 5#my_gpt_key="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" 6#my_gpt_key="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" 7my_gpt_key="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" 8importtime 9defask_gpt(text:str): 10#openai.api_type="azure" 11#openai.api_key="..." 12#openai.api_base="https://example-endpoint.openai.azure.com" 13#openai.api_version="2022-12-01" 14openai.api_key=my_gpt_key#"PUTYOURAPIKEYHERE" 15#獲取當前時間 16t1=int(time.time()) 17#listengines 18#engines=openai.Engine.list() 19#printthefirstengine'sid 20#print(engines.data[0].id) 21res=openai.Completion.create( 22engine="text-davinci-003",prompt=text,temperature=0.6,max_tokens=2048 23) 24t2=int(time.time()) 25print(t2-t1) 26returnres.choices[0].text 27defmain(): 28whileTrue: 29query=input("Askaquestion:") 30res=ask_gpt(query) 31print(f"{res} ") 32main()4.3 創新性的開發環境
由于我早期基于RT-Thread做開發,也是非常依賴于RT-Thread Studio開發環境,雖然提供了一些便利,但是礙于它的配置實在是太慢了,并且非常吃內存和吃存儲空間,于是被我啟用了。
也正是由于這些吃癟,我自己經過設計,延續了scons+env的構建環境,打造了一套屬于自己的開發環境,我取名叫 xiotman。關于它的介紹,詳見我的開源項目:xiotman: 一套致力于解決物聯網終端應用多樣化挑戰的軟件架構解決方案。(gitee.com)借助這個項目,我很方便就把我本次參賽的項目移植移植進來了:
基于scons+env的構建編譯,也是非常的絲滑,多線程編程,想想就開心:
在燒錄固件這塊,我沒有使用RT-Studio的下載工具,而是使用了原廠提供的 Cypress Programmer 4.2,燒錄工具用起來還是很爽的,尤其是自帶燒錄器這個實用功能,必須點個贊。
5 項目實施過程
1)熟悉英飛凌的PSoC 62的基本開發資料
這一步主要是熟悉開發板的基本資源,對外設等信息有一定的概念,以便于方便后續的開發調試;同時,還需要把相關的一些官方軟件給安裝好,熟練使用配置工具和下載工具。參加大賽主辦方舉行的一些線上直播活動,了解必要的開發基礎。磨刀不誤砍柴工,只要熟練上手了,才能開發出優秀的應用程序。2)移植RT-Thread操作系統
本次參賽,其實并不要求去移植RT-Thread,其實也要多感謝RT-Thread官方和社區的小伙伴,其實他們都已經做好了基本的移植了,只需要對照著自己的開發板資源跳調整一下即可。
有了上面的踩坑經驗,直接上手RT-Thread的DEMO教程,很快就可以把操作系統跑起來了,一切都回歸到熟悉的地方,研發進度再次提速。
下面就是基于RT-Thread操作系統進行編程了。
3)配置RT-Thread的軟件包
目前由于xiotman的在線更新軟件包的功能還沒完全打通,所以我是通過在原生rt-thread/bsp目錄,使用env配置工具先把軟件包下載下來,然后手動拷貝到xiotman的components/packages/對應的目錄。
這個項目中,我使用了paho-matt軟件包、AT-device軟件包、CJSON軟件包;的確讓我的項目開發提速了不少。
4)配置巴法云物聯網平臺
我是參考這個 esp8266接入小度語音,小度音箱控制 來創建自己的自定義產品的,并實現與小度音箱的綁定的。
基本上以上4步完成后,終端就可以很順利地連上巴法云物聯網平臺了,而這期間基本就是零代碼,全部都歸功于RT-Thread靈活的代碼配置工具,非常地贊。
5)調試外設驅動
這里主要是調試各種驅動接口,包括紅外發射器的UART接口、照明燈開關的GPIO控制。
在調試過程中,一般一個個模塊來,避免模塊直接的干擾,這樣可以有效地加快開發速度。
等到各個功能模塊完成后,統一串起來跑一跑,確保沒有問題。
6)全功能自測
到了這一步,基本功能開發就已經完成了,需要將終端設備的功能與云端能力聯系起來調試,比如對小度音箱進行控制語音輸入,看一下巴法云平臺能否推送對應的控制消息下來,同時看下終端能否對控制消息進行合理的處理,比如控制空調開關或者控制照明開關等。
但是由于對接ChatGPT的后端服務器程序還未完工,所以涉及ChatGPT部分的邏輯,還需要再等一等,是一個遺憾。
7)準備結項資料
項目收尾的最后,需要準備各種結項資料,包括項目穩定、演示視頻、各種實物圖片等等。
6 項目效果顯示
6.1 功能描述
本期項目中,已實現以下功能:
-
在巴法云后臺配置智能設備:智能空調和智能燈,在小度APP是可以看到設備情況;
-
基于英飛凌的PSoC 62的終端,實現智能家庭中樞控制系統的功能;
-
跟小度音響語音對話,比如【打開燈】或【關閉燈】,即可實現控制指令下發,終端通過GPIO控制LED(模擬真實場景的智能燈)
-
打通本地空調狀態和智能燈狀態與巴法云、小度平臺的聯系,實現實時控制聯動。
還未實現的功能:
-
打通小度音箱與自定義后端服務器,完成語音輸入的提取和轉發
-
對接OpenAI,基于API KEY 實現ChatGPT的功能。
6.2 圖片展示
以下是項目的部分圖片展示:
-
項目應用啟動/調試log
-
小度APP使用界面
-
通過巴法云添加的智能設備在小度APP的展示
6.3 視頻展示
B站視頻(演示小度音箱的智能控制):【英飛凌創意創客大賽】基于Infineon和ChatGPT的人工智能語音小管家】www.bilibili.com/video/BV1Pz4y1E7fp
因時間關系,基于ChatGPT的智能邏輯還沒完全實現,演示視頻待下次補充。。。
6.4 代碼開源
本參賽項目的源代碼已全面開源在 這里
其中應用部分的代碼在:https://gitee.com/recan-li/xiotman/tree/master/apps/app_baidu_chatgpt有關項目源代碼的事情,也可與我討論。
7 項目復盤
項目還有一部分功能未實現,小小總結一下這次項目:
- DDL無效論:時間不夠用,下次別留這么少的時間了;
- 百度開發者賬號是需要認證的,需要幾天的時間審核,容易耽誤事兒;
- 英飛凌的PSoC 62 很好用,搭配的開發工具、下載工具非常棒,能夠讓人快速上手;
- xiotman第一次用于參加業余比賽,感覺使用起來還是比較清爽的,后面慢慢會都轉到它來開發更多的項目。
8 致謝
感謝本次大賽的主辦方RT-Thread和英飛凌,為廣大開發者提供福利的同時,也帶來了業內前沿的開發技術,是我們學習和提高的一個好平臺,期待下次繼續參與這樣的比賽。
至于,比賽結果怎么樣,倒是其次,參與過,學習過,提高過,差不多就可以了。
9 項目的TODOLIST
DuerOS SDK的深度研究,爭取玩透小度音箱及百度的AI相關應用;
基于ChatGPT的API KEY 熟練部署ChatGPT的應用,打通智能音箱與ChatGPT的溝通渠道;演示視頻,待補充。 10 參考鏈接RT-Thread x Infineon創意創客大賽
https://club.rt-thread.org/ask/article/d4aa78c6fb75dda7.html
DuerOS開放平臺 (baidu.com)https://dueros.baidu.com/open把 chatGPT 接入小度 - 掘金 (juejin.cn)https://juejin.cn/post/7203685609654550588xiotman: 一套致力于解決物聯網終端應用多樣化挑戰的軟件架構解決方案。(gitee.com)https://gitee.com/recan-li/xiotmanesp8266接入小度語音,小度音箱控制,附開源app控制https://blog.csdn.net/bemfa/article/details/120034113?spm=1001.2014.3001.5501巴法云接入文檔https://cloud.bemfa.com/docs/#/巴法云開發者論壇https://bbs.bemfa.com/11 更多分享
本次項目介紹后,我還繼續探索RT-Thread在各種嵌入式平臺開發的可能性,并以此來要求自己輸出各種關于RT-Thread、嵌入式、物聯網等等熱門技術話題的原創內容,歡迎大家持續關注我。
我是 架構師李肯 (全網同名),2022年電子發燒友論壇優秀開發者、2022年RT-Thread技術社區優秀布道者、CSDN博客專家,歡迎大家來交流。
———————End———————
點擊閱讀原文進入官網
原文標題:【RT-Thread x Infineon創意創客大賽】基于Infineon和ChatGPT的人工智能語音小管家
文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
-
RT-Thread
+關注
關注
31文章
1285瀏覽量
40088
原文標題:【RT-Thread x Infineon創意創客大賽】基于Infineon和ChatGPT的人工智能語音小管家
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論