ChatGPTでチャットボット 準備編 #Unity #ChatGPT #ChatBot
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
はじめに
OepnAI ChatGPT が話題です。そこでUnityでChatGPT APIを利用したchatBotを作成してみました。
身体が欲しい
Vroid Studio を使わせてもらいます。
適当に男の子っぽいものを作ってみました。このモデルをVRM形式で、エクスポートします。Vroid Studio のShareのアイコンからエクスポートできます。
エクスポートパラメータはデフォルトの値を使いました。VRM10のデータがエクスポートされます。
UnityにVRM10ファイルをインポート
Unity開発環境
使用したUnity環境は以下の通りです。
- Apple M1 / 16GB
- Unity Editor: 2021.3.231f1
UniVRMを使う
新規プロジェクトを作成して、UniVRMをインストールします。
UniVRM Release ページからパッケージをダウンロードします。
Assets
-> Import Package
-> Custom Package...
からダウンロードファイルを指定してインストール完了です。
AssetsフォルダにVRM10ファイルをdrog & dropします。
URP問題
レンダリングしてもらえません。該当モデルをInspectorで参照すると、Materialsタブの下の方に対応できそうなメニューがありました。Render Pipeline
をUniveral Render Pipeline
に変更してApply
します。
これでレンダリングしてくれました。Experimetal機能のようですが、問題なかったです。
Sceneにキャラクタ追加
インポートしたVRM prefabをシーンにdarg & dropしておきます
声が欲しい
VOICEVOXを使わせてもらいましょう。READMEにdockerでの起動方法が書いてあります。
docker起動して、http://localhost:50021/docsにアクセスし、speakers APIから使いたい声のidを確認します。私は、WhiteCULさんをチョイスしてみました。voice idは 23, 23, 25, 26です。
"name": "WhiteCUL", "speaker_uuid": "67d5d8da-acd7-4207-bb10-b5542d3a663b", "styles": [ { "name": "ノーマル", "id": 23 }, { "name": "たのしい", "id": 24 }, { "name": "かなしい", "id": 25 }, { "name": "びえーん", "id": 26 }
Virutal Audio Device
後述のLipSyncのため、Virtual Audio Deviceをインストールします。BlackHole を使いました。READMEのインストラクションに従ってインストールします。
パソコンについているマイクを使用してもいいのですが、ハウリングしたり生活音を拾ったりするので、入れました。
Unity uLipSync
キャラクタモデルを喋っているように口を動かしたいです。uLipSync を使います。
uLipSync インストール
uLipSync Release ページからパッケージをダウンロードします。
Assets
-> Import Package
-> Custom Package...
からダウンロードファイルを指定してインストール完了です。エラーが発生しているサンプルがあったので、サンプルコードなしのパッケージを選択しました。
uLipSync セットアップ
uLipSync Mircrophone
VRM キャラクタにuLipSync Mircophone
をAdd Component
してDevice
をBlack Hole 2h
にします。このときAudio Source
コンポーネントも、同時に追加されます。
uLipSync + VRM10
(uLipSync サンプルを入れなかったので)GitHubから uLipSyncExpressionVRM.cs をコピペして、VRM キャラクタにアタッチします。このスクリプトで、VRMのBlendShape
がuLipSyncにリンクできます。サンプルスクリプトをありがとう!
Skinned Mesh Render
にVRMのFaceを設定します。
とりあえず母音のみ設定します。BlendShapeIndexの各値は、スクリーンショットを参照ください。
uLipSync
uLipSync
コンポーネントをAdd Component
します。On Lip Sync Update
にElementを追加し以下の設定をします。
- Runtime Only
- Objectに先ほど設定したuLipSyncExpressionVRMを指定
- Functionに OnLipSyncUpdate設定
詳細は、uLipSync Setupを査読ください。
以下のコンポーネント群をScene内のVRMに設定しました。
- Audio Source
- U Lip Sync (Script)
- U Lip Sync Micrhophone (Script)
- U Lip Sync Expression VRM (Script)
ChatGPTでチャットボット 会話編 に続きます。