💭

ChatGPT・Unity・Cloud RunでAIとおしゃべりする

2023/10/01に公開

はじめに

ChatGPTを使ってAIとおしゃべりするアプリを作ったので
どのような構成で作成したかを記載します。
あくまで構成をだけで、作り方は記載していません。

・きっかけ
色んな方が作ってるのを見て作りました。何番煎じでしょうね(他人事)
https://note.com/negipoyoc/n/n081e25f5ee9e
https://twitter.com/jav6868/status/1673230310128091137
(Xのツイートですが、こちらユーザについては何故かNot Foundになってます。可愛いのでぜひ見て欲しい)
https://dev.classmethod.jp/articles/chatgpt-unity-methoko/

完成物

キャラクターは春日部つむぎちゃんです。(春日部つむぎ公式サイト)
表示するためデバイスはLooking Glassを使用しています。
https://twitter.com/kametani255/status/1695293893460603333
音声認識のトリガーに手のモーションキャプチャーを使用しているため、
変なのが映ってます。(後述に記載)

構成図

アプリ画面はUnity、バックエンドをCloud Runで作成しました。
Unityから直接ChatGPTにアクセスしない理由は、今後ChatGPT以外も活用することを想定しているためです。
※Unity -> Chat GPTで作ることもできます

あとUnityやC#を使ったことないため、Pythonなど他言語を使えるGoogle Cloud上で運用したかったためです。

以下の処理となっています。

1.Unityでユーザ音声を取得、音声認識でテキスト化
2.テキストデータをCloud RunにPOST
3.Cloud RunからテキストデータをChatGPT APIにPOST
4.ChatGPT APIのレスポンスをCloud RunからUnityに返信
5.レスポンスのテキストをVoiceVoxで音声変換
6.音声をUnityから出力

使用したサービスについて

Unity

ソースコードはChatGPTに丸投げして作りました。
C#使ったことなく、なんか動いてるからヨシ!って感じになってます。

Leap Motion

Looking Glassのついでに買ったから
当初は他のウィンドウがメインで動作していても、
モーションキャプチャーならキーボードと違ってアプリが反応して音声認識が作動するのでは?っと思い実装しました。
モーションキャプチャーは反応していましたが、音声認識・APIのPOSTは実行されませんでした。
機会を見てボタン式に変更する予定。

折角なので、手を振ったら振り返したりする機能とか追加するかも。

Voicevox

GUIバージョンのVoiceVoxは起動するとlocalhostのサーバを立ち上げます。
指定のURLにPOSTして音声データを取得しています。
[参考]
https://qiita.com/A_T_B/items/1531d78944d8b796b9fa

キャラクターモデル

こちらをお借りしています。
PMXからVRMに変換しています。
https://3d.nicovideo.jp/works/td84779

Cloud Run

UnityとChatGPT APIの中継です。
Cloud Run上でREST APIを作りました。
フレームワークはPythonのFast APIを使用しています。
ChatGPT APIへのアクセスやプロンプトを格納したり、レスポンスデータの正規化をしています。
今後はvertex AIと連携したりLang Chainを組み込む予定。

おわり

これで終わりではなく色々と機能を組み込んでいく予定です。
一先ずは適当に思いついたことやっていこうと思います。
いずれは個人のパートナーとなるAIとか作れればいいなぁ~など考えてます。

以上です。
読んでいただきありがとうございました。

Discussion