Linuxword Global
当前位置: Linux技术 > 让你的玩具变成真正的 AI 伙伴,支持超过 10 分钟的连续自然对话

想要让玩具、公仔变得会说话、有情感,现有的方案要么太贵太复杂,要么就是需要一直连着手机,用起来特别不方便。
为了解决这些问题,GitHub 上开源项目 ElatoAI 给出了解决方案,基于 ESP32 微控制器和 OpenAI Realtime API 开发。
它能让你的玩具变成真正的 AI 伙伴,支持超过 10 分钟的连续自然对话,语音识别和回应都非常流畅。
GitHub:http://github.com/akdeb/ElatoAI

主要功能:
- 实时语音转语音:基于 OpenAI 实时 API,对话极其自然流畅
- 自定义 AI 角色:可以设置不同的性格和声音
- 简单硬件设计:只需一块 ESP32-S3 开发板即可实现
- 安全通信:使用加密 WebSocket 传输数据
- 全球低延迟:依靠 Deno Edge Functions 实现全球范围内低于 1 秒的延迟

该项目的前端、服务器和固件代码已开源,对 AI 玩具或 AI 伴侣等产品感兴趣的开发者可以看下。

Gpa5fj0bMAA5tr5

DIY 硬體設計

pcb-design

? 應用設計

使用 Elato AI webapp 透過手機控制您的 ESP32 AI 裝置。

mockups

從 AI 角色清單中選擇 與你的人工智慧對話並即時回應 創建個人化的AI角色

? 快速入門

  1. 啟動 Supabase

安裝Supabase CLI並設定您的本機 Supabase 後端。從根目錄運行:

brew install supabase/tap/supabase
supabase start # Starts your local Supabase server with the default migrations and seed data.
 
  1. 設定 NextJS 前端

(參見前端自述文件)

從frontend-nextjs目錄中執行以下命令。 (登入憑證:電子郵件:admin@elatoai.com,密碼admin:)

cd frontend-nextjs
npm install
cp .env.example .env.local

# In .env.local, set your environment variables 
# NEXT_PUBLIC_SUPABASE_ANON_KEY=<your-supabase-anon-key>
# OPENAI_API_KEY=<your-openai-api-key>

# Run the development server
npm run dev
 
  1. 啟動 Deno 伺服器

(請參閱 Deno 伺服器自述文件)

# Navigate to the server directory
cd server-deno
cp .env.example .env

# In .env, set your environment variables 
# SUPABASE_KEY=<your-supabase-anon-key>
# OPENAI_API_KEY=<your-openai-api-key>

# Run the server at port 8000
deno run -A --env-file=.env main.ts
 
  1. 設定 ESP32 設備韌體

(請參閱 ESP32 設備自述文件)

設定Config.cpp並設定您的ws_server本地backend_serverIP 位址。ifconfig在您的控制台中運行並找到en0-> inet-> 192.168.1.100(對於您的 Wifi 網路可能有所不同)。這會告訴 ESP32 裝置連接到本機上執行的 NextJS 前端和 Deno 伺服器。所有服務應在同一個 Wifi 網路上。

  1. 設定ESP32設備Wifi

建立韌體並將其上傳到您的 ESP32 裝置。 ESP32 應該打開一個ELATO-DEVICE強制門戶來連接到 Wifi。連接到它並轉到http://192.168.4.1配置設備 wifi。

  1. 設定好 Wifi 憑證後,關閉裝置並重新打開,它就會連接到您的 Wifi 和伺服器。

  2. 現在您可以與您的 AI 角色交談!

? 開始使用多個設備

  1. 透過將 ESP32 裝置的 MAC 位址和唯一使用者代碼新增至devicesSupabase 中的表格來註冊您的裝置。

專業提示:若要尋找 ESP32-S3 裝置的 MAC 位址,test/print_mac_address_test.cpp請使用 PlatformIO 建置和上傳並檢視串列監視器。

  1. 透過將您的唯一使用者程式碼新增至NextJS 前端的「設定」頁面,將您的使用者帳戶註冊到此裝置。這會將您的裝置連結到您的帳戶。

  2. False在您的環境變數中設定 DEV_MODE frontend-nextjs/.env.local。

專業提示:如果您在本機進行測試,則可以保持韌體檔案和 Deno 伺服器環境變數DEV_MODE中的巨集處於啟用狀態Config.h,以使用本機 IP 位址進行測試。

  1. 現在,您可以透過重複上述流程將多個裝置註冊到您的帳戶。

專案架構

ElatoAI由三個主要組件組成:

  1. 前端客戶端(Next.js託管在 Vercel 上)- 用於創建並與您的 AI 代理對話,然後將其「發送」到您的 ESP32 設備
  2. 邊緣伺服器功能(Deno在 Deno/Supabase Edge 上運行)- 用於處理來自 ESP32 設備的 websocket 連線和 OpenAI API 呼叫
  3. ESP32 IoT 用戶端(PlatformIO/Arduino)- 從邊緣伺服器功能接收 websocket 連線並透過 Deno 邊緣伺服器將音訊傳送到 OpenAI API。

