ESP32-S3マイコンボードを使用してリアルタイムAI音声対話を実現するオープンソースプロジェクト「ElatoAI」がGitHubで公開された。開発者のAkash Deb氏が2025年8月20日頃に発表したもので、OpenAI Realtime APIとセキュアWebSocketを組み合わせて、最大15分間以上の連続音声対話を可能にしている点が特徴だ。
ElatoAIは、ESP32-S3デバイス、Denoエッジ関数、Next.jsフロントエンドの3つのコンポーネントで構成されている。ユーザーがESP32-S3デバイスに話しかけると、音声データがセキュアWebSocket経由でDenoエッジサーバーに送信され、OpenAI Realtime APIで処理された後、AI生成音声として再生される仕組みだ。
システムは12kbpsのOpus音声コーデックを採用し、高音質でありながら低帯域幅での音声通信を実現している。Denoエッジ関数により世界中どこからでも2秒未満のレイテンシーで応答でき、最大17分間の連続対話テストにも成功している。
技術的には、ESP32-S3でPSRAMを必要とせずに動作する設計が特徴的だ。ArduinoJson、WebSockets、ESPAsyncWebServer、arduino-audio-tools、arduino-libopusなどのライブラリを組み合わせて実装されている。音声認識にはサーバー側のVAD(Voice Activity Detection)を使用し、スムーズな会話フローを制御している。
デバイス管理機能も充実しており、Webアプリからのボリューム制御、OTA(Over The Air)ファームウェア更新、WiFi管理用キャプティブポータル、工場出荷時リセット機能を搭載している。ボタンまたはタッチセンサーでデバイス制御が可能で、ピッチファクター調整によりカートゥーン風の音声キャラクターも作成できる。
ElatoAIでは、異なる個性と音声を持つカスタムAIエージェントの作成が可能だ。Next.jsで構築されたWebアプリケーションでキャラクター設定を行い、作成したAIキャラクターをESP32デバイスに「送信」して会話できる。会話履歴はSupabaseデータベースに保存され、リアルタイム文字起こしも提供される。
セキュリティ面では、セキュアWebSocket(WSS)による暗号化データ転送、オプションでの256bit AES APIキー暗号化、Supabaseによるセキュア認証、全テーブルでのSupabase RLS(Row Level Security)を実装している。
ハードウェア構成として、開発者は1500mAhのLiPoバッテリー(3.7V)とTP4054充電モジュールを使用したポータブル構成を紹介している。これにより、映画「TED」のキャラクターのような音声で対話できるデバイスを実現している。
現在の制限として、エッジサーバーの制限時間を超過すると停止する問題、ESP32での音声割り込み検出未対応、3秒~4秒のコールドスタート時間などがある。今後の改善として、ESP32での音声割り込み検出機能、Arduino IDE対応、Denoエッジでのツール呼び出し機能の追加が予定されている。
プロジェクトはMITライセンスで公開されており、フォーク、機能追加、プルリクエストによる貢献を歓迎している。開発環境にはPlatformIO、Supabase CLI、Docker Desktopが必要で、ローカル開発とホストされたエッジサーバーの両方に対応している。