見出し画像

第3回AItuberワールド発表会

7月26に開催された第3回AItuberワールドの時の発表の資料と解説です。

アジェンダ
これまでの経緯

私について。
組込み用PCボード開発のHWエンジニアで、ソフトは素人、独学、動けばいいや、みたいな感じで開発しています。AIは、産業用検出系をやってたときは仕事と認識してましたが、AItuberは仕事以外の空き時間や夜、休日に開発してるので、微妙かな。

これまでの経緯です
Lenteさんのブログ面白くて、アニメ画像やりたいかな~とか感じて。当時はCG-GANですね。その後、Making Anime Face With Style-GANでこれはやらなきゃって、すぐはじめました。去年にはmangacha.comが完成してですね、たまたまリリース目前MIMIC騒動が勃発したので、ひっそり公開し、関係者だけにアナウンス。めぐはここで生成された顔が始まりです。年末から2月にかけてはTalkingHead-3を用いた動画作成アプリをやってたんですけど、1月中順に転んで鼻骨骨折で救急搬送手術入院する羽目に。なので入院中に情報収取に専念しました。AItuberを知ったのもこの時期。面白い、次はこれかなと。動画生成アプリがあってTalkingHeadを動かしていたので始めようと、これを利用することにしたんです。

mangagacha.comサイト    URL: https://mangacha.com
アニメ作成サイト  URL: https://anime.mangacha.com 
キャラクタ作成とストリーミング

いよいよ開発なんですけど、当初は配信するつもりはなかったんです。
プロモーションとか、会社紹介とか。。。
StyleGANで生成された顔に適当な胴体つけてStableDiffusionのinpaintで胴体を作成しました。その後動画作成アプリでTalking-Headのテンプレに変換。
TalkingHeadはテンプレ画像でないとうまく動いてくれないんです。 
動画作成アプリで任意画像から自動テンプレ画像生成機能を実装していたので、ここにあるような、たくさんの、めぐが作れました。コンテンツ毎に使い分けています。Live2Dなどを使う場合と決定的な差は、モデルがいくらでも作成できることです。ただし、解像度や動く範囲がとても狭いという欠点もあるため、フレームデザインは限定されてしまいます。
次はストリーミングどうしようと考えたんですが、WEBカメラやったことあるので、あの方式をそのまま使おうとすると、フレームだけ作成すればいいんだなと始めたんです。でもこれがクライアント接続が増えると動かなくなるんです。やはりストリーミングサーバはいる、でも立てるの難しいからOBS経由でYutubuしかないね、ということで、Aituber化したわけです。まあ、面白いですよね。自分で作った画像が動いて話して、配信まで出来てしまう、Vtubertの世界とはかけ離れていると思っていましたが、この方法なら工夫次第でどうにでもなるかなと。

仕組みは理解、自動化を目指す

じゃあ、実際にどんなこと、できるようにするのかを考えました。
過去に会話アプリ作っていて、二つのことがわかってました。
1)人は質問しかしない
2)質問が浮かばなくて、すぐ飽きる。
3)入力面倒だし、時間とられる
まあこんなもんかなみたいに。。
だから、自動化することに。
自動でライブ配信したいなあ、という目標を立てコンテンツを考えたんですけど、AItuberにことさらこだわったわけではないのでいろいろ考えました。自己紹介、朗読 これはAIではないですよね。単なる読上げ。
独り言やAI同士の会話、これはAItuberに該当するかな。
とにかく、自動化には拘りました。

フィレ―ムの準備

フレームの作成ですが、当時(とはいえ今年の3月)はOBSも知らなかったので、自前で作っちゃえ!ということで、3つのレイヤーを重ねて、文字とかの画面アイテムを追加する方法を選びました。pillowのペースト機能を利用しています。
ライブ配信のコンテンツを切り替えながら延々とライブを続けるためにはこの方法以外思いつかなかったんです。どの段階でフレームを構成すればいいのか、色々と試行錯誤しながら、問題点を修正して、現在はフレーム上のいずれかの画像やアイテムが変化したときのみ、フレーム構成スレッドを動かす仕様になってます。 まだ、細かい修正は必要なんですけど。

並列化処理

並列化
これ避けて通れないですよね。AI対AIの会話だと並列化できる部分はたくさんあって、というのもLLMがアウトプットしてくるまでの時間が十分にあるので、その間にTTSやらオーディオ再生など、色々と処理をさせてしまうということです。
あと、動きは 瞬き、首の回転、頭の傾き、体の動きに分けて、ランダムな間隔で、ランダムな長さとランダムな変化量で動かして、さらにリップシンクも追加するので、最大5個のポース生成リクエストが発生するわけです。GPUの性能上げても、さすがにリアルタイムで全て処理できないケースが生じます。そこで、めぐの発言中=Lipsync中は首と顔と体の動きは抑制するという処理を入れてます。

コンテンツのコントロール

コンテンツコントロールという概念
コントロールファイルをコンテンツ毎に持たせて、記述を変えることで、配信内容を変えるようにしています。複数のコンテンツファイルを管理して配信予定に沿って廃止をします。そして複数のコンテンツを扱いやすくするために、ブラウザベースのストリーミングスタジオ(仮名)も開発しています。 コントロールファイルの中にはAIを切り替えるコマンドもあって、ここの記述によって、めぐ専用GPT2、rinna1B、hatGPT3.5、RWKVが、自分、相手に指定できます。rinna3.6Bも使えるよう、チューニング中です。あと、プロンプトで性格を変えれるrinnaやChatGPTえはプロンプトファイルもコンテンツ毎に持っています。なのでコンテンツ毎にめぐの性格や頭の良さを変えることができます。

