AI会話系アプリの試行錯誤

プログラミング

過去にAIを使ってキャラクターと会話できる~みたいなアプリの記事を出していましたが,実はこれ以降もVR空間で会話したりデスクトップに常駐させたりいろいろやっていたので,そのあたりの試行錯誤の過程のようなものを振り返りながらまとめてみたいと思います.規約的にアレな部分があるので具体的なことは一部省略しています.

これまで作成してきたもの

プロトタイプ

最初の最初に作ったプロトタイプ.細かい内容は記事を参照.以降のアプリは全て最初に作ったこれのコードをコピペしたり魔改造を施したりしながら作成されている.

英会話アプリ

英会話をモチベーション持って勉強できるようにと思って作成したアプリ.スマホ上で動いた方が気軽に起動できていいなと思い,軽い気持ちでAndroidで作成したら結構変えなくてはいけない部分があることが発覚.

  • 音声認識:Windowsの音声認識は当然使えないのでGoogle CloudのAPIに置き換え.最初に見つけたライブラリがGoogle Cloud用だったからという適当な理由で選定.
  • 合成音声:PC上で動作しているVOICEVOXは当然使えないのでAmazon Pollyに置き換え.他にもGoogle CloudやOpenAIなど様々な選択肢があったが,英語の合成音声が候補の中で一番好みだったからという主観的な理由で選定.
  • 3Dモデル:プロトタイプで使っていた変換ツールの制約上,Androidで動作できないことにビルドしてから気づいた.変換不要なfbx形式で配布されているものを使用.
  • 顔認識:スマホだとフレームレートが落ちるほど重かったので無効にした.よく考えれば手に持って使う想定なら最初からいらなかった.

最終的に期待通りのものが作成できたものの,そもそも日本語でも会話するのがそれほど得意ではないのに英語で会話するのは難しいのでは?ということに気づいてしまう.

VR会話アプリ

Meta Questをレンタルして遊んでいた時に作成したVR会話アプリ.VRアプリと言っても動作自体はQuestではなくWindowsなので,VR用の設定をするだけで割と簡単に動いた印象.差分は以下.

  • 音声認識:Windows標準のものに再度置き換え.
  • 合成音声:VOICEVOXに再度置き換え.

自身の座標がトラッキングされるので,顔認識等を入れなくても目線を動かすことができて楽しい.あとキャラクターが立体的に見えるのでなんかすごい.VRChatにハマってしまう人の気持ちがなんとなくわかる気がした(実際VRChatもちょっとやってみた)が,自分は3D酔いが先に来てしまった.

デスクトップ常駐会話アプリ

(規約により動画・画像なし)

「Desktop Mate」というデスクトップ上でキャラクターが動くアプリが発売されたのを見て,同じようなものが作れるのでは?と思い立ち作ったデスクトップ常駐型の会話アプリ.これまでとの差分は以下.

  • AppWindowUtility:今回の中核を担うライブラリで,画面透過やウィンドウ操作などができる.
  • レンダリングパイプライン:これまでURPを使用してビルドしていたが,画面透過をするのにHDRPにする必要があるらしいのでこちらに変更.
  • 音声認識:Windowsの音声認識はウィンドウのフォーカスが外れると使えなくなってしまう(途中で気づいた)ので,Google Cloud APIに再度置き換え.
  • 会話:APIリクエストをべた書きからOpenAI SDK経由のものに置き換えようとしたが,Unity標準のC#はバージョンが古くライブラリの要件を満たせなかった(バージョンを上げる方法もあるが,一度面倒なことになった記憶があるのでやらないことにしている)

最終的に単体では満足できるそれっぽいものができたものの,いざ他のことをしてみると邪魔だな…という気持ちが勝ってしまった.昔は某イルカとか某ヒツジとかも消してたなぁ.

(最終系)普通の会話アプリ

(規約により動画・画像なし)

現在開発中の(一番普通の)Windowsで動く会話アプリ.最終系とひとまとめにしているが,実際には何パターンかある.現在の構成は以下.

  • 音声認識:OpenAIのものに置き換え.Windows標準のものはWindows11のアップデートをしたらいつのまにか使えなくなってしまった(元々Windows10しか正式対応してなかった).Google Cloudのものは英会話アプリで使っていた非公式ライブラリはいつのまにか非推奨になっていた.会話AI用のトークンが余っていたので,OpenAIのAPIを選択.
  • 合成音声:キャラクターに合わせてVOICEVOX,Amazon Polly,VITS,Voisona talkから選べるようにした.
  • 会話モデル:引き続きOpenAIのモデルを使用.ローカルLLMを試しに使ってみたが,GPUにLLM,3Dレンダリング,(方式によっては)音声合成を担わせるのは過負荷であったのでやめた.

キャラクターと会話できるアプリとしてある程度の形にはできたものの,素材やツールの都合上公開できないものになってしまった.でもローカルでは動くからいいか…

終わりに

ホームページの更新をサボっている裏で細々とAI会話系のアプリを作って遊んでみたものの,題材的に作りこもうとすればするほど規約や著作権的に公開できないものが出来上がってしまうという若干のもどかしさがありました.

せっかくホームページという公開する場がある以上,今後はちゃんと公開できるようなものも作っていきたいですね.

コメント

タイトルとURLをコピーしました