跳至主要内容

語音活動偵測

串流音波,及其衍生類型如可擷取音波,支援語音活動偵測(VAD)。VAD會過濾傳入的音訊資料,僅在偵測到語音時才填充內部緩衝區。

該插件提供兩種VAD實作方式:

預設實作使用 libfvad,一個輕量的語音活動偵測庫,可在 Runtime Audio Importer 支援的所有平台和引擎版本上高效運作。

基本用法

在创建声波后启用 VAD,请使用 ToggleVAD 函数:

Toggle VAD node

啟用 VAD 後,您可以隨時重設它:

Reset VAD node

預設 VAD 設定

當使用預設的 VAD 提供者時,您可以透過更改 VAD 模式來調整其激進程度:

Set VAD Mode node

模式參數控制 VAD 過濾音訊的積極程度。較高的數值更具限制性,意味著較不容易出現誤判,但可能會遺漏部分語音。

VAD 提供者

在使用 ToggleVAD 函式啟用 VAD 後,您可以根據需求選擇不同的語音活動檢測提供者。預設的提供者是內建的,而其他提供者(例如 Silero VAD)則可透過擴展插件取得。

Set VAD Provider node

取得目前的 VAD 提供者

您可以使用 GetVADProvider 函式來取得目前指派給串流音波的 VAD 提供者。當您需要存取提供者特定的功能時,例如 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。在這些引擎版本上使用 Silero VAD 時,若啟用 NNERuntimeORT,可能因衝突而導致崩潰。

  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 及更早版本: 使用 Silero VAD 之前必須停用 NNERuntimeORT,以避免因外掛衝突造成崩潰。特別是在 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 提供者公開了一個 語音閾值 參數,此參數控制將音訊片段視為語音所需的最低信心分數(來自神經網路的語音機率輸出)。您可以使用 SetSpeechThreshold 函式來設定它,此函式可在使用 GetVADProvider 取得提供者並將其轉型為 Silero VAD 提供者類型後使用。

Set Speech Threshold node

SetSpeechThreshold 如果閾值應用成功,則返回 true,否則返回 false(例如,如果數值超出有效範圍)。

較高的閾值會讓偵測更保守:它能減少來自背景雜訊的偽陽性,但也可能漏掉較小聲或不清楚的語音。較低的閾值會讓偵測更靈敏:它能捕捉到更多語音,但偽陽性的風險也隨之提高。預設值為 0.5

語音開始與結束偵測

語音活動偵測不僅能偵測語音的存在,同時也能偵測語音活動的開始與結束。這對於在播放或擷取期間,語音開始或結束時觸發事件非常有用。

您可以透過調整像是最短語音時長和靜音時長等參數,自訂語音開始與結束偵測的敏感度。這些參數有助於微調偵測以避免誤判,例如捕捉到短暫的雜音或語音之間過短的停頓。

最短語音持續時間

Minimum Speech Duration 參數設定了觸發語音開始事件所需的最小連續語音活動量。這有助於過濾掉不應被視為語音的短暫噪音,確保只有持續的語音活動才會被識別。Minimum Speech Duration 的預設值為 300 毫秒

Set Minimum Speech Duration node

靜音持續時間

靜默持續時間 參數設定了觸發語音結束事件所需的靜默持續時間。這可以防止語音偵測在詞語或句子間的自然停頓中提前終止。靜默持續時間 的預設值為 500 毫秒

Set Silence Duration node

綁定到語音委派

當語音開始或結束時,您可以綁定到特定的 delegates。這對於根據語音活動觸發自定義行為非常有用,例如啟動或停止文字識別,或調整其他音訊源的音量。

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

比較 VAD 提供者

預設 VAD (libfvad)

優勢:

  • 輕量且高效
  • 適用於所有平台
  • 資源使用極少
  • 適合行動裝置與低功耗設備

最適合:

  • 在安靜環境中的簡單語音偵測
  • 行動應用程式
  • 效能優先的專案
  • 當需要通用平台支援時