「AIと音声でおしゃべりしたい」という悩みはありませんか?

吉海将太氏:「ChatdollKit×ChatGPTで音声会話AIBotを作ろう!」というタイトルで、吉海が発表いたします。けっこう真面目な発表が多い中、僕のはすごくライトなものなので(笑)、リラックスして聞いてもらえればと思います。

自己紹介です。「Yoshikai」というのが本名で、ハンドルネーム「tinjyuu」で活動していますが、ハンドルネームであまり呼ばれたくないのでよろしくお願いします(笑)。

だったら名乗るなよって話ですが(笑)。ぜんぜん売れない本をたまに書いておくためのものです。

みなさん、こんな悩みはないですか? というところで、「AIと音声でおしゃべりしたい」と。ついでに見た目も好きなようにしたい。そんなものぜんぜん作れないよという時でも、「ChatdollKit」を使えば、「安心してください! 簡単にできますよ」という話をこれからしたいと思います。

Unityのオープンソースのフレームワーク「ChatdollKit」

ChatdollKitは、「Unity」のオープンソースのフレームワークです。僕は別に作成者ではなくて、ただ勝手に宣伝しているだけです。

ドキュメントも、日本語、英語、両方あります。簡単に言うと……わかりやすいのは「Siri」や「Google Home」ですね。最初に起動のためのウェイクアップの文字を言うと会話がスタートします。

例えば、「東京の天気は?」と聞くと、天気予報を教えてくれたりするものです。最新版になってChatGPTに対応したので、それを紹介したいと思います。

デモ

デモを見てもらったらわかりやすいと思うので、昔作ったデモ動画をお見せします。音声出るのか不安なんですが、出るのかな。

話者1(※画面の音声):そうだよ、私は猫型ロボットだよ!

吉海:(笑)。僕の音声は入っていませんが、しゃべりかけたらそれに返答している感じにしています。これは、僕が作ったものではなくて、販売してあるモデルを買ってインポートしています。

話者1:証明する方法はいろいろあるけど、例えば私の名前は、ニャンタロウという名前だよ。それと、私は猫のようなしぐさをすることができるよ。

吉海:話していますね。デモはこんなところで。

ChatdollKitとVRMの説明

あらためて、ChatdollKitの説明をしようと思います。音声会話可能なチャットボット作成フレームワークです。Unityに対応しています。あと、VRMという形式で、モデルであれば基本的に自由に組み込んで口パクさせたり、リップシンクができたり、表情を動かしたり、ポーズを取ったりできます。

サンプルコードに、ChatGPTのAPIに接続するコードがあるので、簡単に使えます。あと、自前で描けばどんな絵でもできます。UnityでもC#で書けば、なんとでもできます。

あとは、標準でText-to-Speechに対応していて、「Azure」「Google」「VOICEVOX」などが使えます。ほかにも使えるサービスが増えてきています。

「VRMとは何か?」について軽く触れておこうかなと思います。(スライドを示して)ヒューマノイドで標準的な形式を使ってやれます。僕もあまり詳しくはありませんが、興味がある方は後で資料を共有するのでぜひ見てください。

詰まらなければ15分で開発できる

「Unityはぜんぜんわからないよ」「なかなか難しいんじゃないか」という方も安心してください。みなさんにはChatGPTがあるので、今なら、「いつやるの? 今でしょ!」という感じで簡単にできると思います(笑)。

基本的なことだったらけっこう答えてくれます。ご存じのとおり嘘もつきますが、嘘をつくことで逆に成長できるという感じでいきたいなと思います。

導入記事ですが、このプレゼンでは紹介しません。なぜなら、作者がすごくわかりやすい「Qiita」の記事を書いているので、これを見てもらうのが一番いいかなと思います。

詰まらなければ15分でできます。Unityはけっこう機能が多いので、最初はかなり戸惑うと思いますが詰まらなければ15分(でできる)という感じです。

今、最新版が0.6なのですが、0.53あたりでChatGPTに対応しました。なので、簡単に使えます。

