Skip to content

開発記録(雑)

RealtimeAPI切り替えでサーバーが必要になりました。

GoogleCloudRunというサービスでデプロイしました。

Cloud Run サーバは:

  • Realtime 用エフェメラルキー発行エンドポイント /realtime/secret

  • RAG プロキシ /rag(VectorStore: vs_68abce2bdb9481919c6eea19312cca63 固定)

    を備えたサーバとして動作します

Service URL: https://realtime-cloudrun-bridge-867568173731.asia-northeast1.run.app

サーバーデプロイコマンド

html
gcloud run deploy realtime-cloudrun-bridge `
  --source . `
  --region asia-northeast1 `
  --allow-unauthenticated `
  --set-env-vars "OPENAI_API_KEY=$env:OPENAI_API_KEY,RESPONSES_MODEL=gpt-4o-mini,RAG_MAX_RESULTS=5,VECTOR_STORE_IDS=vs_68abce2bdb9481919c6eea19312cca63"

主要ログの表示色

#90ee90

  • [x] トークログ
  • [ ] マイクオンオフ使用
  • [x] RAG機能とオンオフ機能
  • [x] TTSオンオフ機能
  • [x] メモリリセット機能
  • [ ] 開幕音声/アイドル音声
  • [x] モデル選択とボイスモデル選択
  • [x] Statusログ
  • [x] デバッグログをローカルで保存する

Realtimeで使えるボイスモデル記載ドキュメント

https://platform.openai.com/docs/api-reference/realtime-beta-sessions/create-transcription

詳細画像表示機能はマーカー(Hotspot)をクリックで表示、任意の場所をクリックで非表示ができます。

  1. Tourmakerで各シーンを作成するときに適用したパノラマ画像名を自動でアイテム名に適用
  2. 画像名に対応するプロンプトをそれぞれYamlで設定
  3. マイクオン時とパノラマ画像切り替え時にシーン上でアクティブなアイテム名から対応するプロンプトを自動でAIが読み込みユーザーが見ているシーンを認識する

Statusログの取得

Statusログは Quest 実機の以下に保存されます。

/sdcard/Android/data/com.Xseeds.PanoramaViewerDemo/files/status_log.txt

ローテーション済みの旧ログは status_log.txt.prev に保存されます。

1. 準備

  • Android Platform Tools をインストール(adb version が実行できればOK)
  • Meta Quest を 開発者モード に設定し、PCとUSB接続
  • ヘッドセット内で「USBデバッグを許可」

2. 保存先フォルダでコマンドプロンプトを開く

ログをコピーしたい自分のPC上の保存先フォルダをエクスプローラで開き、

  • 空白部分を Shift + 右クリック「PowerShellウィンドウをここで開く」 または 「コマンドプロンプトをここで開く」

これで保存先がカレントディレクトリになります。

3. 接続確認

bash
adb devices

device と表示されれば接続成功。

4. ログを取得

保存先フォルダで以下をそのままコピペして実行します。

bash
adb pull "/sdcard/Android/data/com.Xseeds.PanoramaViewerDemo/files/status_log.txt"
  • このフォルダに status_log.txt がコピーされます。
  • 旧ログも必要な場合は:
bash
adb pull "/sdcard/Android/data/com.Xseeds.PanoramaViewerDemo/files/status_log.txt.prev"

保存先パスは各自の環境に依存します。自分のPCで開いたフォルダがそのまま保存先になるよう、必ずそのフォルダでコマンドを実行してください。

QuestへのRealtime向けプロンプト導入コマンド

html
adb push app_config.yaml /sdcard/Android/data/com.Xseeds.PanoramaViewerDemo/files/
adb push ScenePrompt.yaml /sdcard/Android/data/com.Xseeds.PanoramaViewerDemo/files/
  • [x] シーン設計整理
  • [x] 収集した情報の詳細確認する手段の実装
  • [x] トークセッションのリセット機能
  • [x] UI設計の整理

AI model

Voice model

Talk Log/History Reset

Session Reset

UI案

  • [x] UIをハントラで操作できるようにする
  • [ ] UIの各機能の実装

Settingボタン→SettingMenuをアクティブ

TalkLogボタン→TalkLogMenuをアクティブ

Infoボタン→InfoMenuをアクティブ

Backボタン→MainMenuをアクティブ

image.png

README的なもの作りますが一旦簡易的に操作方法以下に記載します。

Aボタンでマイクオンオフ切替です、マイクオンの時に話しかけて下さい。

右コントローラースティック押し込みでUIメニューがコントローラー周りに表示されます。

Setting→モデル選択

TalkLog→会話のログ(表示していないときのログが残らないので修正予定)

Info→収集した情報を確認できます。NextInfoボタンで表示する情報の切り替え。

SessionReset→AIとのトークセッションをリセットして新しい記憶で始めることができます。

SceneReset→シーンをリセットします。アプリの再起動と同義です。情報収集機能のリセットを兼ねます。交代するときとかに使う想定。

シーン上にある赤いポインター→トリガークリックで情報画像が表示されます。任意の場所もう一回トリガークリックで非表示。一回目でInfoUIに情報として追加され、自動で非表示になる。

ユーザーがどこにいて何を見ているのか理解してくれます。 プロンプトは調整中なので変な回答するかもです。

プロンプトは添付Yamlをクエストにダウンロードお願いします。

格納フォルダをターミナルで開いて以下コマンドでインストール。

11/11

SessionReset後にPromptを再度読み込ませないとシミュレーションに沿った回答をしてこない

InfoItem

ギャラリービュー形式でItem感を出したらいいかも

最適なプロンプト調査して調整https://cookbook.openai.com/examples/realtime_prompting_guide

起動時ガイダンス(GoogleTTS)

TTS分割再生(初回生成の時間短縮)

ステータスUIの見た目改善

StatusUI整えたい

GeminiRealtimeテスト


Author: 村井 | Source: 村井\uPano×MetaQuest3でパノラマビューアプリデモ開発\v1 8\開発記録(雑) 2a8aba435ee780e78081dbe20c7e6431.md