🎉

OpenAI RealtimeAPI Embedded SDK 入門 ②

2025/03/10に公開

前回の記事
https://zenn.dev/goroman/articles/c5f1013d81f756

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 がまだインストールされていない場合は、以下の記事などを参考にインストールしましょう。

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をインストールしている環境での手順です。

  1. Github から clone

    git clone --recursive https://github.com/openai/openai-realtime-embedded-sdk.git
    
  2. ターゲットプラットフォームの設定

    • 現在はlinuxesp32s3のみサポートされています
    • 以下のコマンドでターゲットを設定します:
    idf.py set-target esp32s3
    
  3. デバイス固有の設定

    • 現時点では特別な設定は不要です
    idf.py menuconfig
    
  4. 環境変数の設定

    • Wi-FiのSSIDとパスワード、OpenAI APIキーを設定します:
    export WIFI_SSID=あなたのWiFiのSSID
    export WIFI_PASSWORD=あなたのWiFiのパスワード
    export OPENAI_API_KEY=あなたのOpenAI APIキー
    

    これらの情報が外部に漏れないように注意しましょう。

  5. ビルド

    idf.py build
    
  6. デバイスへの書き込みまたは実行

    ESP32-S3の場合:

    idf.py flash
    

次回は実際に動作させる方法を説明します。

GitHubで編集を提案

Discussion