メインコンテンツまでスキップ

音声区間検出

Streaming Sound Wave とその派生型である Capturable Sound Wave は、音声区間検出(VAD)をサポートしています。VAD は、音声が検出された場合にのみ内部バッファにデータを格納するように、受信したオーディオデータをフィルタリングします。

プラグインは2つのVAD実装を提供します:

デフォルトの実装では、libfvad を使用しています。これは、Runtime Audio Importer がサポートするすべてのプラットフォームとエンジンバージョンで効率的に動作する、軽量の音声アクティビティ検出ライブラリです。

基本的な使い方

サウンドウェーブを作成した後に VAD を有効にするには、ToggleVAD 関数を使用します:

Toggle VAD node

VADを有効にした後、いつでもリセットできます:

Reset VAD node

デフォルトVAD設定

デフォルトのVADプロバイダーを使用する場合、VADモードを変更することでその感度を調整できます:

Set VAD Mode node

modeパラメーターは、VADがオーディオをフィルタリングする積極さを制御します。値が大きいほど制限が厳しくなり、誤検出を報告する可能性が低くなりますが、一部の音声を見逃す可能性があります。

VADプロバイダー

ToggleVAD 関数で VAD を有効にした後、ニーズに合わせて異なる音声区間検出プロバイダーを選択できます。デフォルトのプロバイダーは組み込みで、Silero VAD などの追加プロバイダーは拡張プラグインから利用できます。

Set VAD Provider node

現在のVADプロバイダーを取得する

ストリーミングサウンドウェーブに現在割り当てられているVADプロバイダーは、GetVADProvider 関数を使用して取得できます。これにより、Silero VADの音声閾値設定など、プロバイダー固有の機能にアクセスする必要がある場合に、個別の参照を保持する必要がなくなり便利です。

Get VAD Provider node

プロバイダー固有の機能にアクセスするには、返されたプロバイダーを目的の型にキャストします。たとえば、Silero VAD固有の機能を利用するには:

Get VAD Provider Cast To Silero node

Silero VAD 拡張機能

Silero VADは、ニューラルネットワークを使用してより正確な音声検出を提供します。使用するには:

  1. Runtime Audio Importerプラグインがプロジェクトにすでにインストールされていることを確認してください。

  2. UE 5.5 以前の場合: Silero VAD 拡張プラグインをダウンロードする前に、プロジェクトで NNERuntimeORT が無効になっていることを確認してください。NNERuntimeORT が有効になっていると、これらのエンジンバージョンで Silero VAD を使用する際に競合によりクラッシュが発生する可能性があります。

  3. Silero VAD 拡張プラグインをこちらからダウンロード

  4. ダウンロードしたアーカイブからフォルダをプロジェクトの Plugins フォルダに解凍します(このフォルダが存在しない場合は作成してください)

  5. UE 5.6 以降: RuntimeAudioImporterSileroVAD.uplugin ファイルを編集して、NNERuntimeORT 依存関係を追加します。"Plugins" フィールド内の RuntimeAudioImporter 項目の後に以下を追加します:

    ,
    {
    "Name": "NNERuntimeORT",
    "Enabled": true
    }
  6. プロジェクトを再ビルドしてください (この拡張機能は C++ プロジェクトが必要です)

important
  • デフォルトの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、および5.8)で動作します。

  • 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、5.8)をサポートします。

  • UE 5.5 以前: NNERuntimeORT は、プラグインの競合によるクラッシュを防ぐために、Silero VAD を使用する前に無効にする必要があります。特に UE 5.3 では、NNERuntimeORTCpu と NNERuntimeORTGpu も無効にする必要があります。

  • UE 5.6+ 要件: Unreal Engine 5.6 以降では、Silero VAD 拡張機能を使用するには NNERuntimeORT プラグイン依存関係を手動で .uplugin ファイルに追加する必要があります。

  • Silero VAD は Windows、Linux、Mac、Android(Meta Quest を含む)、iOS で利用可能です。

  • この拡張機能はソースコードとして提供されており、使用するにはC++プロジェクトが必要です。

  • プラグインの手動ビルド方法の詳細については、プラグインのビルド チュートリアル をご覧ください。

インストール後、SetVADProvider 関数で Silero クラスのプロバイダーを指定して、VAD プロバイダーとして選択できます。

音声しきい値

Silero VAD プロバイダーは、音声セグメントを発話とみなすために必要な最小信頼度スコア(ニューラルネットワークの発話確率出力から)を制御する Speech Threshold パラメータを公開しています。このパラメータは、GetVADProvider でプロバイダーを取得し、それを Silero VAD プロバイダータイプにキャストした後で利用可能な SetSpeechThreshold 関数を使用して設定できます。

Set Speech Threshold node

SetSpeechThreshold は、しきい値が正常に適用された場合は true を返し、それ以外の場合は false を返します(たとえば、値が有効範囲外の場合など)。

高い閾値は検出をより保守的にします:背景ノイズからの誤検出を減らしますが、小さくて不明瞭な発話を見逃す可能性もあります。低い閾値は検出の感度を高めます:より多くの発話を捉えますが、誤検出のリスクが高まります。デフォルト値は 0.5 です。

音声開始・終了検出

音声アクティビティ検出は、発話の有無を検出するだけでなく、発話の開始と終了も検出できます。これは、再生中やキャプチャ中に発話が開始または終了したときにイベントをトリガーするのに役立ちます。

音声の開始と終了の検出感度は、最小発話時間や無音時間などのパラメータを調整することでカスタマイズできます。これらのパラメータは、短いノイズや発話間のあまりに短い間を拾ってしまう誤検出を防ぐように、検出を微調整するのに役立ちます。

最小音声持続時間

Minimum Speech Duration パラメータは、音声開始イベントをトリガーするために必要な、継続的な音声アクティビティの最小時間を設定します。これにより、音声と見なすべきではない短いノイズを除外し、持続的な音声アクティビティだけが認識されるようにします。Minimum Speech Duration のデフォルト値は 300ミリ秒 です。

Set Minimum Speech Duration node

無音時間

Silence Durationパラメータは、音声終了イベントをトリガーするために必要な無音の長さを設定します。これにより、単語や文の間の自然なポーズ中に音声検出が早まって終了するのを防ぎます。Silence Durationのデフォルト値は500ミリ秒です。

Set Silence Duration node

スピーチデリゲートへのバインド

音声の開始時または終了時に特定のデリゲートにバインドできます。これは、音声アクティビティに基づいてカスタム動作をトリガーするのに役立ちます。たとえば、テキスト認識を開始または停止したり、他のオーディオソースの音量を調整したりする場合に便利です。

Bind Event To On Speech Started Bind Event To On Speech Ended

VADプロバイダーの比較

デフォルト VAD (libfvad)

メリット:

  • 軽量で効率的
  • すべてのプラットフォームで動作
  • 最小限のリソース消費
  • モバイルや低電力デバイスに最適

最適:

  • 静かな環境でのシンプルな音声検出
  • モバイルアプリケーション
  • パフォーマンスが優先されるプロジェクト
  • ユニバーサルなプラットフォームサポートが必要な場合