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でチャットボット 会話編 に続きます。
