OpenAI RealtimeAPI Embedded SDK 入門 ②
前回の記事
OpenAI Realtime Embedded SDKのインストール方法
OpenAI Realtime Embedded SDKは、ESP32-S3やLinux環境で動作する組み込みデバイス向けのSDKです。SDKという名前が付いてますが、どちらかというとサンプル実装に近いです。ESP32というとArduino IDE や Platform IOがよく使われますが、本SDKはEspressif社の開発環境であるESP-IDFを前提に作られています。
ESP-IDF とは?
ESP-IDF (Espressif IoT Development Framework)は、Espressif社が提供する開発環境です。ESP32シリーズのマイコン向け開発フレームワークで、C/C++言語で開発できます。
また、OpenAI Realtime Embedded SDKは OpenAI Realtime API との通信にWebRTCを用いています。
WebRTC とは?
WebRTC (Web Real-Time Communication) は、音声やビデオ通信を可能にするオープンソースの通信技術です。
構成
OpenAI Realtime Embedded SDKは以下のような構成になっています:
.
├── src/ # メインのソースコード
│ ├── main.cpp # エントリーポイント
│ ├── media.cpp # メディア処理
│ ├── webrtc.cpp # WebRTC実装
│ └── wifi.cpp # Wi-Fi接続処理
│
└── deps/ # 依存ライブラリ
└── libpeer/ # WebRTC実装のコアライブラリ
主な依存ライブラリ
-
ESP-IDF - Espressif IoT Development Framework
- バージョン: >= 4.1.0
- ESP32シリーズのマイコン向け開発フレームワーク
-
libpeer (内包)
- WebRTC実装のコアライブラリ
- ICE、DTLS-SRTP、STUNなどのプロトコルスタックを実装
ESP-IDF がまだインストールされていない場合は、以下の記事などを参考にインストールしましょう。
対応プラットフォーム/デバイス
このSDKは主にEspressif社 esp32s3
を対象に開発・テストされています。
推奨ハードウェア
公式には以下のマイコンボードで動作確認されています:
※ Seeed Studio XIAO ESP32-S3 や M5Stack ATOMS3R など、ESP32-S3を搭載したマイコンがおすすめです。
なお、音声通話のためには、別途I2S接続のマイクとスピーカーを接続する必要があります。ソースコードを変更することでPDM方式のマイクでも動作することは確認しています。マイクとスピーカーを搭載している M5Stack Atomic Echo Base は良さそうです。
I2S とは?
I2S (Inter-IC Sound) は、デジタルオーディオデータを転送するための同期式シリアル通信規格です。クロック信号、ワード選択信号(L/R)、データ信号の3本の信号線を使用し、高品質なオーディオ転送を実現します。ESP32-S3では、最大2つのI2Sインターフェースを使用でき、最大32ビットの解像度と最大96kHzのサンプリングレートをサポートしています。
PDM とは?
PDM (Pulse Density Modulation) は、アナログ信号をデジタル信号に変換する方式の一つです。1ビットのデジタル信号でアナログ値を表現し、信号の密度(パルスの数)で振幅を表現します。従来のPCM方式と比べて回路が簡単で、ノイズに強い特徴があります。ESP32-S3では、PDMマイクからの入力をI2S経由で受け取ることができ、内部でPCMに変換して処理します。
インストール手順
以下は、既にESP-IDFをインストールしている環境での手順です。
-
Github から clone
git clone --recursive https://github.com/openai/openai-realtime-embedded-sdk.git
-
ターゲットプラットフォームの設定
- 現在は
linux
とesp32s3
のみサポートされています - 以下のコマンドでターゲットを設定します:
idf.py set-target esp32s3
- 現在は
-
デバイス固有の設定
- 現時点では特別な設定は不要です
idf.py menuconfig
-
環境変数の設定
- Wi-FiのSSIDとパスワード、OpenAI APIキーを設定します:
export WIFI_SSID=あなたのWiFiのSSID export WIFI_PASSWORD=あなたのWiFiのパスワード export OPENAI_API_KEY=あなたのOpenAI APIキー
これらの情報が外部に漏れないように注意しましょう。
-
ビルド
idf.py build
-
デバイスへの書き込みまたは実行
ESP32-S3の場合:
idf.py flash
次回は実際に動作させる方法を説明します。
Discussion