APIリファレンス

ビルド設定の変更

CRIWARE ADX LipSync Plugin の API を C++ コード から呼び出すには、プロジェクトのモジュールファイルを 変更して CriWareAdxLipSync モジュールと CriWareRuntime モジュールへの依存関係を追加する必要があります。
public class MyProject : ModuleRules
{
public MyProject(TargetInfo Target)
{
/* CriWareAdxLipSync */
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "CriWareRuntime", "CriWareAdxLipSync"});
}
}

ヘッダファイルのインクルード

CRIWARE ADX LipSync Plugin の API は複数のヘッダファイルに定義されています。
  • Plugins/Runtime/CriWare/CriWareAdxLipSync/Source/CriWareAdxLipSync/Public/LipsAtomAnalyzer.h : API for Unreal Engine C++
  • Plugins/Runtime/CriWare/CriWare/Source/CriWareRuntime/Public/CriAdxLipSyncApi.h : C-style API

FCriLipsMouthInfo

口形状情報を格納する構造体です。下記のメンバが定義されています。

float LipWidth

口の幅(0.0f 以上 1.0f 以下)

float LipHeight

口の高さ(0.0f 以上 1.0f 以下)

float TonguePosition

舌の位置(0.0f 以上 1.0f 以下)

bool IsLipWidthReleased

口の幅が閉じ状態に遷移中か

bool IsLipHeightReleased

口の高さが閉じ状態に遷移中か

bool IsTonguePositionReleased

舌の位置が閉じ状態に遷移中か

FCriLipsMorphTargetBlendAmountAsJapanese

口形状情報を格納する構造体です。下記のメンバが定義されています。

float A

モーフターゲット「あ」のブレンド量(0.0f 以上 1.0f 以下)

float I

モーフターゲット「い」のブレンド量(0.0f 以上 1.0f 以下)

float U

モーフターゲット「う」のブレンド量(0.0f 以上 1.0f 以下)

float E

モーフターゲット「え」のブレンド量(0.0f 以上 1.0f 以下)

float O

モーフターゲット「お」のブレンド量(0.0f 以上 1.0f 以下)

ULipsAtomAnalyzer

ULipsAtomAnalyzer は口形状情報の生成・取得のためのクラスです。ユーザはこのクラスからオブジェクトを作成し、UAtomComponentと紐付ける必要があります。 ULipsAtomAnalyzerオブジェクトは、自分に紐付けられたUAtomComponentオブジェクトで再生中の音声を自動的かつリアルタイムに解析し、口形状情報を生成します。 ユーザはULipsAtomAnalyzerオブジェクトのインタフェースを介して口形状情報を取得できます。
本クラスでは下記のインタフェースを提供しています。

Init(const int32 MaxInputSamplingRate)

UFUNCTION(BlueprintCallable, Category = "CriLipsAnalyzerCommon")
void Init(const int32 MaxInputSamplingRate);

口パターン解析オブジェクトを初期化します。
本関数を呼び出した時点で、Atom音声解析モジュール LipsAtomAnalyzer が
CRI ライブラリ内部で作成されます。また、その他の必要な内部リソースが確保されます。
本関数を呼び出さずに口パターンデータの取得はできません。
引数
MaxInputSamplingRate最大入力サンプリングレート

GetInfo()

UFUNCTION(BlueprintCallable, Category = "CriLipsAnalyzerCommon")
FCriLipsMouthInfo GetInfo () const;

口形状情報を取得します。
音声データを解析して得られた口形状情報の取得を行います。

戻り値
入力音声を解析した結果の口形状情報

GetMorphTargetBlendAmountAsJapanese()

UFUNCTION(BlueprintCallable, Category = "CriLipsAnalyzerCommon")
FCriLipsMorphTargetBlendAmountAsJapanese GetMorphTargetBlendAmountAsJapanese() const;

日本語5母音モーフターゲットブレンド量の取得
音声データを解析して得られた日本語5母音モーフターゲットブレンド量の取得を行います。

戻り値
入力音声を解析した結果の日本語5母音モーフターゲットブレンド量

