うえぞう@うな技研代表 Profile picture
お蕎麦が好きなホビープログラマー。町田市デジタル化推進アドバイザー / 総務省地方公共団体経営・財務マネジメント強化事業アドバイザー / LINE API Expert / 著書 https://t.co/zYQp1VQiQg 発言は個人の見解です。各種ご依頼はDMまたは✉️ uezo@uezo.net まで

Mar 3, 2023, 30 tweets

今夜はChatGPT+3Dモデル+音声認識+音声合成(VOICEVOX / VOICEROID)のバーチャルエージェント開発RTAをやろうと思います #ChatGPT #AIバーチャルエージェント開発RTA ツイートを辿れば誰でも作れるように、ね。

いつもの始まりの場所です。 #ChatGPT #AIバーチャルエージェント開発RTA

まずはパッケージのインポートから。今回も3Dモデル対話エージェントのフレームワークとしてChatdollKitを使います #ChatGPT #AIバーチャルエージェント開発RTA github.com/uezo/ChatdollK…

OVRLipSyncはiOSアプリとして使えないので、uLipSyncです。このほかにUniVRMをインポートしていきます。のちにVRMファイルをランタイムにインポートすることを考えて、UniVRM0.89を利用します。1.x系統なんかうまくいかなかった #ChatGPT #AIバーチャルエージェント開発RTA

アニメーションのアセットとしてこれを使います。私は有償版ですがとりあえず無償版でもよいでしょう。気に入ったら購入しましょう assetstore.unity.com/packages/3d/an…

VRMのモデル読み込みとシーンへの配置が完了しました。ここからが本番です。バーチャルエージェントにするべくChatdollKitのセットアップをしていきます

そうそう、音声認識にAzure / Google / WatsonのいずれかのAPIKeyが必要になります。今回はGoogleを使います。ChatGPTも使うので本当はWhisper使いたいところですね。今度対応します

ウェイクワード(会話開始の合図)、会話終了ワード、AIエージェント側のプロンプトを適当に決めて入力します。このケースでは、「こんにちは」と話しかけると会話が始まるようにします。そろそろ動くよ

はい、おうむ返しが動きました〜🎉
(微妙にAPIKeyの一部が写っちゃってるのですが見なかったことにしてくださいこのキーはあとで無効化します)

声がGoogleさんだとやる気も上がらないので、このタイミングでVOICEROIDさんに変更します。本当にすばらしいソフトです!作者さまに感謝!!! voicevox.hiroshiba.jp

こちらの記事のように、特別なサーバー構築をすることなくネットワーク経由で利用できます。私の場合、LANに既にVOICEVOXサーバーがありますのでこちらの手順は省略しますね qiita.com/yamanohappa/it…

作業はVoicevoxTTSLoaderをアタッチしてGoogleTTSLoaderを非アクティブにするだけなのですが、声を誰にするか悩んで10分もかかっちゃいました。四国めたんさんにお願いしました。
さて、対話ができるようになったのでいよいよChatGTPに繋いでいきましょう!!ここからが本番です💪

ここまでテスト用におうむ返しのスキル(EchoSkill)をアタッチしていたのですが、それを削除して、ExampleにOpenAIのdavinci用のAIChatSkillがあるのでそれをアタッチします。temperatureがなぜかint型だったのでfloatにして、それぞれ適当な値とAPIKeyを入れます

ということでね、davinci用のスクリプトをgpt-3.5-turbo用に修正します。せっかくなのでプロンプトエンジニアリングできるようにインメモリでコンテキストも持たせましょう

もうちょっと。API Referenceはここね platform.openai.com/docs/api-refer…

なんか400かえってきちゃう😖

はーいこんなかんじでね、会話の条件とか履歴をprivate変数で持たせて、条件+直近n件+今回の入力をリクエストとしてChatGPTを呼び出します

会話の条件はこんなかんじでインスペクターに設定したよ。送信する履歴の件数はとりあえず10件

それでは話しかけてみよう!!!!

ChatGPT+3Dモデル+音声認識+音声読み上げ(VOICEVOX)のバーチャルエージェント、できたよー🙌表情とかアニメーションはつけてない荒削りな状態までならちょうど2時間。みんなもチャレンジしてみてね! #ChatGPT #AIバーチャルエージェント開発RTA

AIエージェント側の発話待ち時間はほとんどが音声合成のもの。ChatGPTはめちゃ速い。
音声合成は「。」で区切って並列で読み込めばもっと速くなるはず。やり方の問題ですね。

uLipSyncはこないだWebGL作ったのでうっかりWebGL用のものを使ってしまったけど、全然その必要はないので本家を入れましょう。

スレッドで今回利用したライブラリーとかサービスとかを紹介していきます。

まず、3Dモデルベースの音声対話エージェントのフレームワークとしてChatdollKit
github.com/uezo/ChatdollK…

リップシンク(発話に合わせた口パク)のuLipSync。iOSアプリのビルドにも(頑張れば)WebGLにも対応できるので、アプリ組み込みのOSSでは一択なのではと思ってます
github.com/hecomi/uLipSync

VRMをUnityで利用するときのお馴染み、UniVRM。1.xが出ていますが、VRMファイルを読み込んでインスタンス化する手順がバージョン毎に違ったりして、動かせるのが0.89だったのでこちらを使いました github.com/vrm-c/UniVRM/r…

無料で利用できる音声合成ソフトのVOICEVOX。キャラ拡充も機能向上もすごい!本当に感謝。良いと思ったらpixivで寄付しましょう voicevox.hiroshiba.jp hiho.fanbox.cc

あとこのかわいい3Dモデルの子はカリンちゃん。耳とかしっぽとかちょっといじっててすみません💦 booth.pm/ja/items/34709…

以上、AIバーチャルエージェント開発RTAでした!応援ありがとうございました〜🙌 #ChatGPT #AIバーチャルエージェント開発RTA

ChatGPT連携部分のスクリプト、まだリリースパッケージに含んでないけどGitHubにあげときました。レスポンスが遅く見えちゃうの悔しかったので、改良済み。 #ChatGPT
github.com/uezo/ChatdollK…

総括しときました。デモにVRMも同梱したので同じようなの15分で作れますよ。これで一旦動くもの作って改造したり部品取りしたりしてくださいな qiita.com/uezo/items/7ff…

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling