概要
ChatdollKitとChatGPTを使って、好きなアバターと対話するプログラムを作る
※事前に、VRoidStudioなどでVRMモデルを作成する(VRMモデルは拡張子が.vrmになっているもの)
開発環境
- Unity (2021.3.6f1)
- ChatdollKit (v0.6.1)
- VRoidStudio (1.22.1)
依存ライブラリ
- UniTask (Ver.2.3.1)
非同期処理をしてくれるライブラリ - uLipSync (v2.6.1)
アバターが発話する時に口を動かすためのライブラリ - UniVRM (v0.89.0)
- VRM Extension (v0.6.1)
Unity Package Manager
- Burst from Unity Package Manager (1.6.6)
uLipSyncの依存ライブラリ - JSON.NET For Unity from Package Manager (3.0.1)
- Anime Girl Idle Animations Free (1.0.2)
API
- ChatGPT API
- Azure / Google / Watson いずれかの Text to Speech API と Speech to Text API
※事前にAPI Keyを取得しておく
ChatdollKitとライブラリのダウンロード
・ChatdollKitのv0.6.1から「ChatdollKit_0.6.1.unitypackage」と「ChatdollKit_VRMExtension_0.6.1.unitypackage」をダウンロード
・UniTaskのVer.2.3.1から「UniTask.2.3.1.unitypackage」をダウンロード
・uLipSyncのv2.6.1から「uLipSync-v2.6.1.unitypackage」をダウンロード
・UniVRMから「UniVRM-0.89.0_9470.unitypackage」をダウンロード
・Anime Girl Idle Animations Freeから「Add to My Assets」をクリックして、UnityのMyAssetsにダウンロード
作成手順
Unity(Version 2021.3.6f1)でProjectを作成する
※「burstの追加」以降の手順は、下記の動画を参考にしています
ChatGPTとChatdollKitで作る!3Dバーチャルアシスタント開発RTA
パッケージの追加
Window > Package Managerを開く
JSON.NETの追加
burstの追加
Anime Girl Idle Animations Freeの追加
-
Packages:My Assetsに変更
-
Anime Girl ldle Animations Freeを選択
-
1番上のチェックを外し、Animationsフォルダにチェックを入れる
Unityパッケージのインポート
ChatdollKitの追加
-
- ダウンロードした「ChatdollKit_0.6.1.unitypackage」のフォルダを開く
-
ダウンロードした「ChatdollKit_VRMExtension_0.6.1.unitypackage」のフォルダを開く
-
Importをクリック
uniTaskの追加
- ダウンロードした「UniTask.2.3.1.unitypackage」のフォルダを開く
- Importをクリック
uLipSyncの追加
- ダウンロードした「uLipSync-v2.6.1.unitypackage」のフォルダを開く
- Importをクリック
UniVRMの追加
-
ダウンロードした「UniVRM-0.89.0_9470.unitypackage」のフォルダを開く
-
Importをクリック
-
ファイルをアップデートするか聞かれるので、「Yes, for these and other files that might be bound later」をクリック
-
「Accept All」をクリック
-
「Close」をクリック
3Dモデルの配置
-
ProjectのAssetsを右クリック
-
フォルダ名を「character」にする
-
使用する3Dモデルのファイル(拡張子が.vrm)を(3)で作成したcharacterフォルダにドラッグして入れる
-
(3)で作成したcharacterフォルダ内のオブジェクト(Prefab Asset)を、ヒエラルキーのSample Scene内にドラッグ
-
Directional Lightを設定する
アバターにライトを正面から当てたい場合は、- Position Y:3
- Rotation X:130
- Rotation Y:0
- color:白
ChatdollKit VRMの追加
-
ProjectのAssets > ChatdollKit > Extension > VRM のChatdollKitVRM.PrefabをヒエラルキーのSample Scene内にドラッグ
-
ヒエラルキー内で右クリック
アイドルモーションの設定
-
ヒエラルキーのChatdollKitVRMをクリック
-
インスペクター内のModel Controller(Script)のメニューバー(右のアイコン)からSetup ModelControllerをクリック
-
インスペクター内のModel Controller(Script)のメニューバー(右のアイコン)からSetup Animatorをクリック
-
01_LayersはBase Layerを選択
※01_Layersはメインのアニメーション -
02_LayersはAdditive Layerを選択
-
03_LayersはBase layerを選択
-
ヒエラルキーをキャラクターのオブジェクトに変更して、インスペクターのAnimator > Controller をダブルクリック
-
LayersのAdditive Layerの設定をクリックし、Weightを1、BlendingをAdditiveに変更する
-
LayersのBase Layerを選択し、自分が設定したいアイドルモーションにつながっている矢印のうち、左側の矢印をクリック
ここで設定するアイドルモーションは、待機時間、ユーザの発話時間のアバター動作になる
選択できるアイドルモーションは、Anime Girl Idle Animations FreeのUnity Asset Storeにある動画で確認できる
※今回はconcernを使用 -
ヒエラルキーをChatdollKitVRMに変更し、インスペクターのModel Controller(Script)のIdle Animation Valueに、(11)で確認した数字を入力する
対話の設定
- Dialog Controller(Script)で、Wake Word / Cancel Word / Prompt Voice を設定する
- Wake Word:初めに話しかける言葉
- Cancel Word:終了する言葉
- Prompt Voice:アバターが初めに話す言葉(Wake Wordに対する応答)
※今回はデフォルトのまま
- ChatdollKit(Script)で、文字起こしと読み上げをするAPIの設定
- Speech ServiceをAzure / Google / Watson から自分が使用するAPIを選択する
選択するとAPI Keyを入力する場所が表示される - Api Keyを入力
- Speech ServiceをAzure / Google / Watson から自分が使用するAPIを選択する
- ChatGPTのファイルを追加する
-
追加したいファイルをChatdollKitのインスペクターの一番下にドラッグ
- ChatGPTSkill
デフォルトのChatGPT - ChatGPTStreamSkill
ChatGPTの返答を1文ごとに出力するので、デフォルトより返答が早い - ChatGPTEmotionSkill
感情シミュレーターを用いたもの
※今回はChatGPTStreamSkillを使用
※ChatGPTSkillをChatGPTStreamSkillに変えるときは、インスペクターからChatGPTSkillを消去して、ChatGPTStreamSkillを追加する。(インスペクターに両方追加したら動かなかったので)
- ChatGPTSkill
-
追加したChatGPTのファイルを設定
実行
作成手順がすべて完了したら、上部の実行ボタンをクリックする
アバターがアイドルモーションになってから、Wake Wordを話しかけると、アバターがPrompt Voiceの内容を応答する
その後、「Listening…」と表示されたら、会話がスタート!
何も会話しないと、「Listening…」は消えるので、会話したいときは、もう一度Wake Wordで話しかける
参考
- ChatdollKit github
https://github.com/uezo/ChatdollKit/blob/master/README.ja.md - UniTask guthub
https://github.com/Cysharp/UniTask - uLipSync github
https://github.com/hecomi/uLipSync - UniVRM github
https://github.com/vrm-c/UniVRM - Json.NET github
https://github.com/jilleJr/Newtonsoft.Json-for-Unity - anime girl idle animations free Unity Asset Store
https://assetstore.unity.com/packages/3d/animations/anime-girl-idle-animations-free-150406