fbpx

ChatGPTでチャットボット 準備編  #Unity #ChatGPT #ChatBot

はじめに

OepnAI ChatGPT が話題です。そこでUnityでChatGPT APIを利用したchatBotを作成してみました。

身体が欲しい

Vroid Studio を使わせてもらいます。

Vroid

適当に男の子っぽいものを作ってみました。このモデルをVRM形式で、エクスポートします。Vroid Studio のShareのアイコンからエクスポートできます。

Virod Studio Share menu

エクスポートパラメータはデフォルトの値を使いました。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問題

Pink Material

レンダリングしてもらえません。該当モデルをInspectorで参照すると、Materialsタブの下の方に対応できそうなメニューがありました。Render PipelineUniveral Render Pipelineに変更してApplyします。

Set Universal Render Pipelineこれでレンダリングしてくれました。Experimetal機能のようですが、問題なかったです。

Rendered VRM Materials

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 MircophoneAdd ComponentしてDeviceBlack Hole 2hにします。このときAudio Sourceコンポーネントも、同時に追加されます。

uLipSync Microphone

uLipSync + VRM10

(uLipSync サンプルを入れなかったので)GitHubから uLipSyncExpressionVRM.cs をコピペして、VRM キャラクタにアタッチします。このスクリプトで、VRMのBlendShapeがuLipSyncにリンクできます。サンプルスクリプトをありがとう!

uLipSync Expression VRM

Skinned Mesh RenderにVRMのFaceを設定します。

とりあえず母音のみ設定します。BlendShapeIndexの各値は、スクリーンショットを参照ください。

uLipSync

uLipSyncコンポーネントをAdd Componentします。On Lip Sync UpdateにElementを追加し以下の設定をします。

  • Runtime Only
  • Objectに先ほど設定したuLipSyncExpressionVRMを指定
  • Functionに OnLipSyncUpdate設定

詳細は、uLipSync Setupを査読ください。

uLipSync

以下のコンポーネント群をScene内のVRMに設定しました。

  • Audio Source
  • U Lip Sync (Script)
  • U Lip Sync Micrhophone (Script)
  • U Lip Sync Expression VRM (Script)

ChatGPTでチャットボット 会話編 に続きます。

新規CTA