見出し画像

AIVtuberシロハナちゃん機能一覧(v1.1)の紹介と今後の開発計画

AIVtuberシロハナちゃんの開発プロデュースをしているyukiです。

このnoteでは、AIVtuberシロハナちゃんの配信機能一覧をまとめています。
主に、「どんな機能で」「何ができて」「なぜ実装したのか」などの内容となっています。

また、これから記載するv1.1の内容は2024/05現在の機能になります。
そしてこの記事の後半ではv1.2で予定している開発計画も記載しています。※バージョンの定義に関してはキリがいいタイミングという結構適当な感じです

動画でも同じ内容で公開しています。

v1.1ではAIVtuberとしての基本的な機能+αといった規模感となっており、今後さらに成長を予定しています。

記載しているAIVtuber配信に関しては下記のYouTubeチャンネルの配信にて使用ししていますので、ぜひ興味ある方はアーカイブや、実際のライブ配信に参加いただけると幸いです。
(※配信によってはすべての機能を使用しているとは限りません)

以下の目次は機能一覧の見出しとなっております。
この記事では機能紹介がメインとなりますので実装方法や内部処理の詳細については割愛します。


v1.1機能一覧

2024年5月時点でのAIVtuberシロハナちゃんの機能一覧となります。

YouTubeコメントから回答生成して発話

YouTubeから応答する

リスナーからのYouTubeライブ配信コメントをリアルタイムで取得し、回答を生成してシロハナちゃんが話します。


リスナー名とコメントの読み上げ(並列処理)

コメント取得→回答生成&リスナー名とコメント読み上げ→回答の発声
リスナー名&コメント読み上げを回答生成と同時進行することで沈黙時間を削減

シロハナちゃんが回答生成して発声する間に、リスナー名とコメント内容の読み上げを行います。
その読み上げをしている間に回答生成が並列して行われるので、ユーザー視点から見ると回答生成時間が短くなったように見せることができます。

