uezo / ChatdollKit

ChatdollKit enables you to make your 3D model into a chatbot
Apache License 2.0
684 stars 73 forks source link
3d-model azure chatbot chatgpt gpt-3 unity unity3d virtualassistant

๏ปฟ# ChatdollKit 3D virtual assistant SDK that enables you to make your 3D model into a voice-enabled chatbot. ๐Ÿ‡ฏ๐Ÿ‡ตๆ—ฅๆœฌ่ชžใฎREADMEใฏใ“ใกใ‚‰

โœจ Features

... and more! See ChatdollKit Documentation to learn details.

๐Ÿš€ Quick start

You can learn how to setup ChatdollKit by watching this video that runs the demo scene(including chat with ChatGPT): https://www.youtube.com/watch?v=rRtm18QSJtc

๐Ÿ“ฆ Import packages

Download the latest version of ChatdollKit.unitypackage and import it into your Unity project after import dependencies;

๐ŸŸ Resource preparation

Add 3D model to the scene and adjust as you like. Also install required resources for the 3D model like shaders etc. In this README, I use Cygnet-chan that we can perchase at Booth. https://booth.pm/ja/items/1870320

And, import animation clips. In this README, I use Anime Girls Idle Animations Free. I believe it is worth for you to purchase the pro edition๐Ÿ‘

๐ŸŽ Put ChatdollKit prefab

Put ChatdollKit/Prefabs/ChatdollKit or ChatdollKit/Prefabs/ChatdollKitVRM to the scene. And, create EventSystem to use UI components.

๐Ÿˆ ModelController

Select Setup ModelController in the context menu of ModelController. If NOT VRM, make sure that shapekey for blink to Blink Blend Shape Name is set after setup. If not correct or blank, set it manually.

๐Ÿ’ƒ Animator

Select Setup Animator in the context menu of ModelController and select the folder that contains animation clips or their parent folder. In this case put animation clips in 01_Idles and 03_Others onto Base Layer for override blending, 02_Layers onto Additive Layer for additive blending.

Next, see the Base Layer of newly created AnimatorController in the folder you selected. Confirm the value for transition to the state you want to set it for idle animation.

Lastly, set the value to Idle Animation Value on the inspector of ModelController.

๐Ÿฆœ DialogController

On the inspector of DialogController, set Wake Word to start conversation (e.g. hello / ใ“ใ‚“ใซใกใฏ๐Ÿ‡ฏ๐Ÿ‡ต), Cancel Word to stop comversation (e.g. end / ใŠใ—ใพใ„๐Ÿ‡ฏ๐Ÿ‡ต), Prompt Voice to require voice request from user (e.g. what's up? / ใฉใ†ใ—ใŸใฎ๏ผŸ๐Ÿ‡ฏ๐Ÿ‡ต).

๐Ÿฃ ChatdollKit

Select the speech service (OpenAI/Azure/Google/Watson) you use and set API key and some properties like Region and BaseUrl on inspector of ChatdollKit.

๐Ÿณ Skill

Attach Examples/Echo/Skills/EchoSkill to ChatdollKit. This is a skill for just echo. Or, if you want to enjoy conversation with AI, attach components and set OpenAI API Key to ChatGPTService:

๐Ÿค— Face Expression (NON VRM only)

Select Setup VRC FaceExpression Proxy in the context menu of VRC FaceExpression Proxy. Neutral, Joy, Angry, Sorrow and Fun face expression with all zero value and Blink face with blend shape for blink = 100.0f are automatically created.

You can edit shape keys by editing Face Clip Configuration directly or by capturing on inspector of VRCFaceExpressionProxy.

๐Ÿฅณ Run

Press Play button of Unity editor. You can see the model starts with idling animation and blinking.

๐ŸŒŠ Use Azure OpenAI Service

To use Azure OpenAI Service set following info on inspector of ChatGPTService component:

  1. Endpoint url with configurations to Chat Completion Url

    format: https://{your-resource-name}.openai.azure.com/openai/deployments/{deployment-id}/chat/completions?api-version={api-version}
  2. API Key to Api Key

  3. Set true to Is Azure

NOTE: Model on inspector is ignored. Engine in url is used.

๐Ÿ‘ทโ€โ™€๏ธ Build your own app

See the MultiSkills example. That is more rich application including:

We are now preparing contents to create more rich virtual assistant using ChatdollKit.

๐ŸŒ Run on WebGL

Refer to the following tips for now. We are preparing demo for WebGL.

โค๏ธ Thanks