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

ulipsync 使い方 Unityアセット
※記事内に広告が含まれています。

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

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

動作確認したバージョンはUnity2022.3.22、Unity6000.0.32です。

●PRスペース●
■PR■

現在、3D自然環境系アセットが50%オフで買える Unityパブリッシャーセール をやってるみたいです(2025/09/25 23:59まで)。

Unity パブリッシャーセール 50%オフ

クーポンコード JASONBOOTH を使うと、↓3D自然環境を手軽に作れるMicro Verseアセットがタダで貰えます(決済時にクーポンコード入力適用で0円に)。

unity MicroVerse asset

無料アセットだけでも貰っておくと良いかも。

〇まゆみマート|BOOTH

BOOTHでVRoidテクスチャやVRChat向けオブジェクトなどを販売しています。いいねしてくれると励みになります(*^-^*)

uLipSyncとは

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

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

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

音声データをもとに口の形状がどうなるか解析してるみたい?↓こちらの先輩の説明が分かりやすかったです。ありがとうございます。

Unityで口パクをつけられるプラグイン「uLipSync」のご紹介

似たようなリップシンクアセットにOVRLipsyncっていうのもあるけど…

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

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

Oculus Lipsync Unity OVRLipsync

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

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

Oculus Lipsync Unity OVRLipsync

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/uLipSync
MFCC-based LipSync plug-in for Unity using Job System and Burst Compiler - hecomi/uLipSync

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

ulipsync 使い方

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

サンプルを動かしてみる

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

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

ulipsync 使い方

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

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

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

ulipsync 使い方

・Audio Source

・U Lip Sync Blend Shape

・U Lip Sync

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

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

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

ulipsync 使い方

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 Compiler
MFCC-based LipSync plug-in for Unity using Job System and Burst Compiler - hecomi/uLipSync
ulipsync 使い方

VRM パッケージを .unitypackage からインストールする場合は、Scripting Define Symbols を手動で追加する必要があります。VRM 0.X の場合は を、VRM 1.0 の場合は を追加します。パッケージマネージャーを使用してパッケージを追加すると、これらのシンボルは自動的に追加されます。
USE_VRM0X
USE_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。プロファイルはユニティちゃんのやつのままで大丈夫だった。

ulipsync 使い方
ulipsync 使い方

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

これで無事動きました。

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

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

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

ulipsync

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

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

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

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

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

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

ulipsync 使い方

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

ulipsync 使い方

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

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

ulipsync 使い方

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

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

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

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

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

【解決?】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が動かなくなった。

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

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

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

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

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

vrm1 ブレンドシェイプ 動かない

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

おわりに

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

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

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

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

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

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