VoicevoxEngine For UE リップシンクコンポーネント
VoicevoxEngine For UE Ver1.2にリップシンク再生を行うコンポーネントを追加しました。
© 2025 arayz. All rights reserved.
クラス(Blueprint Class)
- VoicevoxCharacter
- VoicecoxCharacterLipSyncAudioComponentを追加したCharacterクラスです。
VoicevoxCharacterは以下の機能が追加されています。
- VoicecoxCharacterLipSyncAudioComponentが追加
- 初期化時に自動でスケルタルメッシュをコンポーネントに紐づける処理が実行
コンポーネント
- UAbstractLipSyncAudioComponent
- C++専用です。Blueprintでは使用できません。
- AudioComponentを継承しています。
- リップシンク再生に必要な引数、関数をまとめたクラスです。
- 独自のコンポーネントを作成したい場合は、このクラスを継承してください。
- VoicevoxLipSyncAudioComponent
- VOICEVOXで変換したサウンドデータとAudioQueryから生成したリップシンクデータから、サウンド再生&リップシンクを実行するコンポーネントです。
- UAbstractLipSyncAudioComponentを継承しています。
- VoicecoxCharacterLipSyncAudioComponent
- VoicevoxLipSyncAudioComponentとほぼ同様のコンポーネントです。
- UAbstractLipSyncAudioComponentを継承しています。
- VoicevoxCharacterクラスで使用することを想定したコンポーネントです。
- 通常のCharacterクラスのSkeltalMesh(Mesh)がBlueprintに限り読み取り専用となっており、引数として渡すことが仕様上不可となっています。
- BlueprintでCharacterクラスを使用する場合は、VoicevoxLipSyncAudioComponentコンポーネントを使用してください。
- サウンド再生時にスケルタルメッシュのモーフターゲットを更新するため、LipSyncMorphNameMapにモーフターゲット名を設定するのが必須です。
使い方
Blueprint、C++共に使用方法は共通です。
VoicevoxLipSyncAudioComponent
- VoicevoxLipSyncAudioComponentを追加
- LipSyncMorphNameMapにモーフターゲット名を登録(任意)
- OnlipSyncUpdateイベントを追加
- OnlipSyncUpdateイベント内でSkeltalMeshのモーフターゲットを更新
- Play to AudioAuery等のサウンド&リップシンク再生の関数を実行
VoicecoxCharacterLipSyncAudioComponent
- VoicecoxCharacterLipSyncAudioComponentを追加
- SetSkeltalMeshにモーフターゲットを更新するSkeltalMeshを引数に渡す(VoicevoxCharacterは任意)
- LipSyncMorphNameMapにモーフターゲット名を登録
- Play to AudioAuery等のサウンド&リップシンク再生の関数を実行
各コンポーネントのDetails (詳細)パネル
詳細パネルで編集できる変数は以下の通りです。
- LipSyncMorphNameMap
- リップシンクで使用するモーフターゲット名のマップです。
- マップにモーフターゲットの名前を格納すると、リップシンク再生時に変更対象のモーフターゲット名が格納されます。
- VoicecoxCharacterLipSyncAudioComponentの場合は設定が必須になります。
項目名 | 説明 |
---|---|
母音:あ | 母音「あ」の口の形をするモーフターゲットの名前 |
母音:い | 母音「い」の口の形をするモーフターゲットの名前 |
母音:う | 母音「う」の口の形をするモーフターゲットの名前 |
母音:え | 母音「え」の口の形をするモーフターゲットの名前 |
母音:お | 母音「お」の口の形をするモーフターゲットの名前 |
簡易 | シンプルな口パクで使用するモーフターゲットの名前 |
- SpeakerId
- テキスト読み上げで使用するスピーカーID。
- デフォルトは3(ずんだもんのノーマル)
- LipSyncSpeed
- リップシンクの実行速度です。モーフターゲットの値をMaxMouthScaleにするまでの時間です。
再生したボイスとリップシンクのズレを感じた時に値を変更してください。
- リップシンクの実行速度です。モーフターゲットの値をMaxMouthScaleにするまでの時間です。
- MaxMouthScale
- リップシンクに使用するモーフターゲットの最大値を指定します。
- リップシンクに使用するモーフターゲットの最大値を指定します。
- EnabledLipSync
- リップシンクを実行するかのフラグです。
チェックが外れている場合は音の再生のみ行います。心の声の表現に使用してください。
- リップシンクを実行するかのフラグです。
- EnabledSimpleLipSync
- 簡易的なリップシンクを実行するかのフラグです。
- チェックが入っている場合は「簡易」の項目に設定したモーフターゲット名のみでリップシンクを実行します。
- リップシンク再生の処理が軽くなりますが、人間が喋る時のリップシンクではなくなります。
- チェックが入っていない場合は母音の「あ」~「お」を計算して値を変更するため、若干重いです。
- 簡易モードに比べると人間が喋るようなリップシンクに近くなります。
- チェックが入っている場合は「簡易」の項目に設定したモーフターゲット名のみでリップシンクを実行します。
- 簡易的なリップシンクを実行するかのフラグです。
簡易モード ON | 簡易モード OFF |
---|---|
![]() |
![]() |
© 2025 arayz. All rights reserved. |
関数(ノード)
コンポーネントで使用できる関数の一覧です。
各コンポーネント共通の関数
VoicevoxLipSyncAudioComponent、VoicecoxCharacterLipSyncAudioComponent両方で使用できる関数です。
Blueprint、c++共に同じ名前の関数を使用します。
Play to Textノード
テキストを解析してSoundWave生成後、音再生とリップシンク再生を行います。
- 引数
引数名 | 説明 |
---|---|
Message | 音声データに変換するtextデータ |
bRunKana | AquesTalkライクな記法で実行するか |
bEnableInterrogativeUpspeak | 疑問文の調整を有効にする |
SpeedScale | 話速 |
PitchScale | 音高 |
IntonationScale | 抑揚 |
VolumeScale | 音量 |
PrePhonemeLength | 開始無音 |
PostPhonemeLength | 終了無音 |
Play to AudioAueryノード
VOICEVOX COREで取得したAudioQueryを元にSoundWaveを生成後、音再生とリップシンク再生を行います。
- 引数
引数名 | 説明 |
---|---|
Query | VOICEVOXのAudioQuery |
bEnableInterrogativeUpspeak | 疑問文の調整を有効にする |
Play to AudioQueryAssetノード
AudioQueryアセットからSoundWaveを生成後、音再生とリップシンク再生を行います。
- 引数
引数名 | 説明 |
---|---|
VoicevoxQuery | Queryアセット |
bEnableInterrogativeUpspeak | 疑問文の調整を有効にする |
Set LipSyncData to AudioQueryノード
事前にリップシンクデータを生成するAudioQueryをセットします。
事前生成することでPlay to◯◯ノードに比べて負荷が低く、かつPlayノードを実行するとリップシンク再生を行います。
- 引数
引数名 | 説明 |
---|---|
Query | リップシンクデータをセットするAudioQuery |
Set LipSyncData to AudioQueryAssetノード
事前にリップシンクデータを生成するAudioQueryアセットをセットします。
事前生成することでPlay to◯◯ノードに比べて負荷が低く、かつPlayノードを実行するとリップシンク再生を行います。
- 引数
引数名 | 説明 |
---|---|
VoicevoxQuery | リップシンクデータをセットするAudioQueryアセット |
Stop Audio And LipSyncノード
リップシンクとサウンド再生を停止します。
VOICEVOXからサウンドデータ生成中にAudioComponentのStopノードを実行しても停止しない場合があるので、サウンド及びリップシンク再生を確実に止める場合はこのノードを使用してください。
- 引数
なし。
VoicecoxCharacterLipSyncAudioComponent専用ノード
VoicecoxCharacterLipSyncAudioComponentのみ追加されている関数一覧です。
SetSkeletalMeshノード
リップシンク対象のスケルタルメッシュをコンポーネントにセットします。
LipSyncMorphNameMapとスケルタルメッシュをセットするだけで、PlayToText等のサウンド再生時に自動でリップシンクを行うようになります。
- 引数
引数名 | 説明 |
---|---|
SkeletalMesh | リップシンク対象のスケルタルメッシュ |
イベント
Blueprint用のイベントです。
OnCreateSoundWaveイベント
VOICEVOXでサウンド生成完了時に呼び出されます。
- 引数
なし。
OnLipSyncUpdateイベント
VoicevoxLipSyncAudioComponentのみ追加されているカスタムイベントです。
サウンド再生中に呼び出されます。モーフターゲットの値更新に必要なリップシンク情報が引数に渡されます。
- 引数
引数名 | 説明 |
---|---|
VowelType | 母音のEnum。 EnabledSimpleLipSyncがtrueの場合はSimple固定になります。 |
MorphTargetName | モーフターゲットの名前。 LipSyncMorphNameMapにセットしたモーフターゲットの名前が入ります。何も設定していない場合は「None」になります。 |
MorphTargetNum | モーフターゲットの値。 |
## デリゲート(c++)
c++で使用できるデリゲートです。Blueprintは使用できません。
OnCreateSoundWaveNative
VOICEVOXでサウンド生成完了時に呼び出されます。
- 引数
なし。
OnLipSyncUpdateNative
VoicevoxLipSyncAudioComponentのみ追加されているデリゲートです。
サウンド再生中に呼び出されます。モーフターゲットの値更新に必要なリップシンク情報が引数に渡されます。
- 引数
引数名 | 説明 |
---|---|
VowelType | 母音のEnum。 EnabledSimpleLipSyncがtrueの場合はSimple固定になります。 |
MorphTargetName | モーフターゲットの名前。 LipSyncMorphNameMapにセットしたモーフターゲットの名前が入ります。何も設定していない場合は「None」になります。 |
MorphTargetNum | モーフターゲットの値。 |
Discussion