先日、合成音声ソフト「CeVIO AI」の新作である「CeVIO AI 小春六花 トークボイス」が発売されました。
早速購入したところ、3Dモデルもついており、せっかくなのでUnityで口パク付きで喋ってもらうことにしました。
音声準備
CeVIO AIトークエディタで音声を作成します。
CeVIO AIは初めてですが、イントネーションの設定や感情の設定などインターフェースが分かりやすくて直感的に操作できます。
まだ全部を試してはいませんが、Voiceroidよりもできることは多そうですね。
今回は特にチューニングせず、簡単に音声を作成して.wavで出力しました。
モデル用意
同梱されていた3DモデルはMMDのため、Unity内でMMD4Mechanimを使って、FBX形式に変換しました。
OVRLipsync(口パク実装)
OVRLipsyncはOculusが出しているリップシンク用パッケージです。今回行う音声データに基づいたリップシンクの他、マイク入力音声からリップシンク、笑い声の検出を行うこともできます。
OVRLipsync導入
OVRLipsyncダウンロードページからzipファイルをダウンロードします。
zipファイル内のOculusLipSync.unitypackageをUnityにインポートするだけで導入は完了です。
コンポーネントの取り付け
- 空のオブジェクトを作成し、
OVRLipSyncを取り付けます。 - 空間上にリップシンクを行う3Dモデルを配置し、
OVRLipSyncContextとOVRLipSyncContextMorphTargetを取り付けてください。
- この時AudioSourceが自動で取り付けられます。
リップシンクの設定
リップシンクの設定は3Dモデルに取り付けたOVRLipSyncContextMorphTargetで行います。

-
スキンメッシュレンダラーに顔部分のメッシュを選択します。 -
Viseme To Blend Targetsには15種類の口形素が定義されています。そして、それぞれの口形素にBlendShapesのインデックスを対応付けすることでリップシンクが行えます。- 例)
Viseme To Blend Targetsの要素10に0と入れた状態で、「あ」と発音した場合、「あ」の口形素であるViseme To Blend Targetsの要素10に対応付けた、インデックス0のBlendShapes(0.あ)が動きます。 - 設定項目は15個ありますが、それぞれどのような発音、口の動きを想定しているかは公式リファレンスやVRChat Wikiを覗いてみてください。
- 例)
- 今回は母音のみ対応付けました。
| Viseme To Blend Targets | BlendShapesインデックス |
|---|---|
| 要素10 | 0 (0.あ) |
| 要素11 | 3 (3.え) |
| 要素12 | 1 (1.い) |
| 要素13 | 4 (4.お) |
| 要素14 | 2 (2.う) |
![]() |
音声の設定
- 冒頭の音声準備で作成した音声wavファイルをunityにインポートします。
- 3Dモデルに取り付けられているAudioSource(OVRLipSyncContextを取り付けた際に自動で追加されます)の
オーディオクリップにインポートした音声ファイルを取り付けます。 -
OVRLipSyncContextのAudio Loopbackにチェックを入れます。
結果
特にコーディングなしでリップシンクができるのは手軽でいいですね!
(口の広がりが足りないときはOVRLipSyncContextのGainを大きくしてみてください(デフォルト: 1))
(あとはCevio AIでリアルタイムに文字読み上げとかできればAI Vtuberとかできそうで面白そう。。。)