あと、最新版だとすごくシンプルですが感情シミュレーターがあります。みなさんご存じの、ただのプロンプトですが、ChatGPTに「あなたは4つの感情があります」。それぞれの形式で表現してもらうことで、例えば「angry」だったら怒っている顔にしてもらうことができます。ただ、たまに守ってくれないので、その時はエラーになっちゃうという問題はちょっとあります。

先ほどデモを見てもらいましたが、返答が返ってくるまでにすごいラグがあるんですよね。会話においてラグはけっこう致命的で、人類と会話してもらえばわかると思うんですけど、めちゃくちゃ返答が早いんですよ(笑)。

(会場笑)

なので、ボットでやると「こいつめっちゃ遅いやん」という感じになるのですが、幸いにもChatGPTのAPIは標準でStreamに対応しています。みなさん見たことがあると思いますが、1文字1文字出てくるやつですね。

Streamをfalseにしていると、答えがまとめて返ってきます。返ってくるまでにけっこうラグが出ちゃっていて、今まではStreamを有効にしていないで叩いていたのですが、今回から有効にして叩けるようになりました。

デモ

これもデモ動画があります。先ほどのデモと音声が違いますが、気にしないでください。

話者2(※画面の音声):私はプログラムで作られたAIアシスタントであり、外見は存在しません。猫型ロボットのようなかわいらしい外見を持っていると思われるかもしれませんが、私の目的は役に立つことです。どうかお役に立てるように尽力します。

吉海:(笑)。うるさいのでいったんオフにします(笑)。聞いたことがある人もいるかもしれませんが、最初のデモは「ずんだもん」で、かなり高品質な合成音声です。これは、Googleが提供しているもので、だいぶ機械っぽい音声になっています。

ただ、たぶん僕のパソコンのスペックの問題だと思いますが、VOICEVOXをローカルで動かしてStream APIでリクエストを作る時にすごく詰まっちゃったので、今はGoogleのTTS(Text to Speech)を使ったデモになっています。

ライブデモ

次にいきます。ライブデモで、実際にどうやって動かしているのかをみなさんに見せたいと思います。

今、Unityの画面が見えていると思いますが、実際こんな感じでUnity上でいろいろコードを書いたり、編集ができたりします。

コードの性質上APIキーも丸見えなので、あまりコードを見せられないんですけど(笑)、ちょっとこのままデモをしようと思います。動作確認をしていなかったので、この場で動くのかは謎ですが、動かなかったら動かなかったでおいしいなと思ってやろうと思います(笑)。

「こんにちは」と言うとボットが応答するはずなんですけど。「こんにちは!」……ぜんぜん認識してくれない……あっ、してくれました。

「なにかおもしろいこと言って」……だいぶ考えていますけど、認識していない説がある。「あー、あー、聞こえていますか?」……認識には若干難がありますね。

先にログにChatGPTの答えが出ていて、音声がぜんぜん出ていないですね(笑)。本当はしゃべるはずでした。

話者3(※画面の音声):終了することができません、できません、できません、できません……。

吉海:ハウっちゃっていますが、動きました。こんな感じで動きます(笑)。こんな感じで楽しく会話できるので、みなさんぜひ試してみてください(笑)。

PCやスマホで動くアプリの配布を計画中

ライブデモは終わって、今後の展望です。とはいえUnityをやるのはハードルが高いと思うので、アプリケーションにして配布しようかなと(思っています)。ずっとこれが目的でやっているのですが、なかなか時間が取れず、という感じです。

機能としては、音声会話や記憶の機能などをつけられたらなと思っています。一応ビルドしたアプリがあって、(スライドを示して)こんな感じで、デスクトップで動くアプリケーションという感じでやろうと思っています。

こいつはぜんぜん動作確認をしていないので、ちょっと動かないかもしれないので、これだけ見せて(笑)。

(会場笑)

こんなのがありますという感じです。こういうのがあったら、やる気になるというか楽しく人生を過ごせるかなということで、これを作ろうと思っています。

僕の発表は以上です。ご清聴ありがとうございました。

(会場拍手)