? 功能

  1. 即時語音轉語音:由 OpenAI 的即時 API 提供支援的即時語音轉換。
  2. 建立自訂 AI 代理:建立具有不同個性和聲音的自訂代理程式。
  3. 可自訂的聲音:從各種聲音和個性中進行選擇。
  4. 安全的 WebSockets:可靠、加密的 WebSocket 通訊。
  5. 伺服器 VAD 轉向偵測:智慧對話流處理,實現順暢的互動。
  6. Opus 音訊壓縮:以最小頻寬實現高品質音訊串流。
  7. 全球邊緣效能:低延遲 Deno Edge 功能確保無縫的全球對話。
  8. ESP32 Arduino 框架:最佳化且易於使用的硬體整合。
  9. 對話記錄:查看您的對話記錄。
  10. 設備管理和身份驗證:註冊和管理您的設備。
  11. 使用者身份驗證:安全的使用者身份驗證和授權。
  12. 與 WebRTC 和 Websockets 的對話:使用 NextJS webapp 上的 WebRTC 和 ESP32 上的 websockets 與您的 AI 對話。
  13. 音量控制:從 NextJS webapp 控制 ESP32 揚聲器的音量。
  14. 即時記錄:您的對話的即時記錄儲存在 Supabase DB 中。
  15. OTA 更新:ESP32 韌體的無線更新。
  16. 透過強制入口網站進行 Wifi 管理:從 ESP32 裝置連線到您的 Wifi 網路。
  17. 恢復原廠設定:從 NextJS webapp 將 ESP32 裝置恢復原廠設定。
  18. 按鈕和觸控支援:使用按鈕或觸控感應器來控制 ESP32 裝置。
  19. 無需 PSRAM:ESP32 裝置不需要 PSRAM 來運作語音轉語音 AI。
  20. Web 用戶端的 OAuth:OAuth 可供您的使用者管理他們的 AI 角色和裝置。

? 技術棧

成分 使用的技術
前端 Next.js、Vercel
後端 Supabase資料庫
邊函數 Deno/Supabase 上的 Deno 邊緣函數
物聯網客戶端 PlatformIO、Arduino 框架、ESP32-S3
音訊編解碼器 作品
溝通 安全性 WebSocket
圖書館 ArduinoJson、WebSockets、AsyncWebServer、ESP32_Button、Arduino 音訊工具、ArduinoLibOpus

? 核心用例

我們有一個Usecases.md文件,概述了Elato AI 設備或任何其他自訂會話 AI 設備的核心用例。

?️ 進階流程

 
 

專案結構

 
 

⚙️ PlatformIO 配置

[env:esp32-s3-devkitc-1]
platform = espressif32 @ 6.10.0
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200

lib_deps =
    bblanchon/ArduinoJson@^7.1.0
    links2004/WebSockets@^2.4.1
    ESP32Async/ESPAsyncWebServer@^3.7.6
    https://github.com/esp-arduino-libs/ESP32_Button.git#v0.0.1
    https://github.com/pschatzmann/arduino-audio-tools.git#v1.0.1
    https://github.com/pschatzmann/arduino-libopus.git#a1.1.0
 

? 重要統計數據

  • ⚡️延遲:全球往返 <1 秒
  • ?音訊品質:Opus 編解碼器,24kbps(高清晰度)
  • ⏳不間斷對話:長達 10 分鐘的連續對話
  • ?全球可用性:透過 Deno 進行邊緣運算最佳化

? 安全

  • 用於加密資料傳輸的安全性 WebSocket (WSS)
  • 選用:使用 256 位元 AES 進行 API 金鑰加密
  • Supabase DB 用於安全身份驗證
  • 所有表的 Supabase RLS

? 限制

  • 連接到邊緣伺服器時冷啟動時間為 3-4 秒
  • 不間斷對話時間限制為 10 分鐘
  • 超過掛鐘時間時,邊緣伺服器停止
  • ESP32 上沒有語音中斷偵測

? 貢獻

  1. 在 ESP32 上尋找語音中斷偵測
  2. 新增 Arduino IDE 支援
  3. 在 Deno Edge 上新增工具呼叫支持

我們歡迎貢獻

  • 分叉此儲存庫。
  • 建立您的功能分支(git checkout -b feature/EpicFeature)。
  • 提交您的更改(git commit -m 'Add EpicFeature')。
  • 推送至分支(git push origin feature/EpicFeature)。
  • 開啟 PR

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) *** 在线联系博主***
+1(323)529-5889

TeleGram联系

WhatsAPP联系

上一篇:

下一篇:

相关推荐

博客简介

本站CDN采用VmShell免费提供离中国大陆最近的香港CMI高速网络做支撑,ToToTel打造全球最快速的边沿网络支撑服务,具体详情请见 :https://vmshell.com/ 以及 https://tototel.com/,网站所有的文件和内容禁止大陆网站搬迁复制,谢谢,VPS营销投稿邮箱: admin@linuxxword.com,我们免费帮大家发布,不收取任何费用,请提供完整测试文稿!

精彩评论

关于VmShell INC

VMSHELL INC 是一家成立于2021年的美国云计算服务公司,总部位于怀俄明州谢里丹,专注于提供全球数据中心的虚拟机服务器租赁和全球金融服务。 公司旗下品牌包括VmShell 和ToToTel,业务覆盖亚洲和美洲以及欧洲,致力于为外贸企业提供高效、稳定的网络解决方案。购买CMI香港服务器

站点统计

  • 文章总数: 3140 篇
  • 草稿数目: 0 篇
  • 分类数目: 9 个
  • 独立页面: 0 个
  • 评论总数: 2 条
  • 链接总数: 0 个
  • 标签总数: 48026 个
  • 注册用户: 139 人
  • 访问总量: 8,659,862 次
  • 最近更新: 2025年12月5日