要件
Unity: 6000.3.2f1
UniVRM: 0.108.0
URPプロジェクト
はじめに
音声を解析してキャラクターの口を動かす uLipSync を、
UPM(Package Manager)経由で導入し、
VRM1.0モデルに適用するメモです。
1.uLipSyncの導入
uLipSync は いろいろな導入方法がありますが、
今回は UPM(Package Manager)で導入します。
1-1. UPM(Package Manager)前準備
→編集
→プロジェクト設定

→パッケージマネージャー
こちらでパッケージの場所を指定します。

下記を入力して保存を押します。
名前:hecomi-npm(なんでもいいです)
URL:https://registry.npmjs.com
Scope(s):com.hecomi
→保存

1-2.パッケージマネージャーからインストール
→ウインドウ
→Package Management
→パッケージマネージャー

→マイレジストリ
→hecomi-npm(先ほどつけた名前)
→uLipSync
→インストール

パッケージが署名されていないというウインドウが出た場合は
「パッケージマネージャー」のボタンを押します。

これでインストール完了です。

2.uLipSyncのVRMサンプルを使用できる状態にする
VRMを動かすサンプルのダウンロード後、
プロジェクト設定を少し変更し、サンプルを使える状態にします。
2-1. VRM サンプルをダウンロード
uLipSyncではサンプルが複数用意されているためこちらを活用していきます。
パッケージマネージャーのuLipSyncを表示した状態
→サンプル
→04. VRM
→インポート

インストール後、プロジェクトタブにサンプルのフォルダが表示されます。

2-2.プロジェクト設定変更
今回、VRM1.0を使用するということで設定が必要です。
→編集
→プロジェクト設定

→プレイヤー
→スクリプトコンパイル
→「+」ボタン

→「USE_VRM10」を入力
→「適用する」を押す

以上で準備完了です。
3.サンプルを動作させる
3-1.サンプルを開く
先ほどインポートした「04.VRM」フォルダの「04-2.VRM1.0」シーンを開きます。

3-2.同梱モデルのマテリアルを変更
URPプロジェクトの場合はマテリアルが対応しておらずピンク色になってしまいます。
修正するには下記の手順でマテリアルの設定を変更してください。
→04.VRMフォルダ
→VRMフォルダ
→1.0フォルダ
→ uLipSync-VRM1 をクリック
→インスペクターの上部「Materials」をクリック
→Render Pipeline を「Universal Render Pipeline」へ変更
→「適用する」をクリック

モデルがエラーなく表示されました。

3-3. 3つのコンポーネントを設定
リップシンクを行うにあたり、
VRMオブジェクトに追加が必要なコンポーネントは次の3つです。
・Audio Source(音声ファイルを再生する)
・U Lip Sync(メインのリップシンク処理コンポーネント)
・U Lip Sync Expression VRM(VRM の表情に反映する)

サンプルのオブジェクトには追加済みとなっています。
リップシンク実現に向けた必要な設定していきます。
3-3-1.Audio Source コンポーネント
Audio Source には再生する音源を登録します。
プロジェクトに使用したい音源をインポートし、
Audio Source コンポーネントのAudio Generator 欄に割り当てます。

3-3-2.U Lip Sync コンポーネント
U Lip Sync コンポーネントは、
音源を解析して指定のプログラムに情報を伝達するコンポーネントです。
まずは、プロファイルの設定を行います。
プロファイルとは?
音声解析結果を“どの口形(Viseme)にどれだけ反映するか”を決める設定データです。
プロファイルデータはサンプルを用意していただいているので
サンプルをそのまま使用します。
→「プロジェクト」タブ
→Packages
→uLipSync
→Assets
→Profiles
→uLipSync-Profile-Sample-Female をプロファイル欄に割当て

割当て後はこのように表示されます。

次に解析情報を伝える設定をします。
実はすでに登録済みなのですが、モデルが変わった時に設定が必要なため書いておきます。
設定する箇所は画像の部分です。

これは下記の情報を登録する内容になっています。
・動作させたいオブジェクトを指定
・どのコンポーネント の どの処理かを動かすか を指定
設定を解除して最初から登録すると次のようになります。
動作させたいオブジェクトを指定

処理内容を指定
→「U Lip Sync Expression VRM」コンポーネントの「OnLipSyncUpdate」を登録

3-3-3.U Lip Sync Expression VRM コンポーネント
U Lip Sync Expression VRM コンポーネントは、
VRMの表情にアクセスするコンポーネントです。
表情に反映する強さを変更することができます。

たとえば、母音の"A"成分をなくしたい場合は、該当する値を0にすることで実現可能です。

実際に実行して調整することになるでしょう。
4.確認
実行してリップシンクしていることを確認します。

おわりに
手軽にリップシンクができてしまうuLipSyncに感謝です。
この記事がなにかお役に立てましたら幸いです。