やりたかったこと
ゲーム配信画面を見ながら、AITuberが状況を把握して喋る構成を作りたかった。
最初のゴールは以下。
- OBSのゲーム画面をスクリーンショット取得
- OpenAIのVision対応モデルで画面要約
- 要約をAITuberKitへ送信
- AITuberKit側(VOICEVOX設定)で発話
構成
今回作ったのは外部ブリッジ(Python)で、構成は以下。
OBS WebSocketからスクショ取得OpenAI Responses APIで画面要約(1〜2文)AITuberKit /api/messagesへtype=user_inputでPOST- AITuberKit側の既存設定(AIモデル + VOICEVOX)で返答・発話
実装メモ
ブリッジはDockerで動かした。
主な設定値はこんな感じ。
OBS_WS_URL=ws://host.docker.internal:4455
OBS_WS_PASSWORD=...
OBS_SOURCE_NAME=ウィンドウキャプチャ
CAPTURE_INTERVAL_SEC=60
OPENAI_MODEL=gpt-4.1-mini
ENABLE_AITUBER_POST=true
AITUBER_BASE_URL=http://host.docker.internal:3000
AITUBER_CLIENT_ID=(AITuberKitと一致させる)
AITUBER_TYPE=user_inputハマった点
1. OBS WebSocketがそもそも有効化されていなかった
TimeoutError が続いた原因はこれ。
- OBSの
Tools > WebSocket Server SettingsでEnable WebSocket serverをONにして解決。
2. 接続先ホスト
Docker化して host.docker.internal 経由に寄せた。
AITuberKit側の設定で必要だったこと
その他タブ外部からの指示を受け付けるをONClient IDをブリッジ側AITUBER_CLIENT_IDと一致させる
結果
最終的に以下を確認できた。
- OBS接続成功
- スクショ取得成功
- OpenAIで要約生成成功
- AITuberKitへ要約POST成功
- AITuberKit側でVOICEVOX発話まで確認
スクショ要約をAITuberKitに渡して、VOICEVOXで喋らせるところまでは確認できた。
次にやると良さそうなこと
- 同一画面の重複発話をもう少し抑える(差分閾値の調整)
- 要約プロンプトをゲームジャンル別に分岐
- 発話頻度を固定60秒から可変化(戦闘中だけ短くする等)
- スクショの要約が意味不明なことが多いので、どういうゲームなのかとか事前に必要なのかも