LoginSignup
0
0

More than 1 year has passed since last update.

ChatdollKitで音声対話エージェントのQuest2単機デプロイに挑戦し挫折する

Last updated at Posted at 2023-05-22

ひょんな切っ掛けでchatGPTを使った対話型AIをVRでデプロイしなければならなくなりました。
偶然見つけた下記記事から出来るかも?と思い挑戦。

ITパスポートレベルの知識&プログラミング3日坊主で挫折した私ですが、今度ばかりは逃げられない。
実施手順と当たった壁、各種疑問点について備忘&誰かの為になると信じて残します。

環境・前提条件

Unity 2021.3.21f1 LTS
ChatdollKit v0.6
Burst v1.6.6
UniTask v2.3.1
uLipSync v2.6.1
UniVRM v0.89.0
VRMExtension
Newtonsoft Json v3.0.2
Oculus Integration v53.1
XR Plugin Management v4.3.3

実施手順

1. 下記サイトを参考に、ChatdollkitのREADME指定の各種パッケージを導入し、「動作確認」まで実施

2. 下記サイトを参考にビルド・実行手前まで実施 ついでにMeta Quest Developer Hubもインストール
Edit > Project Settings > Oculusに表示される要対応項目はよくわからぬままFixしまくり

3. Build SettingsでTexture CompressionをASTCに変更し、Quest2をつないだ状態でBuild And Run

発生したエラー

そして現れたのは下記のようなエラーでした。
FwdZQsVacAQ-ndH.png

reference先が定義されてないということは何かインポートし忘れた?とは理解したものの、具体的に何かわからずchatGPTに相談しながら理解を進めました。

多分デプロイ時にC#からC++にトランスパイルする際、
ChatdollKit内のWebGLMicrophoneにある関数が見つからなかったということと思います。
しかし、Assets/ChatdollKit/Scripts/IO/WebGLMicrophone.cs及びその中に該当する関数は確かに存在しており、エラー原因は掴めず。

対処してみる

原因を確かめるため、以下のように触ってみましたが問題の解決に至りませんでした。

  • 下記Qiitaによるとサイズ超過時に出るそう
    Build Settings > IL2CPP Code Generationを Faster (smaller) builds に切り替えてみる
    ⇒変化なし

  • WebGLがChatdollKitのコンポーネントに入ってないのが原因と推定(んなわけ
    WebGLMicrophone.csをscene内のChatdollKitにコンポーネントとして追加
    ⇒当然無意味

解決

そもそもエラー出しているIL2CPPとは…を調べていたら、どうやらMonoというコンパイラもあるそうで。

試しにProject Settings > Player > Android > Configuration > Scripting BackendをMonoに変更して、TargetArchitecturesをARMv7にしたところ、Quest2でデプロイ成功!問題はコンパイラだった?

ただし、FPSも低くかなり動きはもっさり。一言二言会話したらアプリが落ちちゃいました。

気になる事と今後の展望

IL2CPPとMonoの違いを調べたところ、
MonoはJITコンパイラでランタイム性能がC/C++に追い付かないそうです。

逆に言うとJITだからBuild時最低限の変換で済みデプロイできたと考えられ、「対処してみる」の初手で実施したアプローチの通りそもそもProjectが重すぎることが原因なのではないか?という説が濃厚に。

表に出ているエラーメッセージにそんな気配はないので、果たして本当にそうか疑問は残りますが。
Quest対応変換したアバターに切り替えたりしたらうまくいくかも?

更に困った事にUnityを再起動してProjectを読み直したらこんなエラーが。
Quest2としてはIL2CPPを使って、ARMv7ではなくARM64にしてほしいとのこと。
困っちゃったわね…

image.png

IL2CPP、ARM64で出来ればいいのですが…引き続き格闘です。
何か良いアイデアあれば頂きたいです…

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0