CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
プラグインコンポーネントを用いたリアルタイム口パク制御
本節では、CRIWARE Unity Plug-inとADX LipSync拡張プラグインを用いて 再生した音声からリアルタイムで口パターンを取得し、モデルに反映させる方法を解説します。

プラグインのインポート

CRIWARE Unity Plug-inがインポート済みのプロジェクトに対して、以下のプラグインを
追加でインポートしてください。

  * cri

  \ * expansion

    \ * cri_adx_lipsync

      \ * unity

        \ * plugin

          o * cri_adxlipsync_unity_plugin_vX_XX_XX_[プラットフォーム].unitypackage(AssemblyDefinition対応プラグイン)

          \ * obsolete

            \ * cri_adxlipsync_unity_plugin_vX_XX_XX_[プラットフォーム].unitypackage(従来構成プラグイン)

 

 

 

 

 

 

 

 

 

プラグインコンポーネントの使用

コンポーネントを使用することで、手軽にリップシンクを行うことができます。
各コンポーネントの詳細について以下のページを参照ください。

SDK アップデート時の注意

注意
SDK Ver3.05.xx までをご利用していて SDK Ver3.06.00 へ更新する場合
CriWare.CriLipsShape 系コンポーネントに代わる CriWare.CriLipsDeformer 系コンポーネントが追加されました。
CriWare.CriLipsDeformer 系コンポーネントは既存のコンポーネントと比べて、以下の機能が追加された新しいコンポーネントです。
  • AddComponent や実行中のモーフィングターゲットの再設定が簡易化
  • CriWare.ICriLipsMorph インターフェースを継承することによって、モーフィング処理を独自にカスタマイズ可能
新しいコンポーネントの追加により CriWare.CriLipsShape 系コンポーネントが非推奨となりました。
CriWare.CriLipsDeformer が使用可能でない古い一部の Unity のバージョンを除く)
ただし、 CriWare.CriLipsShape 系コンポーネントで提供されていたすべての機能は CriWare.CriLipsDeformer 系コンポーネントでもご利用可能です。

注意
SDK Ver3.00.xx から SDK Ver3.01.00 へ更新する場合
内部クラス CriLipsMeshMorph の構造体 BlendShapeNameMapping のプロパティを変更しました。
本仕様変更によりプラグイン更新後にシーンを開きなおすと設定済みのブレンドシェイプのマッピングが初期化されます。
プラグイン更新後に改めてブレンドシェイプの設定を行ってください。

変更箇所が多い場合は Unity シーンファイルをテキストエディタ等で開き、更新のあるマッピングに関する記述部分を以下のように編集してください。

exp4u_adxlipsync_namemapping_diff.png
widthHeightName, japaneseAIUEOName を削除し、インデントを揃える

プラグインコンポーネントを使用しない場合

コンポーネントを使用せず CriAtomExPlayer に直接アタッチして利用する場合、
下記の要領でスクリプトから口形状情報を取得することができます。
/* Atom連携口形状解析モジュールの作成 */
CriLipsAtomAnalyzer criLipsAtomAnalyzer = new CriLipsAtomAnalyzer();
/* 再生予定の音声のサンプリングレートを設定 */
criLipsAtomAnalyzer.SetSamplingRate(48000);
/* CriAtomExPlayerにアタッチ */
criLipsAtomAnalyzer.AttachToAtomExPlayer(criAtomExPlayer);
...
/* アタッチしたcriAtomExPlayerで音声再生中に口形状情報を取得 */
criLipsAtomAnalyzer.GetInfo(out info);
criLipsAtomAnalyzer.GetMorphTargetBlendAmountAsJapanese(out morphTargetBlendAmountAsJapanese);

また、再生予定の音声のサンプリングレートが複数ある場合は、下記の要領で実行時に
サンプリングレートを取得することも可能です。
/* 音声波形情報構造体 */
CriAtomEx.WaveformInfo waveformInfo;
/* acbハンドルから再生予定のキュー名を指定することでキューの波形情報を取得 */
atomExAcb.GetWaveFormInfo(cueName, out waveformInfo);
/* 取得した波形情報からサンプリングレートをAtom連携口形状解析モジュールにセットする */
criLipsAtomAnalyzer.SetSamplingRate(waveformInfo.samplingRate);