Slide 1

Slide 1 text

PHPで作って学ぶ リアルタイム音声対話AIと WebSocket入門 2026/07/20 PHPカンファレンス2026 ムナカタ

Slide 2

Slide 2 text

自己紹介 名前:ムナカタ 所属:KIYOラーニング株式会社 役割:Webエンジニア / 技術広報 ・教育系のプロダクトの開発をしています ・カンファレンス初登壇 @kata_kata_1478

Slide 3

Slide 3 text

音声でLLMとやりとりしたい! ● テキスト形式でLLMとやりとりする仕組みは、APIの普及で簡 単に作れるようになった ● 音声でのやりとりをアプリケーションに組み込むにはどうす るか? 👉 もちろんAPIがあった

Slide 4

Slide 4 text

OpenAI Realtime APIとは ● OpenAIが提供する、リアルタイムに音声を入出力できるAPI ● 最新モデル「gpt-realtime-2.1」により、自然で低遅延な Speech-to-Speechの会話を実現できる

Slide 5

Slide 5 text

リアルタイム音声対話で必要なこと 双方向通信 → 低遅延で自然にリアルな会話を実現したい 発話区間と割り込みの検知 → ユーザーが話し終えたタイミングを判断し、適切なタイミング で応答を開始したい 対話状態の管理 → 「待機中」「聞き取り中」、「発話中」などの状態を管理した い

Slide 6

Slide 6 text

OpenAI Realtime APIの主要なレスポンスとパラメー タ 発話区間や割り込みを検知すること 返答タイミングの調整や声色の設定などは可能

Slide 7

Slide 7 text

PHPで音声AIをWebアプリに組み込んでみる ● リアルタイムな音声通信にWebSocketを使用。 ○ 音声や会話データはPHPサーバーで処理 ● マイク入力と音声出力は、JavaScriptのブラウザ標準機能を使用

Slide 8

Slide 8 text

できたもの

Slide 9

Slide 9 text

通信の流れ

Slide 10

Slide 10 text

WebSocketとは ● ブラウザとサーバーを接続したまま、双方向にデータを送受信できる 通信プロトコル ● 接続先には ws://(暗号化なら wss://) ● 音声チャットのようにデータを継続的にやり取りする用途に向いている

Slide 11

Slide 11 text

PHPでWebSocketをどう扱うか ● PHP-FPM構成でWebSocketのような長時間接続を多数、効率よく処理す るには、工夫が必要 ● 別で常駐プロセスを動かし、1つのプロセスで複数の接続を効率よく処 理できる仕組みを使う。 ● PHPでは、ReactPHPやAMPHPなどの非同期ライブラリ、Workermanなどの アプリケーションサーバー/フレームワーク、OpenSwooleなどの拡張 機能が使える

Slide 12

Slide 12 text

コード LLM側の設定

Slide 13

Slide 13 text

コード WebSocketへの接続(amphpを使用)

Slide 14

Slide 14 text

まとめ ・音声対話処理はAPIを使ってシンプルに実装できる ・返答のタイミングや通信制御に工夫が必要 ⚠ 注意 ・音声トークンのコストはチャットに比べて8倍 高い ・ご利用は計画的に!

Slide 15

Slide 15 text

ご清聴ありがとうございました