よーへん(バーチャル学芸員・バーチャルライブコーダ)

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて…

よーへん(バーチャル学芸員・バーチャルライブコーダ)

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを。参照していないものに関しては、コピペ改変まったく問いません。

最近の記事

Unity+Whisper+OpenAI+VOICEVOXのセットアップ

Unityを使ってAIキャラクターと対話するプロジェクトを作る際の準備について自分備忘録としてメモしました。 VRM最新バージョン(2024.8.19現在)の仕様が変わったため、uLipSyncなどのライブラリを入れる順番に気を付ける必要が出てきました。 具体的なコードについては参考部分をリンクしました。 準備1.PackageManagerから「Burst」をインポートする 2.VRM0.xを使うので、PackageManagerから以下2つをインポートする 3.Pa

    • uLipSyncをTimelineで使う&音声ファイルから口パクアニメーションを自動で作る

      uLipSyncをTimelineで使う際にハマったことがあったので、忘れないようにメモしました。 VRM0.xを使う場合、Githubのページからダウンロードしたパッケージをインポートすると、「uLipSync BlendShape VRM」がエラーになっていて使えない場合があります。その回避方法も含めてメモしています。 (これはuLipSyncが悪いのではなく、Unityの仕様だそうです) 全体的な準備1.PackageManagerから「Burst」をインポートする

      • Quest3で疑似フルトラモーキャプする(上半身+手キャプチャ、下半身機械学習での動作)

        こんな感じになります。 準備こちらを参考にさせて頂きました。SDKのバージョンが違うので諸所異なっています。 1.2021以降でプロジェクトを作成し、以下をインポートする 2.Build SettingsでプラットフォームをAndroidにSwitchする 3.「Oculus」→「Tools」→「Project Setup Tool」を選択して、FixAllやApllyを押して赤い警告マークが消えるようにする ただしこれだけ残ってしまうので、次の項目で解決する 4.

        • GPT-4oとFunction callingをUnityで動かす

          今さらですが、ようやくFunction callingをUnityで使う方法が分かったので、忘れないうちにメモをしておきます。 これはLLMから関数を実行するもので、そこに処理を書いておけば特定の処理を呼び出して実行することができます。 例えば以下のようなことができます。 ・「写真を撮って」がトリガー→写真(スクリーンショット)を撮る ・「前へ進んで」がトリガー→オブジェクトを前方に移動させる ・「今日の天気は?」がトリガー→天気を調べて伝える 右側はコード内で自分で設定しな

          非公式クライアントライブラリClaudiaを使って、Claude3とFunction CallingをUnityで動かす

          Claude3をUnityで動かすにあたり、ChatGPTのAPIと同じくUnityWebRequestでAPIを呼び出して対話することもできるのですが、今回はLLMの出力から関数を呼び出すFunction Callingも簡単に実装できる非公式ライブラリ「Claudia」を使ってUnityで対話します。またFunction Callingも実装していきます。 非公式と言ってもUniTaskを作った会社さんのライブラリなので、今後のメンテ等も大丈夫だろうということで使っていき

          非公式クライアントライブラリClaudiaを使って、Claude3とFunction CallingをUnityで動かす

          rinnaのKoeiromap API(v1.0)を使ってUnityでテキスト読み上げをする

          AIキャラクターの実装にあたって、Style-Bert-VITS2を使ってテキストの読み上げをしていたのですが、Quest3+PCで動かしたときに(おそらく)VRAMが足りずQuest3の画面に黒いブロックノイズが乗ってしまいました。 動作もかなり重く遅くなっていたので、別の読み上げ手段を探していたところ、rinnaのKoeiromap APIを使うことにしました。 サーバ上で処理をしているWhisperと同じケースですが、かなり高速でしゃべり方も自然なので、キャラクターイメ

          rinnaのKoeiromap API(v1.0)を使ってUnityでテキスト読み上げをする

          Modular avatarで着替えさせたVRCアバターをVRMにする

          Modular avatarで着替えさせたVRCアバターをVRM Converter for VRChatを使ってVRMにしたとき、(おそらく)BlendShapeが暴走してメッシュがおかしくなることがあります。顔のメッシュもおかしいので、SpringBoneが原因とは一眼には言えない気がします。 これはおま環か特定のアバターか原因が分かりませんが、正常に書き出す方法をメモしておきます。 準備1.以下をダウンロードしておく やり方基本的にはこちらのやり方に従って行えばいい

          Modular avatarで着替えさせたVRCアバターをVRMにする

          Whisper+Unityでマイクの音量によって音声の書き起こしを行う

          WhisperとUnityを使って音声の書き起こしを行います。ボタンを押してマイクに話すと書き起こしが動作するという安全策を多くは取りますが、いちいちボタンを押すのが煩わしい場合があります。 そこでここでは音量をトリガーにして、マイクの音量が特定の範囲内であれば書き起こしを行うようにします。 どうやっても上手くいかなかったので、こちらのライブラリを参考にさせて頂きました。ありがとうございます。 準備1.UniTaskをインポートする 2.UIのTextを3つ作成する。ひと

          Whisper+Unityでマイクの音量によって音声の書き起こしを行う

          GPT-4oをUnityで動かす

          OpenAIから新しいモデル「GPT-4o」が出ました。文章生成・音声・画像すべての能力がアップされているそうなので、テキスト生成・画像解析を一通りUnityでやってみることにします。 基本的なコードはこちらを参考にさせて頂きました。ありがとうございます。 準備1.以下からUniTaskをダウンロードし、インポートする 2.UIのInputField、Button、Textを作成する 3.JSONを成形する「Newtonsoft Json」をインポートするため、Pack

          Unityを使ってChatGPTとテキスト対話する

          シンプルにUnityのInputFieldに質問したいテキストを入力し、ボタンを押したらChatGPTが返答してくれるというものを作ります。 いちばんのベースになるものですが、忘れてしまうこともあるので個人的メモです。 なおコードの作成にあたり、下記を参考にさせて頂いています。ありがとうございます。 準備1.以下からUniTaskをダウンロードし、インポートする 2.UIのInputField、Button、Textを作成する コードを作成する 1.以下のスクリプトを作

          Whisper+ChatGPT+Style-Bert-VITS2でUnityを使ってAIと会話する

          Whisper+ChatGPT+Style-Bert-VITS2を使って、以下ができるようにするメモです。 1.Whisperで音声認識する 2.1.で音声認識したものをChatGPTに送って返答が返ってくる 3.返答をStyle-Bert-VITS2で読み上げさせ、同時に口パクさせる といったものです。2.の時点で感情表現も返すようにChatGPTに指示をしているので、それを使えば表情やアニメーションの変化もできます。ここでは助長になるので、ひとまず3.までをやってみます。

          Whisper+ChatGPT+Style-Bert-VITS2でUnityを使ってAIと会話する

          Unityでランダムにアニメーションを再生する

          ※他の状態に遷移したときにアニメーションの再生が終わらないと遷移が開始されないというトラブルがあったので、それを解消したバージョンを追記しました。 受容がありそうでなかなか情報がなかったのでメモしました。 こちらを参考にさせて頂きましたが、Unityの仕様が2024年現在とは異なるため、一部修正が必要でした。 今回の仕様は拡張しやすくするため、以下のようにしました。 1.Playボタンを押すとIdel状態で、他の状態に遷移するまでランダムにアニメーションを再生する 2.特

          Unityでランダムにアニメーションを再生する

          Style-Bert-VITS2の読み上げをUnityで使う(補足あり)

          Style-Bert-VITS2のAPIにHTTPリクエストを送信し、生成された読み上げ用サウンドファイルをUnityで再生します。 ・Style-Bert-VITS2のダウンロード ・ローカルセットアップ ・モデルインポート はすでにできているとします。 Style-Bert-VITS2のAPIでの読み上げは100文字が限界ですが、AIキャラクターとのやり取りの場合は100文字がちょうどいいくらいなので、プロンプトで「50文字以内、かつ最大2文で返答してください」と指定

          Style-Bert-VITS2の読み上げをUnityで使う(補足あり)

          PythonでOpenAIを使って対話する

          APIが新しくなり、以前のよくある「openai.Completion.create」が使えなくなっているので、改めてメモしました。 一応OpenAIのクイックスタートガイドに例が載っていますが、返答だけ取り出す方法が書かれていなかったので、それを追記しています。 ロールの指定の方法などは以前と変わりませんが、「openai.Completion.create」が使えないのと本文取り出しの方法だけ注意が必要です。 import osimport astfrom openai

          OpenAIの読み上げ機能を使って、音声を書き出すアプリを作りPowerPointで使う

          OpenAIが少し前に出した読み上げ機能を使って、テキストを音声ファイル(.mp3)に書き出す方法をメモしました。Unityなどでテキストをすぐに読み上げるようにするには工夫が必要ですが、所用でファイルにしてPowerPointに埋め込む必要があったので、ひとまずこの方法で行います。 なおこの内容は2024年2月22日時点のものです。 準備1.Python 3.11.7をインストールする 2.以下のコマンドをターミナルやPowerShell、コマンドプロンプトに入力してエ

          OpenAIの読み上げ機能を使って、音声を書き出すアプリを作りPowerPointで使う

          uOSCでInputFieldからIPアドレスを入力する

          ローカル通信をUnityアプリで行う場合、uOSCを使うことが多いですが、IPアドレスがインスペクタから入力するようになっています。 ライブラリそのものに手を入れても良いのですが少し怖いので、別途IPアドレスを上書きする方法を取ることにしました。 uOSCのインポート下記からuOSCのUnityパッケージをダウンロードし、インポートします。 PCアプリでのIPアドレス入力1.自分のプロジェクトを作成する前に、適当なGameBojectを作成してサンプルにある「Client