はじめに
デモの動画はツイッターに貼ってますこちらです
AITuberを片手間で作っていまして、基礎部分をGithubにアップロードしました。
もともとAI先生作れないかな、ということをしていた経験もあわせて、作っています。
できたことは、Unityで、テキスト入力やボタンのUIをはりつけてそこに、入力していく形で、Sendボタンを押せば、ChatGPTの応答、返答から発話内容をVOICEVOXで音声合成、それを受け取って、音声再生と3Dアバターに口パクまでを行います。
ということは、いってしまえば、あとはYoutubeからのコメントを受け取ったり、ライブ配信での進行管理をどう行っていくのか、を作っていくと、一つのAITuberのひな型になるんじゃないかなと思い公開しました。
開発環境はWindows、Unityです。
ライセンスは私の作った範囲はMIT、その他はなるべく再利用・公開していただいて問題ないものを利用しています。
技術的な話
ChatGPT
APIが新しくなり、メッセージに役割を付与して、複数のメッセージをまとめて送る方式となりました。
役割は、system、assistant、user、の3つですね。
systemのメッセージであらかじめの設定を蓄積しておいて、userのメッセージを追加し通信して返答をもらっていくことで、ChatGPTからの返答が生成されます。
発言と、ポーズ設定を収集したかったので下記を参考にしました。
https://twitter.com/fladdict/status/1626936471969218560
下記2行のフォーマットで出力し、会話内容は改行しないこと。
【内部パラメータ】ポーズ:kawaii
【会話内容】おはようございます。それでは、今回は数学のお話をしていきます。
という指定や、キャラクター設定をsystemのメッセージで追加しておきます。
こちらを指定すると、上記のフォーマットで返答が返ってきますので、【内部パラメータ】のポーズからアバターのポーズを、【会話内容】は"。"で分離させて段階的に音声合成になげれるように加工しました。
VOICEVOX
VOICEVOXは、別アプリとして立ち上げておくと、通信して音声合成のやりとりができる機能がもともと存在します。
方式はWebAPIのRESTです。
- to VOICEVOX : このセリフを音声合成してくださいよ
- from VOICEVOX : それだと、こういう音の合成情報はこうなりますよ
- to VOICEVOX : では、この音の合成情報で音声合成してください
- from VOICEVOX : わかりました
という感じで音声が返ってきます。
いきなり音声データにならないので、ちょっと戸惑うかもしれません。
音声合成の中でも、VOICEVOXは、環境を再現しやすいという理由で選択しました。
VRM
アバターは3DのVRM形式、現在はとりまわしのいいVRMの0.x系を使ってます。
アバターを手軽に作れる AveterShop というソフトがありまして、こちらを購入して生成しました。こちらのVRMの形式が0.x系だったので、VRMのライブラリもそちらを利用しています。
長所としては以下2点です
- アバターを簡易に作成しやすい環境が整っている
- リップシンクのさせやすい
短所は、世界的なフォーマットではなく、あくまでも日本の3Dアバター規格にとどまっている点です。今後に期待です。
uLipSync
下記のように、uLipSyncという口パクを再生するUnity用のモジュールが公開されています。
https://tips.hecomi.com/entry/2022/01/30/152519
少し残念なことに、新しい記事はVRMアバターのリップシンクまで、手軽にやってくれるサンプルが入っていたのですが、こちらVRMのバージョンが1.x系だったので、かみ合わずでした。
ということで、そのへんは自作しました。
キャリブレーションもせず、もともとあるプロファイルの設定で、音声をわたしてVRMのリップシンクまで実現できてすばらしいですね。
リップシンクはほかにもいくつかあり、古くはOVRLipSync、他、有料であればCRIのものもあるでしょうか。
OVRLipSyncは、規約が良くわからない(英語…)ので公開したものに同梱するのは難しいと判断しました。
まとめ
以上の技術でもって、基礎部分ができましたので、共有したいと思い公開しました。
「Youtubeのコメントの取得」を実現し、アシスタントを自動化して、全自動でライブ配信1回をできるようにするにはどうしたらいいかと、いろいろ考えていくと面白そうです。
最初に、話すべき内容を伝えてしまうと、一回目にアシスタントとして「はじめてください」とつたえると、全部しゃべってすぐ終わっちゃいます。
OpenAIのAPIKeyと、VOICEVOX、Unityがあれば動きますので、いろいろいじって遊んでいたければと思います。