コンテンツコントロールファイル88番の例
めぐとリン菜々のお話し
Aichat
@ai,megu,rinna
@chr,disp_bOU7d_img.png,true,200
@title,60,ff00ff,18,0,めぐとリン菜々の放課後,RampartOne-Regular.ttf,5,ffffff
@back,000000,999,512,00057-1386486256.png
@log,12,00ff00,2,2,GenJyuuGothicX-P-Heavy.ttf,1,000000
@l2,disp_NwZ7J_img.png,4,18,100@l3,45,9
@ctxt,25,ffff00,35,90,めぐ,GenJyuuGothicX-P-Heavy.ttf,2,000000
@ytxt,25,ff4500,10,30,菜々,GenJyuuGothicX-P-Heavy.ttf,2,000000
@schedule,14,ff0000,82,5,GenJyuuGothicX-P-Heavy.ttf,1,000000
@voice,you,九州そら,1.4,0,1.0,りんな
@voice,me,四国めたん,1.0,0,1.0,めぐ
@info,14,ff0000,70,0,GenJyuuGothicX-P-Heavy.ttf,1,000000,お知らせ
@slidel2,true,1,0,10,100,disp_NwZ7J_img.png
@slide,back,true,5,00057-1386486256.png

システム全体構成

システム構成
説明は割愛しますが、おおよの流れは以下のとおり。
①AItuberにやらせたいコンテンツのIDを指定。
②ID指定、③コンテンツファイル読込み
④解析・実行
⑤会話シーケンス開始、ループ
⑥アイテム配置、ランダム動き開始
⑦TTSと母音取得
⑧あれ、とんでる!!
⑨リップシンクと動き
⑩フレーム生成(⑥~⑨に応じて)
ロカルLAN上に多数のAIサーバを配置して、自由に使えるように工夫をすることで問題の切り分けがやりやすく、機能追加も比較的簡単です。ただし前述の通り並列化処理が多数動いているので時間軸のデバッツグは大変です。

ストリーミングスタジオ参考画面
AItuberとらえ方の変遷と今後

1月~2月にかけて
先ほどもご説明したとおり、Talking-headでの動画アプリを開発中でした。 1月中順に転んで鼻骨骨折で救急搬送手術入院する羽目にナリ、情報収集ができて良かった。AItuberを知ったのもこの時期。Vtuberの代わりになるのかな、面白い。しずくちゃん、どんどん進化してる。すごい。
3月中旬から開発開始。
まあ、1カ月もあればそこそこまではできるだろうと。確かに配信までは1カ月強でしたが、その後のトラブ回避は大変。この時期、AItuberって技術的にも開発も面白い分野だなあ~とか思っていて、どんどん開発が進みました。開発が進むにつれ、AI同士が話してくれるようになり、彼女らの他愛のないあ会話がなごんで、なんだか開発が進むんです。時々ボケてくれたり、ひやひやするようなことも話してます。初配信は4月末で、完全にテストでした。 Yutubeでanimede meg で検索すると出てきます。チャンネル名はいずれ変えるつもりです。
5月~6月には
AItuberはコンテンツが大事だということに気づいて、ひたすら機能強化をしていました。コンテンツ制作はおろそかになって、一向にまともな配信できずイライラ。ロングランテストを繰り返してました。
~現在
自分は開発側なので勝手な仕様を決めて、動けばそれでよしなんです。
見る方、プロデュース側からの視点は絶対違うと確信。
博士のみらいちゃんMVよくできていて、配信だけではなくて総合プロヂュース力が必要なんだなと感じました。アニメ・ゲーム界隈の方々の意見も同様でしたね。

今後の方向性
今考えてるのは3つの方向性の可能性
配信ガチで頑張る。
コンテンツと総合プロデュース力の勝負だなと、でも自分では無理っぽい。パーソナルなユース志向
実際、会話を流しているだけでなごむので、その辺から改良進められるかも
時事問題とかの話をしてくれるとか、AI界隈の話をしてくれるとか、仕事中に突っ込みを入れて、ボケてもくれるとか。 GateBOXほどではないけどデバイスも必要でしょう、スマホ+ARとかよさげ。
自律するキャラ
言われたこと勝手にやってくれたり、 顔色見て状況察して先回りしてくれたりとか。Function-callingとかLang-Chainとか駆使しすると何かそれっぽい動きするだろうと想像してます。かなりハードル高そうですけど。

いずれにしてもLLMとキャラ動きに関しては共通した技術なのでやんないわけにはいかなくて、ここの改良も避けて通れないと感じてます。
で私は、どこを狙うかですが。。。 
配信ガチは単独では無いかなあ。でもどこかと協力すればできるかもとも。
透過型のOLEDオパネルが簡単に安く入手できるようになれば、ハード屋なんでデバイスを狙いつつ、パーソナルユーズもありかと、みたいな感じです。

まとめ。
技術の進歩とコミュニティーのアイデアで、
➡全く異なるコンテンツとして再定義される可能性が考えられます
さらに配信にさえ拘る必要も無くなる可能性も。
キャラの中に存在する汎用AIへ進化を遂げればどうなるか?
➡ロボット同様だが動き制御と見た目違和感から解放された自由な存在になりうる
その時、AItuberと呼んでいいのか?(進化のパラドックスが生じる)

ということで、時間配分間違えて大事な部分の説明ができなかったことと、ストリーミングスタジオを操作して配信をするところをお見せできなかったことが残念です。いずれYutubuのライブ配信で操作を解説して皆様のご質問にもお答えしたいと思います。

ゆずき