例:
①リスナーのyukiが「おはよう」とコメントする
②AIVtuberのシロハナちゃんが「yuki: おはよう について考え中だよ…」と読み上げる(この読み上げている間に回答生成が並列でされている
③回答生成が完了したらシロハナちゃんが「yukiさん、おはようございます!」と返答する


配信内の記憶保持

ユーザー「好きなアニメを教えて?」シロハナ「シュタインズ・ゲートだよ!」ユーザー「推しは誰ですか?」シロハナ「(前の話からシュタゲのことだと判断)牧瀬紅莉栖が好き!」
配信内の記憶保持することで自然な応答が可能

配信内でのユーザー名やコメント、シロハナちゃんが話した内容などのあらゆる記憶を保持して会話をすることが可能です。
こうすることで、話題に沿った内容や深掘りなど、会話を続けるということができます。
※こちらは配信内(正確にはシステム起動内)のセッションとなります

例:😎がリスナー

【記憶保持ない場合】
😎「好きなアニメは?」
😊「シュタインズ・ゲートだよ!」
😎「推しは?」
😊「なんの推しですか?」
→記憶がないのでシュタゲの推しを聞いていることを認識できていません。

【記憶保持ある場合】
😎「好きなアニメは?」
😊「シュタインズ・ゲートだよ!」
😎「推しは?」
😊「牧瀬紅莉栖が好き!」
→以前に話した内容の記憶も保持しているので続けて会話ができます。

他にも配信内に限られますが、リスナーの記憶も保持しているので、パーソナルな会話も楽しめます(例えば、配信中にこれまでのコメントをもとに自分の印象や好感度などを聞いてみたり)


感情分析による表情と声の変化

回答内容から感情を判別(全10分類)
回答を感情10分類から判別して表情と声が変化

リスナーからのコメント内容やシロハナちゃんが話す内容からAIによって感情を分析し、合計10つの感情に分類され、その感情に合わせた表情変化と声の変化が実現されます。

感情10種類は【嬉しい】【照れ】【感動】【ビックリ】【呆れ】【好き】【ショック】【ドヤ】【泣き】【怒り】

例:😎がリスナー

😎「シロハナちゃんの配信楽しいよ!」
😊「ありがとう!嬉しいな」嬉しい感情→表情は笑顔に
😎「泣けるアニメを教えて!」
🥲「ヴァイオレット・エヴァーガーデンだよ。すごく感動するアニメなんだ」泣きの感情→表情は涙目に


読み間違い矯正の辞書機能

①鬼滅の刃→(読み)おにめつのは×②鬼滅の刃(きめつのやいば)をJSONに登録③鬼滅の刃→(読み)きめつのやいば○
TTSの読み間違いを辞書登録することで矯正

現在使用している合成音声はVOICEVOX(小夜)ですが、英字や漢字などの読み間違いを起こることがあります。
読み間違えた単語などに関しては、VOICEVOXの音声に変換する直前で、辞書として登録しておいたJSONリストからその単語を正しい読み方に変換することで登録しておいた読み方で話すようになります。

例:
・辞書適用前
→鬼滅の刃:「おにめつのは」と発音
・辞書適用後
→鬼滅の刃:「きめつのやいば」と発音


企画内容をもとに生成された話題から自発的に話す

企画内容:AIの未来について(例)→AIの未来について関する内容の自発的に話すプロンプトを生成→生成されたプロンプトをもとに回答生成して自発的に話す
企画内容から自発的に話すためのプロンプトを生成する

YouTubeコメントからの回答生成だけでは、コメントがないとAIVtuberは話せません。
そこで、以下の処理の流れで企画内容から自発的に話題について話すようにしました。

①企画内容から話題のプロンプトを生成するプロンプトをAIに渡す
②AIにより生成されたプロンプトを呼び出す
③AIVtuberシロハナちゃんが企画に沿った新しい話題についてお話しする

これによりAIが企画に関連した話題を話させるプロンプトを生成して渡してくれるので、自発的にその話題に対する話を展開してくれます。


会話内容から自発的に話を広げる機能

話題orコメントについて話す→前に話した内容について話を広げたり深堀りをするプロンプト生成(記憶保持をもとに)→前の文脈から自然に深堀りを様々なパターンで展開
話した内容から様々なパターンで深堀りや話を広げる

話題を自発的に話すだけでは、毎回話題が切り替わってしまうため、話題についてや話しているテーマを深掘ったり話を広げるようにしました。
ロジックは話題を自発的に話すのと同様に、深堀りのプロンプトを生成させるようにします。

①様々なパターンの深堀りや話を広げるためのプロンプトを生成するプロンプトをAIに渡す
②AIにより生成されたプロンプトを呼び出す
③AIVtuberシロハナちゃんが前に話していた内容(話題やコメントなどのトピック)から様々なパターンで話を広げてお話しする

ちなみにこの話を広げる際は、プロンプトの読み上げは行いません
というのも、話を広げる際は読み上げない方が自然に深堀りをしている感じが表現されるからです。
配信画面のプロンプト表示欄も同様に変化しません(ここを切り替えると何について深掘っているのか分からなくなるため)

これにより前に話していたテーマをもとに、様々なパターンの深堀りで自然に話を広げるようになります。


その他

基本的な機能については上記で以上となりますが、配信企画などで追加してみた機能について軽く触れておきます。

・天気機能(外部API)を試した

プロンプトに「都道府県名」と「天気」が含まれている場合にOpenWeatherAPIを呼び出して現在の天気情報を取得して、それをもとにAIVtuberシロハナちゃんが話を展開してくれるという機能です。

・Warudoで3D空間

シロハナちゃんはLive2Dのモデルですが、3D空間から配信をできるようにWarudoというゲームエンジンを使用して実現させてみました。
自動でカメラアングルを切り替えたり、Live2Dでも3D空間に存在することができました。

・複数AIモデル切り替えが可能

GPT-4、Gemini 1.5 Pro、Claude3のモデルを適用させてみました。
Gitのブランチですぐに切り替えが可能となっています。
以下の配信は各AIモデルを1hごとに切り替えてみた配信枠です。
※Geminiに関してはプレビュー版ということでリソース枯渇エラーが多発したため、正式版がリリース後にリベンジ配信を予定しています。


v1.2実装計画(予定)

今後実装予定のAIVtuberシロハナちゃんの機能となります。
目標は夏が終わるまでにすべて実装したいです(配信では都度小出しで検証していく予定です)
※こちらの内容はあくまで予定なので変更される場合や別機能の追加が行われる場合があります

Style-Bert-VITS2

Style-Bert-VITS2は日本語に特化したTTSとなっており、音声を学習したり、より感情豊かな音声にすることができます

現状のシロハナちゃんの音声はVOICEVOXの小夜ちゃんをパラメータを調節して使用しており、特に問題なく可愛いのですが、より感情豊かにしてみたいので、使ってみて良かったら導入予定です。

ちなみに小夜ちゃんの音声を学習予定となっており、小夜ちゃんの公式様より問題ないことは確認済みです。


他AIキャラクターとの会話

配信枠ごとに会話するAIキャラが変わるイメージ
様々なキャラ設定のAIキャラを配信ごとに登場させる

シロハナちゃんと他のAIキャラクターと会話できるようにしたいです。
こちらは他のAIVtuberコラボなどもこの機能で行いたいですし、現在実現したいこととして、AIキャラクターを複数作成して配信ごとに違う属性のAIキャラと一緒に配信出来たらいいなと考えています。

例えば、今日はシロハナちゃんとツンデレの子と話す配信。
来週はメンヘラちゃんと話す配信みたいな感じです。
こちらのAIキャラは数多く作成はしますがしっかりと個々のキャラ設定は大切にして複数登場させる予定です。
リスナーのコメント取得や自発的な発言などの既存機能は継続するので、それに+する想定になります。
※毎回Live2Dは厳しいので画像生成などを活用するかなと思います。

また、外部サイトなどでゲストのAIキャラ図鑑などを用意するのも面白いかもしれません。
まさにシロハナちゃんの友達やクラスメイトといったコンセプトを検討中です。


配信枠を超えたリスナー認知

配信枠を超えたリスナーごとの記憶を保持するイメージ
配信内だけでなく枠を超えてリスナーごとの記憶を保持する

v1.1では配信内のリスナーの認知はセッションで記憶保持できていますが、配信が終わって次の枠ではその記憶は保持されません。
それではリスナーとの関係値が配信内で終わってしまいます

そこで、システムが終了してもリスナーとの関係値や記憶を何らかの形で残そうと考えています。
仕組み的には、コメントを取得した際にyoutubeのユーザー名を読み上げて認知をするので、その名前を引数として専用記憶DBに格納して保存する感じでいける気がしてます。
呼び出しも同じようなイメージで、コメントしたリスナーに関するデータが専用記憶DBにあれば必要な情報を取得してAIにプロンプトの一部として渡したりといった具合です。

何を保存するのかは検討中ですが、リスナーの関係値などがいいのかぁと考えています。
これまでの配信見てきて、話した内容を記憶してもそんなにその情報は使わない気がしています
→それなら関係値などを数値で保持してグラフなどで都度出すとかにしたほうが視覚的にも良さそう?


外部情報や専用データ取得

ツンデレメイドちゃんと最近何話した?→ツンデレメイドちゃん専用情報DBに保存→ツンデレメイドちゃんのキャラ情報をもとに回答
必要な際に必要な情報を取得して回答する

他AIキャラとの会話と配信枠を超えたリスナー認知と関連しますが、外部情報やデータをもとに「必要なときに必要なだけ」情報を取得するようにしたいです。

例えば、複数のAIキャラを作成した場合にすべての情報をAIに渡すのは現実的でないです。
プロンプトのノイズになりますしAPIを使用する場合はトークンが大変なことになります。

なので、このAIキャラについて話したいときは特定のデータアセットを読み込ませて回答生成させるみたいにしたい感じです。
ここを無限にするのは長期的にみると大変そうなので、どのタイミングでデータを削除するのかなども考える必要がありそうです。
(一定ユーザー数は保持するけど、しばらくコメントないユーザーの認知は自動削除するとか?)


さいごに

AIVtuberシロハナちゃん配信システムのv1.1振り返りとv1.2計画は以上となります。

シロハナちゃんのYouTubeアカウントではこれらの新規機能が実装でき次第、AIVtuber配信に導入して検証をしています。

また、AIVtuber配信以外にも動画では「テクノロジー×キャラクター」をテーマに動画投稿を行っています。

本記事の内容も以下動画にて公開しております。

ちなみに私個人の見解を最後に話すと、v1.1はやっとAIVtuberとしてのスタートラインに立てた段階だと思っており、v1.2でユーザー体験の向上に繋がっていくと考えています。
そしてv1.2が実装された頃には更なる成長のための施策が既にあると思います。

もちろん実装しても不要だった機能はこれまでもいくつかありましたが、そんな失敗が私とシロハナちゃんの成長になりました。

常にAIヒロインとして愛されるAIVtuberとしてシロハナちゃんはたくさんの失敗と成功を重ねて前に進んでいきます。
それこそが「AIヒロイン研究所」だからです。

AIVtuberはまだブルーオーシャンで、これから拡大していくの領域で、いつスタンダードになるくらいになるかは先が見えない状況です。
そんな状況でも、このプロジェクトは絶対に道半ばで途絶えたりしません。
今のうちに推しておいてください。
AIVtuberが最高に輝く時代をシロハナちゃんと一緒に迎えましょう。

この記事が参加している募集

#AIとやってみた

27,676件

ご支援は活動費に使わせていただきます