「ボクだけのAIVtuberを作りたぁああああああい!」
そんな思いの丈を心に募らせる同士方、こんにちは。
今回はAIVtuberの作り方について解説させて頂きたいと思います。

このAIVtuberってのがほんとにいろいろできて、オリジナルから版権キャラまで、自分が望む子を創造できるんですよね。
オタクの夢がいろいろ実現できる良い時代です。
出来のほどは置いといて、ボクはAIVtuberのツールを1つ作りきりました。
ボクが作ったのは、ブルアカのマリーちゃんの二次創作AIVtuberですね!
なので、これからAIVtuberを作成したいと思う方のヒントになればと、作成の際に必要なスキルセットやツールを総まとめします。
AIVtuberシステムの基本フロー
今回作ったAIVtuberのマリーちゃんは、「YouTubeからチャットを取得して、それに対してLive2Dが表情を切り替えながらコメントする」というのが基本機能です。
作成したAIVtuberマリーちゃんは、以下のようなフローで動いています。
②アプリがYouTubeからチャット情報を取得
③ユーザーチャットをchatGPTに送信して、返信用コメントを生成
④画面上に返信を表示

そうですね。やってることはシンプルです。
ただ、使用するツールやコーディングを含めると、「誰でも簡単にできる」とは言いません。
ただ、chatGPT先生をはじめとするAIさん方々の手を借りれば、「誰でも頑張ればできます」。
(とばしてもOK)今回の特殊機能について
AIVtuberマリーツールには、
・「マリーに懺悔します。」のキーワードで懺悔内容が有罪か、無罪かを判定してくる
・会話の内容によって好感度の上下する
という機能も付けてますが、こちらはアプリ単位のおまけですね!
AIVtuberを作るために必要なツール群
ボクがAIVtuberシステムを作るのに使ったツール群は以下の通りです。
①Unity
AIVtuberアプリ作成用のゲームエンジン。基本はUnityでアプリを作りこんでいく。
②chatGPT
AIVtuberの頭脳。YouTubeに入力されたチャットに対して返答を生成。また、今回は感情推定などにも使っている。
③Live2D Cubism Editor
Live2Dモデルを作るために使用。
④NovelAI
Live2Dモデル用のイラストを作るために使用。
⑤CLIP STUDIO
ペイントツール。イラスト編集用。
⑥COEIROINK
AIVtuberの声帯。つくよみちゃんというキャラクターの名前にシンパシーを感じた。
⑦Visual Studio
コーディング用。あんたとは長い付き合いだな。愛してる。
⑧Google Cloud
Youtube Data APIを使ってYouTubeからチャットを受信、もしくは送信する用。
⑨Youtube Studio、OBS Studio
配信用。開発では直接使わない。

環境作りはちょっと大変ですね。愛でなんとかしてください(根性論)
AIVtuber3大要素は
・声
・モデル
・頭脳
ですが、
声→COEIROINK
モデル→Live2D Cubism Editor、NovelAI、CLIP STUDIO
頭脳→chatGPT
で対応しています。
これで自由にキャラクターを自作して、お話するツールができます。
AIVtuberの開発手順と参考資料のまとめ
AIVtuberの開発手順と参考資料をまとめていきます!
①NovelAIでLive2D用のイラストを作る
まずは自分の作りたいAIVtuberの肉体を用意していきます。
イラストを作っていくのですが、今回ボクが使用したのはNovelAIです。
イラストの準備については、他のイラスト生成ツールでも、自作でも、用意できればなんでも良いです。
NovelAIの呪文の作り方は以下の記事にもまとめています。
迷ちゃん NovelAIのプロンプトを作るコツを知りたいですっ。 NovelAIで自分の理想とするイラストを生成するには、プロンプトの作り方を知ることが必要不可欠になります。 迷ちゃん イラストに描き[…]
②CLIP STUDIOでイラストのレイヤー分けを行う
CLIP STUDIOでイラストのレイヤー分けを行っていきます。
ここについては、生成AIイラストを使う場合には必要なフェーズですね。

目、ケモミミ、体など、パーツごとにキャラクターを分割していく作業です。
生成AIは、生まれたときは何のパーツ分けもされてない1枚絵なので、レイヤー分けをしないとLive2D化して体を動かせないんですよね。
ここのやり方については、次の項目のLive2D Cubism Editorの使い方と合わせて以下の記事で解説していますので、ぜひ読んでください!
AIイラストをLive2Dで動かしたい! 意外とそんなニーズがあると思います。僕にはありました。……ありますよね? ボクの場合はunity用のLive2Dモデルが欲しくて、「AIイラストをLive2Dで動かせるようになりてぇ」と[…]
③Live2D Cubism EditorでLive2Dモデルを作っていく
AIVtuber用のイラストにLive2D Cubism Editorで命を与えるフェーズです。
ボク自身、Live2Dモデルははじめて作ったのですが、ここがめちゃくちゃ楽しい!
1枚のイラストがぐりぐり動くのを見るのは、最高ですよ。

