如何使用CrowPanel Advance和OpenAI Realtime API構(gòu)建一個(gè)緊湊的智能語(yǔ)音控制機(jī)器人系統(tǒng)
語(yǔ)音控制的機(jī)器人界面使用CrowPanel Advance和OpenAI。
本項(xiàng)目演示了如何使用CrowPanel Advance和OpenAI Realtime API構(gòu)建一個(gè)緊湊的智能語(yǔ)音控制機(jī)器人系統(tǒng)。CrowPanel記錄用戶的聲音,將其發(fā)送給OpenAI進(jìn)行轉(zhuǎn)錄和解釋,并接收結(jié)構(gòu)化的命令。該命令在面板上進(jìn)行解釋,然后通過(guò)藍(lán)牙傳輸給機(jī)器人(CrowBot)。
由于基于gpt的自然語(yǔ)言理解,機(jī)器人不僅可以對(duì)簡(jiǎn)單的指令做出反應(yīng),比如“向前走”,還可以對(duì)間接的短語(yǔ)做出反應(yīng),比如“這里有點(diǎn)暗”,并通過(guò)打開前燈來(lái)回應(yīng)。
雖然這種設(shè)置可以與CrowBot一起開箱即用,但它可以很容易地適應(yīng)控制其他DIY機(jī)器人平臺(tái),藍(lán)牙智能玩具,甚至家庭自動(dòng)化系統(tǒng)。
特性
?免提語(yǔ)音控制使用CrowPanel Advance的內(nèi)置麥克風(fēng)
?OpenAI支持的自然語(yǔ)言理解(實(shí)時(shí)API)
?通過(guò)結(jié)構(gòu)化JSON調(diào)用函數(shù),以實(shí)現(xiàn)安全、可擴(kuò)展的命令執(zhí)行
?基于藍(lán)牙的命令傳輸?shù)紺rowBot
?用于Wi-Fi設(shè)置和API密鑰輸入的簡(jiǎn)單GUI
?開源和可擴(kuò)展:適應(yīng)您自己的機(jī)器人或系統(tǒng)
它是如何工作的
1. 用戶按住CrowPanel Advance,運(yùn)行自定義控件應(yīng)用程序。
2. 他們會(huì)說(shuō)命令,例如,“向前走,向右轉(zhuǎn)”,或者“這里有點(diǎn)暗”。
3. 聲音流到OpenAI實(shí)時(shí)API,在那里它被轉(zhuǎn)錄(通過(guò)gpt- 40 -mini- transcript)和處理。
4. OpenAI返回一個(gè)帶有函數(shù)名和參數(shù)的結(jié)構(gòu)化JSON。
5. CrowPanel解釋響應(yīng),并通過(guò)藍(lán)牙將命令發(fā)送給CrowBot。
6. 機(jī)器人執(zhí)行動(dòng)作(例如,移動(dòng)、轉(zhuǎn)彎、開/關(guān)燈)。
7. 不支持或不明確的請(qǐng)求使用內(nèi)置的reject_request函數(shù)安全處理。
由于集成了OpenAI,即使是復(fù)雜或間接的語(yǔ)音命令也被解析為可操作的步驟,使機(jī)器人控制更加直觀和有趣。
所需的硬件
- CrowPanel Advance
- CrowPanel插件(帶藍(lán)牙模塊)
- CrowBot或任何接受藍(lán)牙UART命令的機(jī)器人
- OpenAI API密鑰
固件
CrowPanel固件和語(yǔ)音控制邏輯:Grovety/OpenAI_Robot_Control
自定義CrowBot固件:CrowBot GRC固件
教程-快速入門指南
有兩種安裝選項(xiàng):
?使用預(yù)構(gòu)建映像的快速設(shè)置
?為開發(fā)人員和制造商提供了一個(gè)完整的從源代碼構(gòu)建選項(xiàng)
選項(xiàng)1:Flash預(yù)構(gòu)建固件
?從帶有二進(jìn)制文件的存儲(chǔ)庫(kù)中下載flash_tool.exe
?連接CrowPanel通過(guò)USB和運(yùn)行閃光燈。
?閃爍后,連接Wi-Fi
?然后輸入OpenAI API密鑰。
?啟動(dòng)CrowBot。
開始說(shuō)話——試試這樣的命令:
“轉(zhuǎn)發(fā)”
“左轉(zhuǎn),打開燈”
選項(xiàng)2:從源代碼構(gòu)建
?克隆groovy /OpenAI_Robot_Control repo
?使用ESP-IDF v5.4+來(lái)構(gòu)建和刷新CrowPanel固件
?根據(jù)需要定制GUI、藍(lán)牙邏輯或命令解析器
?Flash CrowBot與兼容固件使用Arduino或PlatformIO
關(guān)于命令處理
這個(gè)項(xiàng)目沒有使用長(zhǎng)文本提示,而是使用OpenAI的函數(shù)調(diào)用特性來(lái)安全地將用戶語(yǔ)音映射到有效的機(jī)器人動(dòng)作。
JSON文件定義了所有可用的函數(shù):function_list_robot.json
每個(gè)函數(shù)都有一個(gè)名稱(例如go_forward)、描述和可選參數(shù)。
當(dāng)用戶說(shuō):
“向前走,把燈打開。”
CrowPanel發(fā)送:
可識(shí)別的文本
JSON函數(shù)列表
指令function_call: auto
OpenAI返回結(jié)構(gòu)化輸出,如:
{"name": "go_forward", "arguments": {}}
CrowPanel解析結(jié)果并向CrowBot發(fā)送相應(yīng)的藍(lán)牙命令。
為什么這種方法很棒:
?只有經(jīng)過(guò)批準(zhǔn)的函數(shù)才能被調(diào)用——毫無(wú)疑問
?添加新命令很容易——只需更新JSON即可
?支持安全回退,如輸入不明確的reject_request
?可擴(kuò)展和安全-遵循OpenAI推薦的嵌入式AI架構(gòu)
擴(kuò)展理念
想要更進(jìn)一步嗎?以下是一些說(shuō)明:
-使用揚(yáng)聲器和OpenAI的語(yǔ)音合成添加語(yǔ)音響應(yīng)系統(tǒng)
-整合對(duì)話系統(tǒng)與上下文記憶
-使用相同的設(shè)置,通過(guò)藍(lán)牙中繼控制智能家居設(shè)備
-將其與手勢(shì)識(shí)別或視覺反饋相結(jié)合
-通過(guò)JSON擴(kuò)展命令集-只需更新function_list_robot.json
-使用OpenAI的流媒體API從一次轉(zhuǎn)錄切換到實(shí)時(shí)語(yǔ)音??語(yǔ)音交互
本文編譯自hackster.io