---
title: gpt-realtime-1.5 モデルでｽﾀｯｸﾁｬﾝ
tags:  #azure #ai  
author: [Hiroki Nomura](https://convert.docswell.com/user/shirokuma)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/YJ9PNZ5P73.jpg?width=480
description: なごあずのイベントで登壇した資料です。2026/03/14(土)15:30 〜 17:30 https://75az.connpass.com/event/383389/
published: March 15, 26
canonical: https://convert.docswell.com/s/shirokuma/KE14R6-stack-chan
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/YJ9PNZ5P73.jpg)

gpt-realtime-1.5 モデルで
ｽﾀｯｸﾁｬﾝ
2026/03/14 なごあず #75
しろくま
Hiroki, Nomura


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GJ8DK1YXJD.jpg)

プロフィール
しろくま
愛知県在住のエンジニアです。
技術関係のブログを書いたり、登壇したりしています。
所属
AzPoC部 #AzPoC
なごあず #75azu
Solution
Architect
AI
Engineer
Developer
Administrator
Network
Engineer


# Page. 3

![Page Image](https://bcdn.docswell.com/page/LJLMZQ4NER.jpg)

今日話すこと
組み込み開発初心者ですが、gpt-realtime-1.5 を使って
M5Stack CoreS3 をｽﾀｯｸﾁｬﾝにしておしゃべりできるようにしました！！
組み込みやIoTをやったことがない、ど初心者です。お手柔らかに優しいお気持ちでお聞きください…
1. ｽﾀｯｸﾁｬﾝって何？ &amp; 使った技術
2. システム全体のアーキテクチャ
3. ハマったポイントと解決策
4. 中継サーバ &amp; ツール呼び出し


# Page. 4

![Page Image](https://bcdn.docswell.com/page/47MYV1KQ7W.jpg)

ｽﾀｯｸﾁｬﾝってﾅﾆ？


# Page. 5

![Page Image](https://bcdn.docswell.com/page/P7R92LXKE9.jpg)

https://protopedia.net/prototype/2345
https://protopedia.net/prototype/4052


# Page. 6

![Page Image](https://bcdn.docswell.com/page/PJXQDW657X.jpg)

https://protopedia.net/prototype/5496


# Page. 7

![Page Image](https://bcdn.docswell.com/page/3JK9XV1RJD.jpg)

あたしの子は、アタマダケ


# Page. 8

![Page Image](https://bcdn.docswell.com/page/LE3W5MQGE5.jpg)

きっかけは。。。
Maki-san
https://x.com/yuma_prog


# Page. 9

![Page Image](https://bcdn.docswell.com/page/8EDKD69N7G.jpg)

ｽﾀｯｸﾁｬﾝとは？
「コミュニケーションロボットを、あなたの
手に」
M5Stackベースの手乗りサイズロボット
作者: Shinya Ishikawa さん
かわいい顔の表示と表情変化
視線制御・音声出力・サーボ制御
カスタムアプリ開発が可能
Apache 2.0 の完全オープンソース！！
ハード設計・3Dデータ・ファームウェア全公開
コミュニティ
GitHub 1,300+
Stars / 148 Forks
Discordコミュニティあり
Xのｽﾀｯｸﾁｬﾝアカウントは、ｽﾀｯｸﾁｬﾝに関して
投稿すると捕捉していいねくれます


# Page. 10

![Page Image](https://bcdn.docswell.com/page/V7PKXYZNJ8.jpg)

今回の実装で何ができるようになった？
ｽﾀｯｸﾁｬﾝ + gpt-realtime-1.5 で実現したこと
今回の実装で実現したこと:
話しかけるだけで
リアルタイム応答
AIが感情判断して表情が
自動変化
ボタン操作不要！
自然な対話
リップシンクで口の動きも
同期


# Page. 11

![Page Image](https://bcdn.docswell.com/page/2JVVLGWYJQ.jpg)

アーキテクチャ


# Page. 12

![Page Image](https://bcdn.docswell.com/page/5EGLX8DWJL.jpg)

システムアーキテクチャ
CoreS3
Node.js
Azure OpenAI
(ファームウェア)
(中継サーバ)
(Realtime API)
●マイク入力
●PCM16→base64
●音声認識 (STT)
●スピーカー出力
●バックプレッシャー
●応答生成 (LLM)
●アバター表示
●リップシンク
WebSocket
(LAN内)
●ツール呼び出し
Azureだったら、
AppServiceとか
ContainerAppsとかへ
WebSocket
(wss://Azure)
●音声合成 (TTS)
●VAD


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4JQY891Q7P.jpg)

なぜ中継サーバを介すのか？
CoreS3から直接Azure OpenAIに接続しない5つの理由
1
2
3
4
5
TLS接続の計算負荷
TLSハンドシェイクはESP32系には重く不安定。Node.jsで安定した暗号化接続を確保
音声エンコード変換
PCM16→base64変換を中継サーバが担当。CoreS3はraw PCMの送受信に集中できる
バックプレッシャー制御
Azureの応答速度とCoreS3の処理速度のギャップをバッファリングで吸収
ツール呼び出し処理
Function CallingのJSON解析・外部API連携をNode.jsで処理し結果だけ返す
APIキーの安全管理
ファームウェアへのキー埋め込みは漏洩リスク。サーバ側で秘匿管理


# Page. 14

![Page Image](https://bcdn.docswell.com/page/K74W2XRYE1.jpg)

M5Stack CoreS3を使いました。


# Page. 15

![Page Image](https://bcdn.docswell.com/page/LJ1YMNQNEG.jpg)

M5Stack CoreS3 ってどんなデバイス？
主要スペック
●プロセッサ：ESP32-S3 デュアルコア（
240MHz）
この小さなデバイスに
●マイク：ES7210 デュアルマイク
マイク・スピーカー・
ディスプレイ・Wi-Fi が
●スピーカー：AW88298（1W）
全部入ってる
●メモリ：Flash 16MB / PSRAM 8MB
●ディスプレイ：2.0&quot; IPS（320×240）タ
ッチ
●通信：Wi-Fi 2.4GHz / USB-C
→ 顔つきで対話させるのによさげ


# Page. 16

![Page Image](https://bcdn.docswell.com/page/GJWG34LM72.jpg)

CoreS3 の中身をもう少し詳しく
音声対話で重要なオーディオ周りの構成
オーディオ構成
その他のモジュール
マイク（ES7210）
ディスプレイ
デュアルマイク → ノイズに強い
2.0&quot; IPS (320×240)
サンプルレート: 16kHz / 16bit
→ アバター表情の表示に使用
スピーカー（AW88298）
Wi-Fi（ESP32-S3）
1W出力のクラスDアンプ内蔵
2.4GHz 802.11 b/g/n
サンプルレート: 48kHz / 16bit
→ WebSocketで中継サーバに接続
※ 同じI2Sバスを共有（後述）
PSRAM 8MB
→ リングバッファの確保に活用


# Page. 17

![Page Image](https://bcdn.docswell.com/page/4EZLV2MM73.jpg)

開発環境セットアップ
組み込み初心者でもこれだけ揃えればOK！
必要なツール
●VSCode + PlatformIO拡張
●C++ 拡張機能
●Node.js 18+
●Azureサブスクリプション
セットアップ手順
① Azure PortalでOpenAIリソース作成
East US 2 or Sweden Central
② Azure AI Foundryでモデルデプロイ
gpt-realtime-1.5 を選択
③ ファームウェア書き込み
config.h → Build → Upload
④ 中継サーバ起動
npm install → .env設定 → npm run dev


# Page. 18

![Page Image](https://bcdn.docswell.com/page/Y76W5VN57V.jpg)

gpt-realtime-1.5って？


# Page. 19

![Page Image](https://bcdn.docswell.com/page/G75MYD5G74.jpg)

従来モデルとRealtimeモデルの違い
従来は3ステップ必要だった処理が、Realtimeモデルでは1ステップに！！
従来方式（STT → LLM → TTS）
音声
入力
STT
音声認識
テキスト
LLM
推論
→ 変換のたびにレイテンシが発生。感情・抑揚が失われ
る
テキスト
TTS
音声合成
音声
出力
→ 低レイテンシ。抑揚・感情もそのまま伝わる
Realtimeモデル（Speech-to-Speech）
音声入力
gpt-realtime-1.5
音声 → 音声を直接処理！
音声出力


# Page. 20

![Page Image](https://bcdn.docswell.com/page/9J29G8NDER.jpg)

gpt-realtime-1.5 って何がすごいの？
Azure OpenAI の最新リアルタイム音声対話モデル
テキストではなく「音声で直接」やりとりできる！！
音声推論
文字起こし精度
指示追従
+5%
+10%
+7%
前世代比で改善
前世代比で改善
前世代比で改善


# Page. 21

![Page Image](https://bcdn.docswell.com/page/DEY4V6PMJM.jpg)

中継サーバ &amp; ツール呼び出し


# Page. 22

![Page Image](https://bcdn.docswell.com/page/VJNYMZ5378.jpg)

中継サーバの構成（TypeScript / Node.js）
CoreS3とAzureのプロトコル差を吸収する中継役
DeviceServer（ポート8080）
AzureRealtimeClient
●CoreS3からのWebSocket接続管理
●Azure APIへの常時接続管理
●PCM16バイナリ → base64 変換
●session.updated の待機
●JSONコマンド転送（表情・口パク）
●自動再接続（5秒間隔）


# Page. 23

![Page Image](https://bcdn.docswell.com/page/YE9PNZYPJ3.jpg)

ツール呼び出しで表情を自動制御！！
AIが会話の文脈から感情を判断して、自律的にアバターの表情を変える
1
2
3
4
5
ユーザーと
会話
AIが
感情判断
set_expression
ツール呼出
中継サーバ
が実行
CoreS3の
表情変更！
表情パターン: happy / sad / angry / sleepy / neutral
※プロンプトで感情判断ルールを指定


# Page. 24

![Page Image](https://bcdn.docswell.com/page/GE8DK16XED.jpg)

VAD（Voice Activity Detection）
サーバサイドVADで「ボタン操作なし」の自然な対話を実現！！
session.update の turn_detection で設定
500ms無音 → サーバが発話終了と判定 → 応答生成開始
従来の音声対話
① ボタンを押して話す
② ボタンを離す
③ 応答を待つ
今回（VAD）
① ただ話しかけるだけ！
② AIが自動で聞き取り
③ すぐ応答が返ってくる


# Page. 25

![Page Image](https://bcdn.docswell.com/page/LELMZQ9N7R.jpg)

学んだこと・まとめ
WebSocketリアルタイムストリーミング
双方向常時接続でのデータフロー管理を学んだ
ESP32のオーディオ制約
I2Sバス排他制御とメモリ管理の大切さ
プロデューサー / コンシューマーパターン
リングバッファとバックプレッシャーの実装
AIツール呼び出し
AIが自律的にハードウェアを制御する仕組み
リアルタイムペース調整
速度の不整合が起こる問題と解決方法
組み込み初心者でも最新AIモデルと組み合わせれば面白いものが作れる！！


# Page. 26

![Page Image](https://bcdn.docswell.com/page/4JMYV1ZQJW.jpg)

ハマったポイントと解決策


# Page. 27

![Page Image](https://bcdn.docswell.com/page/PJR92L6K79.jpg)

ハマり① I2Sバス排他制御
問題
解決策
マイクとスピーカーが同じI2Sバスを共有
→ 同時に使えない！切替ミスで音が壊れ
る
状態マシンで排他制御を実装
「停止 → 開始」の順序を厳密に管理
状態遷移フロー
IDLE
MIC
ACTIVE
MIC
STOP
SPK
START
SPK
ACTIVE
IDLE


# Page. 28

![Page Image](https://bcdn.docswell.com/page/PEXQDWM5JX.jpg)

ハマり② 音声データが速すぎる！！
AIは再生速度より速く音声を生成する（1秒分が0.3秒で到着）
→ バッファオーバーフロー &amp; WebSocketバッファも溢れる
解決① 1.5MBリングバッファ
解決② バックプレッシャー制御
PSRAMに約32秒分を確保
書込位置と読出位置を独立管理
→ 速度不整合を吸収！
1024バイトずつ分割してキュー管理
前チャンク送信完了後に次を送信
→ setImmediate() で実装


# Page. 29

![Page Image](https://bcdn.docswell.com/page/3EK9XVGRED.jpg)

製造業でも生成AI活用したい！
名古屋LLM MeetUp#11
3/19(木) @なごのキャンパス


# Page. 30

![Page Image](https://bcdn.docswell.com/page/L73W5MNG75.jpg)

Thank you !


