音声活動検出
ストリーミングサウンドウェーブと、キャプチャ可能サウンドウェーブなどの派生型は、音声活動検出(VAD)をサポートしています。VADは、音声が検出された場合にのみ内部バッファを埋めるために、入力されるオーディオデータをフィルタリングします。
このプラグインは2つのVAD実装を提供します:
- デフォルトVAD
- Silero VAD
デフォルトの実装はlibfvadを使用します。これは軽量な音声活動検出ライブラリで、Runtime Audio Importerがサポートするすべてのプラットフォームとエンジンバージョンで効率的に動作します。
拡張プラグインとして利用可能なSilero VADは、ニューラルネットワークベースの音声活動検出器で、特にノイズの多い環境でより高い精度を提供します。機械学習を使用して、音声と背景ノイズをより確実に区別します。
基本的な使用法
サウンドウェーブを作成した後にVADを有効にするには、ToggleVAD関数を使用します:
- ブループリント
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
VADを有効にした後、いつでもリセットできます:
- Blueprint
- C++

// Reset the VAD
StreamingSoundWave->ResetVAD();
デフォルトVAD設定
デフォルトのVADプロバイダーを使用する場合、VADモードを変更することでその積極性を調整できます:
- Blueprint
- C++

// Set the VAD mode (only works with the default VAD provider)
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
モードパラメータは、VADがオーディオをフィルタリングする積極性を制御します。値が高いほど制限が厳しくなり、誤検知を報告する可能性は低くなりますが、一部の音声を見逃す可能性があります。
VADプロバイダー
ToggleVAD関数でVADを有効にした後、ニーズに合わせて異なる音声活動検出(VAD)プロバイダーを選択できます。デフォルトのプロバイダーは組み込みですが、Silero VADなどの追加プロバイダーは拡張プラグインを通じて利用可能です。
- Blueprint
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Make sure to call ToggleVAD(true) before setting the provider
// Set the VAD provider to Silero VAD
StreamingSoundWave->SetVADProvider(URuntimeSileroVADProvider::StaticClass());
Silero VAD 拡張機能
Silero VADは、ニューラルネットワークを使用してより正確な音声検出を提供します。使用方法:
-
Runtime Audio Importer プラグインがプロジェクトに既にインストールされていることを確認してください
-
UE 5.5 以前の場合: Silero VAD拡張プラグインをダウンロードする前に、プロジェクトでNNERuntimeORTが無効になっていることを確認してください。NNERuntimeORTが有効になっていると、これらのエンジンバージョンでSilero VADを使用する際に競合が原因でクラッシュする可能性があります
-
Silero VAD拡張プラグインをこちらからダウンロードしてください
-
ダウンロードしたアーカイブからフォルダを抽出し、プロジェクトの
Pluginsフォルダに配置します(このフォルダが存在しない場合は作成してください) -
UE 5.6 以降の場合:
RuntimeAudioImporterSileroVAD.upluginファイルを編集してNNERuntimeORT依存関係を追加します。"Plugins"フィールドで、RuntimeAudioImporterの記述の後に以下を追加します:
,
{
"Name": "NNERuntimeORT",
"Enabled": true
}
- プロジェクトをリビルドします(この拡張機能はC++プロジェクトを必要とします)
-
デフォルトのVADは、Runtime Audio Importerがサポートするすべてのエンジンバージョン(UE 4.24, 4.25, 4.26, 4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6 および 5.7)で動作します
-
Silero VADはUnreal Engine 4.27およびすべてのUE5バージョン(4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6 および 5.7)をサポートします
-
UE 5.5 以前: Silero VADを使用する前に、プラグインの競合によるクラッシュを防ぐためにNNERuntimeORTを無効にする必要があります
-
UE 5.6+ 要件: Unreal Engine 5.6以降、Silero VAD拡張機能を使用するには、NNERuntimeORTプラグインの依存関係を
.upluginファイルに手動で追加する必要があります -
Silero VADはWindows、Linux、Mac、Android(Meta Questを含む)、およびiOSで利用可能です
-
この拡張機能はソースコードとして提供され、使用にはC++プロジェクトが必要です
-
プラグインを手動でビルドする方法の詳細については、Building Pluginsチュートリアルを参照してください
インストール後、SetVADProvider関数でSileroクラスプロバイダーを指定してVADプロバイダーとして選択できます。
音声開始・終了検出
Voice Activity Detection(VAD)は音声の存在を検出するだけでなく、音声活動の開始と終了の検出も可能にします。これは、再生やキャプチャ中に音声が開始または終了したときにイベントをトリガーするのに役立ちます。
最小音声継続時間や無音継続時間などのパラメータを調整することで、音声開始・終了検出の感度をカスタマイズできます。これらのパラメータは、短いノイズや音声間の短すぎるポーズなどの誤検出を避けるために検出を微調整するのに役立ちます。
最小音声継続時間
最小音声継続時間パラメータは、音声開始イベントをトリガーするために必要な連続した音声活動の最小量を設定します。これにより、音声と見なすべきではない短いノイズをフィルタリングし、持続的な音声活動のみが認識されるようにします。最小音声継続時間のデフォルト値は300ミリ秒です。
- Blueprint
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Set the minimum speech duration
StreamingSoundWave->SetMinimumSpeechDuration(200);
無音期間
無音期間パラメータは、発話終了イベントをトリガーするために必要な無音の長さを設定します。これにより、単語や文の間の自然なポーズで発話検出が早期に終了するのを防ぎます。無音期間のデフォルト値は500ミリ秒です。
- Blueprint
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Set the silence duration
StreamingSoundWave->SetSilenceDuration(700);
スピーチデリゲートへのバインド
スピーチの開始時または終了時に特定のデリゲートにバインドすることができます。これは、音声認識の開始や停止、他のオーディオソースの音量調整など、スピーチアクティビティに基づいてカスタム動作をトリガーするのに便利です。
- Blueprint
- C++

// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Bind to the OnSpeechStartedNative delegate
StreamingSoundWave->OnSpeechStartedNative.AddWeakLambda(this, [this]()
{
// Handle the result when speech starts
});
// Bind to the OnSpeechEndedNative delegate
StreamingSoundWave->OnSpeechEndedNative.AddWeakLambda(this, [this]()
{
// Handle the result when speech ends
});
VADプロバイダーの比較
- デフォルトVAD
- Silero VAD
デフォルトVAD (libfvad)
利点:
- 軽量で効率的
- すべてのプラットフォームで動作
- リソース使用量が最小限
- モバイルや低電力デバイスに適している
最適な用途:
- 静かな環境でのシンプルな音声検出
- モバイルアプリケーション
- パフォーマンスが優先されるプロジェクト
- ユニバーサルなプラットフォームサポートが必要な場合
Silero VAD
利点:
- 音声検出の精度が高い
- 困難な環境下での優れたノイズ耐性
- 異なる話者間でのより一貫した結果
- 精密な制御のための高度な設定オプション
最適な用途:
- 精密な音声検出を必要とするアプリケーション
- バックグラウンドノイズのある環境
- 音声認識システム
- プロフェッショナルなオーディオアプリケーション
Silero VADは、デフォルトVADよりも多くの計算リソースを必要とする場合があります。