GetVolume()

UFUNCTION(BlueprintCallable, Category = "CriLipsAnalyzerCommon")
float GetVolume() const;

音量の取得
解析した音声データ(サンプル)の音量(dB)を取得します。

戻り値
解析サンプルの音量(dB)

SetSamplingRate(const int SamplingRateHz)

UFUNCTION(BlueprintCallable, Category = "CriLipsAnalyzerCommon")
void SetSamplingRate(const int SamplingRateHz);

サンプリング周波数の設定
解析対象の音声データのサンプリング周波数を設定します。
音声を再生する前に波形データのサンプリング周波数を設定してください。
本関数を呼び出すと、内部状態がクリアされます。
解析可能なサンプリング周波数は 16000 Hz以上です。
引数
SamplingRateサンプリング周波数
戻り値
設定に成功すればtrue、失敗すればfalse

SetSilenceThreshold(const float VolumeDb)

UFUNCTION(BlueprintCallable, Category = "CriLipsAnalyzerCommon")
void SetSilenceThreshold(const float VolumeDb);

無音判定音量閾値の設定
解析対象の音声データを無音として判定する最大音量(dB)を、0以下の値で設定します。
デフォルト状態では-60dBに設定されています。
引数
VolumeDb最大音量(dB)
戻り値
設定に成功すれば true、失敗すれば false

GetSilenceThreshold()

UFUNCTION(BlueprintCallable, Category = "CriLipsAnalyzerCommon")
float GetSilenceThreshold() const;

無音判定音量閾値の取得
CriAtomExPlayer から出力された解析対象のサンプルを無音として判定する最大音量(dB)を取得します。
エラー発生時は 0 より大きい値が返ります。

戻り値
最大音量(dB)

IsAtSilence()

UFUNCTION(BlueprintCallable, Category = "CriLipsAnalyzerCommon")
bool IsAtSilence() const;

発音がなく、口を閉じているかどうかの取得
現在の状態が発音中でないか(口が閉じているか)どうかを取得します。
音声を未再生の場合、無音を再生中の場合、音声再生後に時間が経過した場合などに
本関数は true を返します。

戻り値
口が閉じていれば true、開いていれば false

GetInfoAtSilence()

UFUNCTION(BlueprintCallable, Category = "CriLipsAnalyzerCommon")
FCriLipsMouthInfo GetInfoAtSilence() const;

無音状態での口形状情報の取得
無音状態( IsAtSilence() が true を返す状態)で取得できる
閉じた口形状情報を取得します。

戻り値
閉じた口形状情報

Attach(UAtomComponent* InAtomComponent)

UFUNCTION(BlueprintCallable, Category = "LipsAtomAnalyzer")
void Attach(UAtomComponent* InAtomComponent);

AtomComponentへのアタッチ
解析対象の AtomComponent にアナライザーをアタッチ(取り付け)します。
本関数呼び出し後、AtomComponent で再生した音声について解析が行われ、
口形状情報と、日本語5母音モーフターゲットブレンド量の取得が行えるようになります。
アナライザーのアタッチ先として指定した AtomComponent が音声を再生中の場合、強制的に停止されます。
本関数呼び出し時、引数に指定した AtomComponent のステータスは即座に EAtomComponentStatus::Stop になります。
また、既にアナライザーが別の AtomComponent にアタッチ済みだった場合、本関数の内部では
既存の AtomComponent を強制的に停止してデタッチ処理を行います。
その後、新しい AtomComponent へのアタッチ処理を実行します。
引数
AtomComponentAtomComponentオブジェクト

Detach()

UFUNCTION(BlueprintCallable, Category = "LipsAtomAnalyzer")
void Detach();

AtomComponentからのデタッチ
解析対象の AtomComponent からアナライザーをデタッチ(取り外し)します。
それまでアタッチしていた AtomComponent は強制的に音声再生を停止されます。
アナライザーをデタッチ後の AtomComponent のステータスは、
即座に EAtomComponentStatus::Stop になる点に注意してください。