. Unityで口を動かすuLipSyncをいじってみたメモ。スクリプトで表情も変えてみたり
Unityで口を動かすuLipSyncをいじってみたメモ。スクリプトで表情も変えてみたり
Unityで口を動かすuLipSyncをいじってみたメモ。スクリプトで表情も変えてみたり

Unityで口を動かすuLipSyncをいじってみたメモ。スクリプトで表情も変えてみたり

バーチャル3Dクリエイター神部まゆみです(*^_^*)

この記事はuLipSyncをいじってみたのでそれについての記事です。

動作確認したバージョンは Unity2022.3.22、Unity6000.3.1、VRoid Studio v 2.10.0、uLipSync v3.1.4 です。

目次
  1. uLipSyncとは
    1. 似たようなリップシンクアセットにOVRLipsyncっていうのもあるけど…
  2. さっそく導入してみる
  3. サンプルを動かしてみる
    1. ユニティちゃんについてるコンポーネントを見てみる
  4. VRMモデルのサンプルもついてるから見てみる
    1. VRMモデルの場合はプレイヤー設定をいじる必要があるっぽい
  5. 私のモデルを動かしてみる
    1. サンプルの子をプレハブにして配置するとコピペしやすい
  6. これで動いた!ちゃんとアニメーションとも併用できるっぽい
    1. しかし強制無表情になってしまった
      1. アニメーションベイクすると良いっぽい?
    2. 【解決?】VRM0.xでやったら普通に表情ついてた
      1. VRM1.0はVRM Instanceの設定を変えたら表情は動いたけど、uLipSyncが動かなくなった
        1. 追記:UniVRMのバージョンを変えたらVRM1.0でも普通に動いた
      2. スクリプトで表情を変えることもできた
    3. パラメータを調整すれば口の大きさを微調整できるっぽい
      1. VRoidは口を開けすぎるとメッシュがはみ出るのでほどほどで…
  7. アニメーションやオーディオクリップ切り替えスクリプトと併用すると良い感じに使えるかな?
    1. EVMC4U+XR Animatorでモーションキャプチャーしながらでも使えた
    2. uLipSyncのオンオフを切り替えるスクリプトなど
  8. おわりに

uLipSyncとは

Unityで音声を元に口を動かせるリップシンクアセット。

3Dだけじゃなくて2Dのテクスチャも動かせるっぽいです。

GitHub - hecomi/uLipSync: MFCC-based LipSync plug-in for Unity using Job System and Burst CompilerMFCC-based LipSync plug-in for Unity using Job System and Burst Compiler - hecomi/uLipSyncgithub.com 似たようなリップシンクアセットにOVRLipsyncっていうのもあるけど…

Metaが開発してた?というか買収したOculusの技術だったのかな?でOVR Lipsync(Oculus Lipsync Unity)っていうのもあるけど、こちらは2021年以降更新されてないっぽいですね…。

一応Unity2022.3.22でもまだ動いたけど。

引用元:Unity開発用Oculusリップシンク | Meta Horizon OS Developers

↓こっちのページには「現在はサポート終了段階にあります。」「このドキュメントは今後更新されることはなく、削除される場合もあります。」などいつ消えるか分からないようなことも書いてありますね…。

End-of-Life Notice for Oculus Spatializer Plugin

Oculus Spatializer Pluginは、Meta XR Audio SDKに置き換えられ、現在はサポート終了段階にあります。v47より後については、サポートは提供されません。このSDKの使用を停止することを強くおすすめします。以下の中から、実際に使っているエンジンに対応するMeta XR Audio SDKのドキュメントをご覧ください。– Unity Native用Meta XR Audio SDK– FMODとUnity用Meta XR Audio SDK– WwiseとUnity用Meta XR Audio SDK– Unreal Native用Meta XR Audio SDK– FMODとUnreal用Meta XR Audio SDK– WwiseとUnreal用Meta XR Audio SDK

