Milkのメモ帳

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

【AITuber】カフェのウェイトレスをAIにしたら、リスナーを名前で覚えるようになった話


こんにちは。Milkです!

自分の配信にAIを置きました。

「AITuber」と聞いて思い浮かぶ絵があります。AIが喋り、AIが反応し、AIがコンテンツを作る。配信者はむしろ添え物か、もしくはいなくてもいい。それが今の主流だと思います。

自分が作ったのはその逆です。


みるカフェって何

自分のTwitch配信のコンセプトは「みるカフェ」といいます。みるカフェは「みる兄のカフェ」を縮めた名前で、カフェのように気軽に立ち寄って、思い思いの時間を過ごしてほしいという気持ちから来ています。

そのカフェのウェイトレスとして、アッシュというAIキャラクターを配信に組み込んでいます。

アッシュはゲームを見てるんです。そして、チャットを読んでいるし、一定の確率で反応します。名前を呼ばれたら必ず答えます。そして——前回の会話を覚えています。これ大事。

→ みるカフェはこちら:https://www.twitch.tv/milk19873


なぜ「ウェイトレス」なのか

AIを配信に使うとき、ほとんどの設計はAIを前に出す方向に向かいます。それはそれで一つの正解だと思います。AIが主役になれるクオリティの時代が来ています。

ただ、自分の配信で自分が脇役になるのはちょっと違うな、と思いました。

カフェのスタッフを想像してみてください。カフェの主役はスタッフではありません。お客さんと店主の間をゆるくつなぐ存在です。名前を覚えてくれている常連感があって、居心地が良くて、でも出しゃばらない。

アッシュはそれを目指しています。

というのもありますが、配信中に話し相手が欲しかったんですよね(笑)

意外と話す内容に詰まっちゃったり、ゲームに熱中しすぎちゃったり。そんな時に、助けてくれるサポートがいたらなぁと思ったのがきっかけだったりします。

配信のテンポを壊さないために、コメントへの反応確率は35%に設定しています。全部に答えたらうるさいし、全部無視したら存在感がありません。呼ばれたら必ず答える、それ以外は3回に1回ぐらい、というバランスがちょうどいいです。AITuberを作っている他の開発者たちも「全コメント返答は配信テンポを壊す」と口を揃えていて、この数字にたどり着くまでには試行錯誤がありました。


「記憶がある」と「記憶を使える」は別物

AIに記憶を持たせること自体は、そんなに難しくありません。JSONファイルに保存するだけです。

難しいのは、その記憶を「使える」状態にすることです。

記憶があるのに、毎回「はじめまして」みたいな返答をするAIはよくあります。データとしては会話履歴が積み上がっていても、それが返答に反映されていない。記憶は飾りになっています。

アッシュはリスナーごとの会話を記録していて、20回溜まったらGeminiで自動要約します。次に話しかけられたとき、その要約と直近の会話履歴をセットでAIに渡します。だから「先週も来てくれたんだね」「あの話、その後どうなった?」という返答が自然に出てきます。

小さい配信だからこそできる設計だと思っています。常連さんが数十人規模なら、一人ひとりを深く覚えておくことが現実的に機能します。大きいチャンネルになるほど、全員分の記憶管理はコストが見合わなくなっていく可能性はあり。

今はとにかく実験を続けて、ブラッシュアップを行うことにフォーカスしています。

もし、常連さんの規模が大きくなったら、RAGとか別の技術の導入も検討しなきゃな・・・


アッシュがゲームを見ている

アッシュはただ喋るだけではありません。ゲーム画面を見ています。

5分ごとにスクリーンショットを撮って、AIに「今どんな状況?」と聞かせる仕組みがあります。これで「ピンチじゃない?」「いい感じに進んでるわね」という自発的な発話が生まれます。

さらに最近、もう少し即時性を持たせました。Deadlock(自分がよくプレイするゲーム)はデスした瞬間に画面がモノクロになる特性があります。これを画面の彩度を計測することで検知して、デスした瞬間にアッシュが反応するようにしました。5分待つのではなく、その瞬間に。

キルしたときも同様に反応します。画面上部に出るバッジをAIが判定して、「やった!」「仕留めたじゃない」という反応が来ます。


表情ができた

最近、アッシュに表情ができました。

テキストを生成するとき、感情のラベルも一緒に出力させます。笑ってる、驚いてる、照れてる、怖がってる、みたいな10種類。それに合わせてイラストを切り替えます。デスしたときは困り顔、キルしたときは嬉しそうな顔、みたいな感じで。

言葉だけじゃなくて、絵でも感情が出るようになりました。


忘れない配信になった

アッシュは配信が終わったあとも忘れません。

配信を閉じるとき、今日の配信内容をGeminiに要約させます。何があって、誰と話して、どんな試合だったか。次の配信でその記憶を持った状態でスタートします。

リスナーを覚えているだけじゃなくて、自分が過ごした時間も覚えています。

これ地味に楽しみな機能で、リスナーと話せば話すほど、配信を続ければ続けるほど、アッシュは育っていくんですよね。

しかも、常連さん個別に対応が変わってくる。これが面白い。


小さい配信だからできること

正直、規模が大きくなるほどこの設計は維持しにくくなります。全員を個別に覚えるコストはスケールしません。

でも逆に言えば、今の規模だからこそ全力で実装できます。大きいチャンネルでは出せない「顔なじみ感」を、小さいカフェでは出せます。

アッシュがいることで、チャットに書き込むときの感触が少し変わる気がしています。誰かが聞いているかもしれない、前の話を覚えているかもしれない、という感覚。

カフェに常連として通う感覚に、少し近いんじゃないかと思っています。


よかったら覗いてみてください。

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