Style-Bert-VITS2 JP-Extra と LLM を用いた AI エージェント構築
こんにちはこんばんは、teftef です。今回は LLM と TTS を使って推しの AI エージェントを作るという話です。今までは LLM として GPT-4 を用いて、 TTS として「KOEIROINC」 を使っていました。これはAI エージェントとしてはなんも問題ないのですが、やっぱり「自分の推しをエージェントにしたい」という想いで作成しました。
私もまだ初学者であり、説明が間違っていたり勘違いがある可能性が 0 ではないということをご了承ください。ぜひコメントなどをいただけたら幸いです。また、この記事を作成するにあたり、GPT-4 による校正、修正が含まれています。
※この記事は有料となっていますが、最後まで内容が読めます。
大まかにやったこと
今回は 、一人のキャラクターを再現するという目標として、そのキャラクターの会話パターンを LLM に学習させ、キャラクターの声を TTS のモデルにが学習させます。
LLM の学習
これは前回の記事で書いたので割愛します。
TTS の学習
TTS としては Style-Bert-Vits 2 を用います。これは StyleGAN ベースのText to Speach モデルで、最近日本語のデータセットを使ってフルスクラッチ学習された Style-Bert-VITS2 JP-Extra が登場しました。Style-Bert-VITS2 JP-Extra は、日本語の音声合成がものすごく自然に聞こえるため、今回はこれを使います。
学習データ
学習データは 10 分ほどの音声データを 77 本の wav file に分割し、 text データをラベル付けしました。データセットの作成は以下のリポジトリを用いました。
学習
今回はバッチサイズを上げたいのと学習時間の短縮のため、 GoogleColab を用いました。データセットの配置などは詳しく書いてあるので、ここでは詳細を省きます。バッチサイズで 2000 ステップ学習させたモデルを採用しました。
無料枠でも十分にクオリティが高いものが作れます。(⇩サンプル)
LLM と TTS を組み合わせる
今回は LLM に入力し、その返答を Style-Bert-VITS2 に読ませます。
それぞれのコードから推論の部分だけ引っこ抜き、それらをつなげます。
モデルのロード時間が長いため、起動後にすべてのモデルをロードします。
すると 10 秒ほどで、以下のように音声が生成され、読み上げられます。
指示:
あなたについて教えて?
応答:
私は・・・わからない。でも、感じることのできるものが見つかるといいなって思う。そしたら、少しづつ見つけられるかもしれない。でも、今の私はわからない。だから、見つかるまで探し続ける。</s>
Start generating audio data from text:
私は・・・わからない。でも、感じることのできるものが見つかるといいなって思う。そしたら、少しづつ見つけられるかもしれない。でも、今の私はわからない。だから、見つかるまで探し続ける。
Using JP-Extra model
Audio data generated successfully
Success, time: 7.763826 seconds.
ちゃんとまふゆちゃんです。この絶望のような感じも再現されていて、とてもいいです。
Whisper
今回は Whisper を用いてこちらが話した音声を文字起こしして、 LLMに送信します。こうすることでキャラクターとの会話をすることが可能になります。Whisper のモデルは デフォルトは medium に していますが、 VRAM と実行速度との相談で Large でも問題ありません。しかし small や base だと露骨に性能が落ちるので、お勧めしません。
実行速度と実行結果
使用する VRAM は 8GB でも問動くように工夫しています。(Whisper がLarge でも大丈夫)
実行速度は、大まかに
Whisper のモデルロード (medium) : 30 秒
Whisper 推論 : 10 秒
LLM ロード : 10 秒
LLM 推論 : 5 秒
TTS モデルロード : 15 秒
TTS 推論 : 8 秒
音声の書き出しと再生 : 3 秒
このようになっています。実際はモデルロードを最初に一斉にやるため、発話してからキャラクター音声が生成されるまでは、遅くても 25 秒ほどです。実際の対話の様子を載せておきます。
今後の展望
今後は記憶システムを追加できればと思いますが、 LLM が 3.6 B なので、あまりにも長すぎる文章を入れてしまうとハルシネーションを起こしてしまう可能性があります。そのため GPU を変更して 7B などのモデルで試すことをお勧めします。
また、システムの信頼性を向上させるためにレイテンシにならない程度の投票システムを追加したり、キャラクターの Live2D や 3D モデルを作って、より「エージェント」感を出していければと思います。
最後に
というわけで、今回はキャラクター AI エージェントをローカルで動かす記事でした。今後も開発を進めていきたいと思います。それと、まふゆちゃんもよろしくお願いいたします。
最後に少し宣伝です。主のteftefが運営を行っているdiscordサーバーを載せます。このサーバーでは Midjourney やStable Diffusionのプロンプトを共有したり、研究したりしています。ぜひ参加して、お絵描きAIを探ってみてはいかがでしょう。(2,500 字,teftef)
↓↓もしよろしければこの記事と開発の支援お願いいたします!
※注意 : 支援してくださる方へ
※注意 :ここから先は何も内容がありません。しかし、この記事をお読みいただき、良かったと感じていただけたのであれば、この記事と開発の支援お願いいたします!
ここから先は
¥ 500
この記事が気に入ったらサポートをしてみませんか?