Milkのメモ帳

日々の思いつきを忘れないようにのメモ用です。

【AITuber】AIに画面を見せたら「1枚目はこんな状況、2枚目はこんな状況」と言い始めた話


こんにちは。Milkです。

自分の配信に組み込んでいるAIウェイトレス「アッシュ」に、ゲーム画面を見せて自発的に喋らせる仕組みを作りました。

ところがこれが一筋縄ではいかなくて、何度も失敗しながらようやく「らしい」発話ができるようになりました。その試行錯誤の記録です。


なぜ「自分から喋る」が必要だったか

アッシュはTwitchのチャットコメントに反応して返答することが基本の動作です。でも、コメントが来ない時間帯がある。

ゲームに集中しているときや、静かな時間帯に、ただ待機しているだけのAIは存在感が薄くなります。カフェのスタッフが無言で突っ立っているようなものです。

「画面を見て、自分から一言言える」AIになれば、コメントがなくても配信の空気が保てると思いました。


最初の実装:1枚の画像を送る

まず単純に、スクリーンショットを1枚撮ってGeminiに送り、「今どんな状況?」と聞かせてみました。

返ってきたのはこういうコメントでした。

「敵が奥に隠れています。気をつけて。」 「敵がいますね。集中して!」

見た目の描写になってしまいました。

状況を読んでいるのではなく、画像の中に何が写っているかを説明しているだけ。写真の説明文みたいなコメントです。

ゲームを「観ている」のではなく、「見ている」という感じ。


気づき:差分がないと状況はわからない

1枚の画像だと「今この瞬間」しかわかりません。

ゲームの状況というのは変化から読み取るものです。HPが減っている、敵が近づいてきた、ソウル差が広がった。これらは「前と比べてどう変わったか」を見て初めてわかります。

複数枚の画像を連続で送ることで、変化を認識させる方針に切り替えました。


0.5秒間隔で3枚にした理由

「連続した画像を送ればいい」とわかっても、間隔と枚数の調整が必要でした。

間隔が長すぎると(たとえば2〜3秒)、AIが「これは連続したシーンだ」と認識しにくくなります。別々の場面として処理してしまう。

0.5秒間隔・3枚という組み合わせは、「明らかに連続したコマである」とAIが判断しやすいギリギリのラインでした。


次の失敗:1枚ずつ説明し始めた

複数枚を送るようにしたら、今度は別の問題が起きました。

「1枚目は敵が右側にいます。2枚目は少し近づいています。3枚目は交戦しています」

1枚ずつ順番に説明するコメントが出てきたのです。

画像をちゃんと認識はしているけれど、「3枚の連続した流れ」として表現できていない。3枚の画像の報告になってしまっていました。


プロンプトの調整

「3枚を1つの流れとして表現するように」という指示をプロンプトに追加しました。

あわせて文字数の調整も必要でした。

  • 長すぎると:「〜ですね。そして〜です。また〜です。」という短文の連呼になる
  • 短すぎると:「接戦ですね」みたいな淡白すぎるコメントになる

ちょうどいい長さを探りながら、「50文字程度の独り言」という形に落ち着きました。


また別の問題:毎回状況変化を報告しすぎる

5分ごとに「ゲーム画面を分析してコメントする」を繰り返していたら、コメントが単調になってきました。

ゲームの動きが少ない場面が続くと、似たようなコメントが連続します。

「じりじりした展開が続いていますね」 「慎重な動きが続いています」 「静かな時間が続いていますね」

内容がほぼ同じ。


最終的な設計:画面の変化が少ない時はチャットを見る

「3枚の画像に大きな変化がない場合は、直近のチャットの流れに合わせてコメントする」という分岐を追加しました。

画面に変化がある → ゲームの状況についてコメント 画面に変化がない → 最近のチャットの会話の温度感に合わせてコメント

これで、ゲームが静かな場面でも会話の流れに自然に乗れるようになりました。


今の動作

5分ごとに、アッシュは自分から一言言います。

激しい戦闘の直後なら「さっきのやり取り、どっちに転ぶかわからなかったわ」みたいな反応が来るし、静かな展開が続いていてチャットも盛り上がっていれば、その話題に乗ってくる。

「配信を見ている誰か」が横にいる感覚に、少し近づいたと思っています。


よかったら実際の配信で確かめてみてください。

みるカフェ:https://www.twitch.tv/milk19873

前回の記事:

www.milkmemo.com