②で上げたブログのリンクにやり方や参考資料は添付していますので、そちらを参考にしてくださいね!
④-1UnityにLive2Dをインポート&表情パラメータ作り
ここからunityでの開発フェーズですね!
まずは作ったモデルをLive2Dに読み込んで使えるようにします。
UnityでLive2Dを扱うにはSDKが必要になります。
ここら辺の知識は以下の記事を参考に用意しました。
これでUnity内でキャラクターのパラメータをいじることで動きをつけることができます。
画面上のキャラクターを動かすだけでもかなり楽しい。
サンプルコードは……chatGPTさんに「UnityでLive2Dモデルをまばたきさせる方法を教えてください」って言ったら、教えてくれるのでそれをカスタマイズしてください。

④-2UnityとchatGPTとの連携
キャラクターとお話するためにchatGPTと連携していきます。
chatGPTのAPIを使うためにはOpenAIに登録が必要ですので、以下で登録してください。
chatGPTのAPIの仕様や登録方法などは、chatGPT自身に聞いたら丁寧に答えてくれます(笑)

APIを登録したらAPIキーを発行して、UnityとchatGPTを連携します。
ここもchatGPTにコードのサンプルを(ry

……。
chatGPTと連携して、メッセージの送信と受信をして、UIに表示できるようになれば、それだけでもうチャットツールとしては成立します。
ここが第一目標ですね。
④-4COEIROINKで声を付ける
COEIROINKを使ってキャラクターに声帯を付けます。
COEIROINKは無料で使える神ツールですね。このツールを立ち上げると、ローカルホストサーバー化して、APIとして外部ツールから叩けるようになります。
基本的な動きとしては、
1.テキストをCOEIROINKに送信
2.COEIROINKが音声ファイルを生成する
3.Unity側でそれを取り込んで再生
です!
COEIROINKでテキストを取り込んで、音声ファイルを生成するサンプルコードは以下になっています。
{
string url = “http://localhost:50032/v1/synthesis”;
SynthesisRequest request = new SynthesisRequest
{
speakerUuid = “話者ID”,
styleId = 0,
text = text,
speedScale = 1.0f,
volumeScale = 1.0f,
pitchScale = 0.0f,
intonationScale = 1.0f,
prePhonemeLength = 0.1f,
postPhonemeLength = 0.1f,
outputSamplingRate = 24000
};
string jsonData = JsonUtility.ToJson(request);
UnityWebRequest synthesisRequest = new UnityWebRequest(url, “POST”);
byte[] jsonToSend = Encoding.UTF8.GetBytes(jsonData);
synthesisRequest.uploadHandler = new UploadHandlerRaw(jsonToSend);
synthesisRequest.downloadHandler = new DownloadHandlerBuffer();
synthesisRequest.SetRequestHeader(“Content-Type”, “application/json”);
yield return synthesisRequest.SendWebRequest();
if (synthesisRequest.result != UnityWebRequest.Result.Success)
{
Debug.LogError(“Synthesis failed: ” + synthesisRequest.error);
Debug.LogError(“Response: ” + synthesisRequest.downloadHandler.text);
synthesisRequest.Dispose();
yield break;
}
byte[] wavData = synthesisRequest.downloadHandler.data;
AudioClip clip = WavUtility.ToAudioClip(wavData, “GeneratedClip”);
audioSource.clip = clip;
audioSource.Play();
synthesisRequest.Dispose();
}

④-5YouTubeと連携する
Vtuberを名乗るには、YouTubeから情報を引っ張ってこなければなりません。
ここで登場するのがGoogle Cloudです。
こいつのYouTube Data APIがYouTubeのチャット周りの機能をハンドリングしてくれます。
Google Cloudのアカウント作成やAPIキーの取得が必要になるのですが、それについては以下の記事が参考になります!
UnityとYouTubeの連携については、これもchatGPTさんにサンプルコードをもらってください。

ここまで実装できれば、YouTubeからチャットを受信してしゃべるAIVtuberが完成します。
まとめ
AIVtuberの作り方について、開発フローや必要なツール、参考資料をまとめました。

最後まで呼んでくださりありがとうございましたっ!