このドキュメントは今後更新されることはなく、削除される場合もあります。

引用元:Unity開発用Oculusリップシンク | Meta Horizon OS Developers

uLipSyncはまだ更新されてるから、unityでリップシンクを使いたいなら有力な乗り換え先なのかな?

とはいえ作者さんは有能なエンジニアの方でかなり忙しそうだから、今後どうなるかは分からないけども。

今は有能なエンジニアの方は引く手あまたで、良い仕事には困らないでしょうからね(;^_^A

さっそく導入してみる

ここから最新版をダウンロードできます。

Releases · hecomi/uLipSyncMFCC-based LipSync plug-in for Unity using Job System and Burst Compiler - hecomi/uLipSyncgithub.com

パッケージマネージャー経由からもできるみたいだけど、今回はunitypackageをダウンロードしてやってみます。

とりあえずアセットフォルダにunitypackageを放り込んでインポートします。

サンプルを動かしてみる

オーディオクリップを指定して動かすサンプルを使ってみます。

↓ここにあります。 Assets/uLipSync/Samples/01. Play AudioClip/01-1. Play Audio Clip.unity

おお、しっかり動いてますぞ!Σ(゚Д゚)

ユニティちゃんについてるコンポーネントを見てみる

とりあえず↓この三つで動いてるっぽい?他のコンポーネントは多分ユニティちゃんのデフォルトのやつかな。

・Audio Source

・U Lip Sync Blend Shape

・U Lip Sync

VRMモデルのサンプルもついてるから見てみる

VRoidのVRMモデルのサンプルもついてるから、これを使えばそのまま動かせるかな?

VRM0.xとVRM1.0用のものまであって便利です。 

Assets/uLipSync/Samples/04. VRM/04-2. VRM 1.0.unity

Assets/uLipSync/Samples/04. VRM/04-1. VRM 0.X.unity

とりあえずVRM1.0用でやってみます。

VRMモデルの場合はプレイヤー設定をいじる必要があるっぽい

このままでは動かないため、プレイヤー設定をいじる必要がありました。

↓スクリプティング定義シンボルとかいうところにVRM関連のやつを追加する必要があった。

詳しくは公式ページに書いてあります。

パッケージマネージャー経由の場合は自動で追加されるから不要っぽいけど、今回はunitypackageで追加したので必須でした。

GitHub - hecomi/uLipSync: MFCC-based LipSync plug-in for Unity using Job System and Burst CompilerMFCC-based LipSync plug-in for Unity using Job System and Burst Compiler - hecomi/uLipSyncgithub.com

VRM パッケージを .unitypackage からインストールする場合は、Scripting Define Symbols を手動で追加する必要があります。VRM 0.X の場合は を、VRM 1.0 の場合は を追加します。パッケージマネージャーを使用してパッケージを追加すると、これらのシンボルは自動的に追加されます。USE_VRM0XUSE_VRM10

これで動いた!

私のモデルを動かしてみる

とりあえずサンプルの三つのコンポーネントをコピペしてみます。

・Audio Source

・U Lip Sync Expression VRM

・U Lip Sync

を一つずつコピーして「新しいコンポーネントとして貼り付け」で。

VRM0の場合は U Lip Sync Expression VRM が U Lip Sync Blend shape VRM になります。

これだけだとダメっぽいので、On LipSync Updateのところを私のモデルに書き換えたら動きました!

↓書き換えたのはここで、ヒエラルキーのモデルをD&DすればOK。プロファイルはユニティちゃんのやつのままで大丈夫だった。

↑はVRM1.0の場合で、VRM0.xの場合はuLipSyncBlendShapeってやつでした。

これで無事動きました。

サンプルの子をプレハブにして配置するとコピペしやすい

好きなシーンでuLipSyncを動かしたい場合、サンプルシーンの子をプレハブにして配置したらコンポーネントをコピペしやすかったです。

VRM0用のシーンだとここにあります。VRM1モデルでセットアップしたいなら横のやつで。

Assets/uLipSync/Samples/04. VRM/04-1. VRM 0.X.unity

これで動いた!ちゃんとアニメーションとも併用できるっぽい

おお!ちゃんと動いたでござるぞ( *´艸`)

しかし強制無表情になってしまった

アニメーションには笑顔のブレンドシェイプを設定してあるのだけど、強制無表情になってしまった。

OVRLipsyncだとアニメーションに表情つけとけばそのまま口だけ動かしてくれたのだけど、uLipSyncだとダメとか?

ユニティちゃんはデフォルトが笑顔だから良いのか…でも悲しい顔や怒った顔でリップシンクできないとちょっと不便かなあ。

アニメーションベイクすると良いっぽい?

これやるとリップシンクのデータをアニメーションとして保存して、既存のアニメーションと組み合わせることができるみたいです。

アニメーションベイクまた、事前に計算されたリップシンク データである を に変換することもできます。アニメーションとして保存すると、他のアニメーションと組み合わせたり、既存のワークフローに統合したり、後でキーを動かして調整したりすることが容易になります。サンプルシーンはSamples/07です。アニメーションベイク。BakedDataAnimationClip

セットアップ[ウィンドウ] > [uLipSync > アニメーション クリップ ジェネレーター] を選択して、uLipSync アニメーション クリップ ジェネレーター ウィンドウを開きます。

トマシープ先輩のこの記事が参考になりそうです。

uLipSyncで事前録音した音声からTimelineでVRMモデルを口パク - トマシープが学ぶuLipSyncを久しぶりに使う bibinbaleo.hatenablog.com 2年ぶり! 準備 VRM 音声録音 Timeline Animationデータ 追記 別プロジェクトへ 準備 Unity2022.3.7 uLipSync...bibinbaleo.hatenablog.com uLipSync の VRM モデル向けリップシンクアニメーションベイクについて - 凹みTipsはじめに id:bibinbaleo さんのブログで uLipSync を試してみていただいており、その中で VRM モデルのアニメーション書き出しについての記述がありましたので補足解説させていただきます。 bibinbaleo.haten...tips.hecomi.com

しかしベイクは成功したけど口パクが生成されてなかったんですよね…私にはちょっと難易度が高くてよくわかりませんでした(-_-;)後でいじってみます…。

【解決?】VRM0.xでやったら普通に表情ついてた

あれ、でもVRoid StudioでVRM0.0で出力して動かしてみたら普通に表情ついてました。

表情ついてたというか、表情をつけたアニメーションクリップにリップシンクを合成することができた。

どうもVRM1.0はExpressionとかいう、VRM0.xとは違う方式を使ってるっぽい?たぶんそのあたりが原因かな…。

uLipSyncのコンポーネントもVRM1.0用だとExpressionなんとかっていうやつになってるっぽいですね。

VRM1.0は2022年9月に出た比較的新しい規格だから、もうしばらくはVRM0.xで行けば良いかなあ。

以前からあるVRM0.xのほうがエラー解決の情報とかも多いし…。

VRM0.xはURPに対応してないのがネックだけど、UTS3は全部のレンダーパイプラインに対応していてVRMに近い感じに調整できるのでおススメです。

VRM1.0はVRM Instanceの設定を変えたら表情は動いたけど、uLipSyncが動かなくなった

↓の記事で書いたけど、これやったら表情は動いたけど今度はuLipSyncが動かなくなった。

UnityでVRM1.0モデルのブレンドシェイプが動かない時の対処法メモUnityでVRM1.0モデルのブレンドシェイプが動かない時の対処法メモです。knb-mayumi.com2026.01.28

Updateなしの設定にしたわけだから、リップシンクのフレームもUpdateされなくなったってことか…?

VRM1.0はなんかめんどくさそうだから、とりあえずVRM0のほうを使おうかな…。

追記:UniVRMのバージョンを変えたらVRM1.0でも普通に動いた

UniVRMのバージョン変えてみたら普通に動きました。

UniVRM 0.128.3とUnity6000.0.32f1の組み合わせだとVRM1のLate Updateでも普通にブレンドシェイプもuLipSyncも動きました。

一旦UniVRMを削除して別のバージョンを入れ直してみたら直る可能性があるかも?

UniVRMを削除して入れ直す方法は↓の記事で書きましたが、マテリアルエラーになって設定し直す羽目になる可能性があるので自己責任で(^_^;)

unityでCS0246とCS0234エラーが出たので対処法メモ(UniVRMインポート時)unityにUniVRMをインポートしたらerror CS0246とerror CS0234:が出たので対処法のメモです。knb-mayumi.com2025.10.12

UniVRMはバージョンによって挙動が安定しなくて結構こういう不具合は遭遇してますね…。

結構UniVRMのバージョンを変えてみると直ることが多い気がします。

まぁ無料で使わせてもらってるから文句は言えないけども(^_^;)

スクリプトで表情を変えることもできた

↓以前キー入力でブレンドシェイプを切り替えるスクリプトを書いたけど、これも動かせました。

Unityでブレンドシェイプを切り替えるスクリプトを動かしたのでメモ。VRMモデルの表情をキーで切り替えUnityでブレンドシェイプを切り替えるスクリプトを動かしたのでメモです。VRMモデルの表情をキーで切り替えできます。knb-mayumi.com2025.12.17

↓こんな感じで動かせました。

うーん、キャラが生きてる感が出て凄いなこれは…!

胸がキュンキュンしてきますぜ( *´艸`)

VRoidの表情はこちらの記事でまとめておいたので興味がある方はどうぞ。

VRoidの表情まとめ。パラメーター数値や組み合わせ方などを画像で紹介VRoidの表情まとめです。パラメーター数値や組み合わせ方などを画像で紹介します。knb-mayumi.com2026.03.13

パラメータを調整すれば口の大きさを微調整できるっぽい

オーディオクリップのボリュームを調整するか、uLipSyncBlendShapeのVolume Min/Max(log10)を調整したら口の大きさを微調整できた。

Volume Min/Maxってのは多分どのくらいの音量でリップシンクが反応するか?みたいな閾値設定かな…?VRChatにもあって、閾値以下の音だとリップシンクを動かないようにできる。

オーディオクリップのボリュームを調整する場合は当然ながら音も小さくなってしまうため、Volume Min/Maxをいじったほうが良いかな。

COEIROINKさんで作ったヒソヒソ声を入れてみたら音が小さくてデフォルトだと検知しなかったため、音声によってここをいじって調整したほうが良いかもしれない。

VRoidは口を開けすぎるとメッシュがはみ出るのでほどほどで…

これVRoidだけってわけでもないかもしれないけど、あんまり口を開けすぎるとモデルの表示に不具合が出る可能性があります(-_-;)

少なくともVRoidは口を開けすぎると、口の中の白いメッシュ?が顎のあたりを貫通して突き出てくるっぽいので↓、大口を開けるのはほどほどにしといたほうが良いですね…。

たぶんこれは歯のあたりのメッシュが突き出てるのかな?まぁあんまり口を開けすぎないほうがいいっす(-_-;)

アニメーションやオーディオクリップ切り替えスクリプトと併用すると良い感じに使えるかな?

アニメーション切り替えスクリプトやオーディオクリップ切り替えスクリプトも書いたけど、これと併用したら任意にセリフや動作を変えられて可能性の幅が広がるかな?

Unityでアニメーションクリップを切り替えるスクリプトを書いた。速度も変更できるUnityでアニメーションクリップを切り替えるスクリプトを書きました。速度も変更できます。knb-mayumi.com2025.11.25 Unityでオーディオクリップをキー入力で切り替えるスクリプトを書いた!OVRLipSyncも動いたUnityでオーディオクリップをキー入力で切り替えるスクリプトを書きました。OVRLipSyncも動きました。knb-mayumi.com2025.02.10

あとマテリアル切り替えスクリプトも書いたけど、赤面させたりとかできるのでこういうのも使うと良いかな。

Unityでマテリアルを変更するスクリプトを書いた!キー入力でマテリアル切り替えUnityでマテリアルを変更するスクリプトを書きました。キー入力でマテリアル切り替えできます。knb-mayumi.com2025.10.12

用途次第だけど、VTuber的な動画を作ったりする場合はこうやって切り替えられると使い道が広がるかもしれない。

これ組み合わせればアニメとか作れそうだな…。いつか作ってみたいけど大変そうだ(^_^;)

EVMC4U+XR Animatorでモーションキャプチャーしながらでも使えた

EVMC4Uっていうアセットを使うとモーションキャプチャーしたモデルをunity内に表示できるので、VTuber的な動画を作るのに使えそうです。

EVMC4UをXR Animatorで動かしてみたメモ。Unityの世界に入ってモーションキャプチャーができるだと…Σ(゚Д゚)EVMC4UをXR Animatorで動かしてみた記事です。Unityの世界に入ってモーションキャプチャーができました。knb-mayumi.com2025.12.25

↓併用してみたけど普通に使えましたね。

生放送の場合はボイチェンか、音声入力で音声合成するのが無難かな…。

でも動画作成で使う場合にはスクリプトでオーディオクリップを切り替えながら動かせば、普通にVTuber的な動画を作るには十分な気がします。

Amazonとかで売ってるキーボード一体型のリモコンマウスみたいなのを使えば、キャラを動かしながらスクリプトを作動させて音声やブレンドシェイプを切り替えたりできそうです。

VOICEVOXやCOEIROINKだと、音声モデルによってヒソヒソ声みたいなASMRっぽい音声も作れるので、主観視点のシチュエーション動画とかも作れそうですw

uLipSyncのオンオフを切り替えるスクリプトなど

指定したコンポーネントをオンオフするスクリプトを↓に書いたので、これを使ってuLipSyncのオンオフを切り替えられました。

Unityで指定したコンポーネントをキー入力でオンオフするスクリプトを書いたのでメモバーチャル3Dクリエイター神部まゆみです(*^-^*)この記事はUnityで指定したコンポーネントをキー入力でオンオフするスクリプトを書いたので、それについての記事です。オブジェクトのインスペクターごとオンオフするスクリプトは以前書いたので...knb-mayumi.com2026.03.13

これで喋ったり無言にしたりできる。

使い道としては、オフにしてる間にオーディオクリップを切り替えるとかかな…。

アニメーションクリップで動かす場合、アニメーションイベントってヤツを使うとアニメーション中にスクリプトが発動できるので、任意のタイミングで音声を切り替えたりできると思います。

Unityのアニメーションイベントの使い方メモ。アニメーション中にスクリプトで音を鳴らせてびびったΣ(゚Д゚)Unityのアニメーションイベントの使い方についての記事です。アニメーション中にスクリプトで音を鳴らすことができました。knb-mayumi.com2025.12.23

良い感じに使えそうなら使ってみてくださいw

おわりに

案外簡単にできて良かった。

モーションキャプチャーと併用したりオーディオクリップ切り替えスクリプトと連動させたりすれば、普通にVTuberのシチュエーション動画とかも作れそうですね。

合成音声を使って耳かきや添い寝動画とかも頑張れば作れそうだけど、今度挑戦してみるかな…w

こんな凄いアセットが無料で使えるなんて良い時代になったもんだなぁ。

また何かあれば追記します(*^_^*)

📎📎📎📎📎📎📎📎📎📎