音声活動検出 (Voice Activity Detection)
Streaming Sound Wave および Capturable Sound Wave などの派生型は、音声活動検出 (VAD) をサポートしています。VADは入力されるオーディオデータをフィルタリングし、音声が検出された場合にのみ内部バッファにデータを格納します。
本プラグインでは2種類のVAD実装を提供しています:
- Default VAD
- Silero VAD
デフォルト実装では libfvad を使用しています。これは軽量な音声活動検出ライブラリで、Runtime Audio Importerがサポートする全てのプラットフォームとエンジンバージョンで効率的に動作します。
拡張プラグインとして利用可能なSilero VADは、ニューラルネットワークベースの音声活動検出器で、特に騒音環境下においてより高い精度を提供します。機械学習を用いて音声と背景ノイズをより確実に区別します。
基本的な使用方法
サウンドウェーブ作成後にVADを有効化するには、ToggleVAD
関数を使用します:
- Blueprint
- 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を有効にした後、ニーズに合わせて異なるVoice Activity Detectionプロバイダーを選択できます。デフォルトプロバイダは組み込み型ですが、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プラグインが既にインストールされていることを確認してください
- Google DriveからSilero VAD拡張プラグインをダウンロード
- ダウンロードしたアーカイブからフォルダを抽出し、プロジェクトの
Plugins
フォルダに配置(存在しない場合は作成) - プロジェクトをリビルド(この拡張機能には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)
- Silero VADはUnreal Engine 4.27と全UE5バージョンをサポート(4.27, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6)
- Silero VADは現在Windows版のみ利用可能
- この拡張機能はソースコード形式で提供され、使用にはC++プロジェクトが必要
- プラグインの手動ビルド方法についてはBuilding Pluginsチュートリアルを参照
インストール後、SetVADProvider
関数でSileroクラスプロバイダを指定してVADプロバイダとして選択できます。
音声開始・終了検出
Voice Activity Detection(VAD)は音声の存在を検出するだけでなく、音声活動の開始と終了も検出可能です。これは再生やキャプチャ中に音声が開始/終了した際のイベントトリガーに有用です。
最小音声継続時間や無音期間などのパラメータを調整することで、音声開始・終了検出の感度をカスタマイズできます。これにより、短いノイズや音声間の短すぎるポーズを誤検知しないよう微調整が可能です。
最小音声継続時間
Minimum Speech Durationパラメータは、音声開始イベントをトリガーするために必要な連続した音声活動の最小時間を設定します。これにより、音声と見なすべきでない短いノイズをフィルタリングし、持続的な音声活動のみを確実に認識できます。Minimum Speech Durationのデフォルト値は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よりも多くの計算リソースを必要とする場合があります。