LoginSignup
1
3

ChatdollKitとChatGPTで対話アバターを作成する

Last updated at Posted at 2023-07-26

概要

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の追加

  1. 左上の+マークから、Add package by nameをクリック
  2. Name:com.unity.nuget.newtonsoft-json Version:3.0.1 と入力
  3. addをクリック
    Add JSON.NET.png

burstの追加

  1. Packages:Unity Registryに変更
  2. burstと検索
  3. Installをクリック
    Add burst.png

Anime Girl Idle Animations Freeの追加

  1. Packages:My Assetsに変更

  2. Anime Girl ldle Animations Freeを選択

  3. Importをクリック
    Import Animation Girl.png

  4. 1番上のチェックを外し、Animationsフォルダにチェックを入れる

  5. Importをクリック
    Import Select Animation Girl.png

Unityパッケージのインポート

ChatdollKitの追加

    1. ダウンロードした「ChatdollKit_0.6.1.unitypackage」のフォルダを開く
  1. Importをクリック
    ChatdollKit.png

  2. ダウンロードした「ChatdollKit_VRMExtension_0.6.1.unitypackage」のフォルダを開く

  3. Importをクリック

uniTaskの追加

  1. ダウンロードした「UniTask.2.3.1.unitypackage」のフォルダを開く
  2. Importをクリック

uLipSyncの追加

  1. ダウンロードした「uLipSync-v2.6.1.unitypackage」のフォルダを開く
  2. Importをクリック

UniVRMの追加

  1. ダウンロードした「UniVRM-0.89.0_9470.unitypackage」のフォルダを開く

  2. Importをクリック

  3. ファイルをアップデートするか聞かれるので、「Yes, for these and other files that might be bound later」をクリック
    UniVRM2.png

  4. 「Accept All」をクリック

  5. 「Close」をクリック

3Dモデルの配置

  1. ProjectのAssetsを右クリック

  2. create > Folder をクリック
    3Dmodel_folder.png

  3. フォルダ名を「character」にする

  4. 使用する3Dモデルのファイル(拡張子が.vrm)を(3)で作成したcharacterフォルダにドラッグして入れる

  5. (3)で作成したcharacterフォルダ内のオブジェクト(Prefab Asset)を、ヒエラルキーのSample Scene内にドラッグ

  6. Directional Lightを設定する
    アバターにライトを正面から当てたい場合は、

    • Position Y:3
    • Rotation X:130
    • Rotation Y:0
    • color:白
    Light.png
  7. Main Cameraでカメラの位置を調整する(下の画像は正面から映すときの例)
    Main Camera.png

ChatdollKit VRMの追加

  1. ProjectのAssets > ChatdollKit > Extension > VRM のChatdollKitVRM.PrefabをヒエラルキーのSample Scene内にドラッグ
    ChatdollKit VRM.png

  2. ヒエラルキー内で右クリック

  3. UI > Event System をクリック
    EventSystem.png

アイドルモーションの設定

  1. ヒエラルキーのChatdollKitVRMをクリック

  2. インスペクター内のModel Controller(Script)のメニューバー(右のアイコン)からSetup ModelControllerをクリック
    setup Model Controller.png

  3. インスペクター内のModel Controller(Script)のメニューバー(右のアイコン)からSetup Animatorをクリック

  4. AnimeGirlIdleAnimations_free > Animations を選択
    setup Animator.png

  5. 01_LayersはBase Layerを選択
    ※01_Layersはメインのアニメーション

  6. 02_LayersはAdditive Layerを選択

  7. 03_LayersはBase layerを選択

  8. ヒエラルキーをキャラクターのオブジェクトに変更して、インスペクターのAnimator > Controller をダブルクリック
    Animator Controller.png

  9. LayersのAdditive Layerの設定をクリックし、Weightを1、BlendingをAdditiveに変更する
    Active Layer.png

  10. LayersのBase Layerを選択し、自分が設定したいアイドルモーションにつながっている矢印のうち、左側の矢印をクリック
    ここで設定するアイドルモーションは、待機時間、ユーザの発話時間のアバター動作になる
    選択できるアイドルモーションは、Anime Girl Idle Animations FreeのUnity Asset Storeにある動画で確認できる
    ※今回はconcernを使用

  11. インスペクター内のConditionsの数字を確認
    この数字を使って、アイドルモーションを設定する
    Idle Motion.png

  12. ヒエラルキーをChatdollKitVRMに変更し、インスペクターのModel Controller(Script)のIdle Animation Valueに、(11)で確認した数字を入力する
    Idle Animation Value.png

対話の設定

  1. Dialog Controller(Script)で、Wake Word / Cancel Word / Prompt Voice を設定する
    • Wake Word:初めに話しかける言葉
    • Cancel Word:終了する言葉
    • Prompt Voice:アバターが初めに話す言葉(Wake Wordに対する応答)
      ※今回はデフォルトのまま
  2. ChatdollKit(Script)で、文字起こしと読み上げをするAPIの設定
    1. Speech ServiceをAzure / Google / Watson から自分が使用するAPIを選択する
      選択するとAPI Keyを入力する場所が表示される
    2. Api Keyを入力
  3. ChatGPTのファイルを追加する
    1. Project内の Assets > ChatdollKit > Examples > ChatGPT を選択
      select ChatGPT.png

    2. 追加したいファイルをChatdollKitのインスペクターの一番下にドラッグ

      • ChatGPTSkill
        デフォルトのChatGPT
      • ChatGPTStreamSkill
        ChatGPTの返答を1文ごとに出力するので、デフォルトより返答が早い
      • ChatGPTEmotionSkill
        感情シミュレーターを用いたもの
        ※今回はChatGPTStreamSkillを使用
        ※ChatGPTSkillをChatGPTStreamSkillに変えるときは、インスペクターからChatGPTSkillを消去して、ChatGPTStreamSkillを追加する。(インスペクターに両方追加したら動かなかったので)
    3. 追加したChatGPTのファイルを設定

      1. Api KeyにChatGPTのApy Keyを入力
      2. Chat Conditionにアバターの設定を入力
        ex)アバターとユーザの関係性、アバターの言葉遣いなど
        ChatGPT config.png

実行

作成手順がすべて完了したら、上部の実行ボタンをクリックする

アバターがアイドルモーションになってから、Wake Wordを話しかけると、アバターがPrompt Voiceの内容を応答する
その後、「Listening…」と表示されたら、会話がスタート!

何も会話しないと、「Listening…」は消えるので、会話したいときは、もう一度Wake Wordで話しかける

参考

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3