跳至主要内容

Vosk 擴充功能

根據預設,Runtime Speech Recognizer 外掛程式使用 whisper.cpp 進行語音辨識。在 whisper.cpp 不支援 GPU 加速的平台上,尤其是 Android 及基於 Android 的平台,如 Meta Quest,語音辨識會退回使用 CPU + intrinsics,這導致速度較慢且更耗電。Vosk 擴充外掛程式新增了一個以 Vosk 為基礎的替代提供者;Vosk 是一套輕量級語音辨識工具組,在資源受限的硬體上表現良好,且在 Meta Quest 上表現特別出色。

在 whisper.cpp 和 Vosk 之間切換只需幾個 Blueprint 節點,切換回來也同樣簡單,因此您可以同時保留兩種選項,並在需要時依平台選擇供應商。

安裝

若要使用 Vosk 擴充功能:

  1. 請確保您的專案中已安裝主要的 Runtime Speech Recognizer 外掛程式。

  2. 此處下載 Vosk 擴充外掛程式

  3. 從下載的壓縮檔中,將資料夾解壓縮到專案的 Plugins 資料夾中(如果該資料夾不存在,請建立它)。

  4. 重建您的專案(此擴充功能需要 C++ 專案)

important
  • Vosk 擴充功能支援 Unreal Engine 5.0 至 5.8。

  • 此擴充功能以原始碼形式提供,且需要使用 C++ 專案。

  • 如需更多有關如何手動建置外掛程式的資訊,請參閱建置外掛程式教學課程

切換到 Vosk 提供者

安裝擴充功能後,只要緊接在 CreateSpeechRecognizer 之後使用三個節點,就能將語音辨識器切換為 Vosk:

Set Speech Recognizer Provider Cast To Vosk

  1. 呼叫 Set Speech Recognizer Provider,並傳入 Vosk 提供者類別。
  2. 在結果上執行 Cast To Runtime Vosk Speech Recognizer Provider
  3. 在轉型結果上呼叫 Set Vosk Model Path (By Name),並從下拉式選單中挑選已下載的模型。

您現有設定中的其他一切(開始語音辨識處理音訊資料、委派、VAD 等等)皆可維持不變、繼續運作。若要切換回 whisper.cpp,請移除這三個節點,或者完全不要呼叫 設定語音辨識提供者,因為 whisper.cpp 是預設。

下載 Vosk 模型

Vosk 模型可從 專案設定 -> 外掛 -> Runtime Speech Recognizer Vosk 下載和管理。此面板會列出按語言分組的預先定義模型目錄,每個條目都有一個 下載 按鈕,下載與解壓縮期間會顯示進度列;模型存放入磁碟後,則會出現 刪除 按鈕。

Vosk model settings panel

已下載的模型會解壓縮至 Content/RuntimeSpeechRecognizerVosk/Models 之下,外掛程式會自動處理將該資料夾暫存以進行打包。您也不限於只能使用單一打包模型:任何您下載的模型都會保持可用狀態,並可在執行階段透過 Set Vosk Model Path (By Name) 選取。在 Android 上,模型檔案會隨打包的應用程式一同提供,並在首次使用時複製到持久化儲存空間;此操作會在選取模型時於內部自動處理。

支援語言(按一下展開)

預先定義的目錄包含的模型包括:英語、印度英語、中文、俄語、法語、德語、西班牙語、葡萄牙語/巴西葡萄牙語、希臘語、土耳其語、越南語、義大利語、荷蘭語、加泰隆尼亞語、阿拉伯語、突尼西亞阿拉伯語、波斯語、菲律賓語、烏克蘭語、哈薩克語、瑞典語、日語、世界語、印地語、捷克語、波蘭語、烏茲別克語、韓語、布列塔尼語、古吉拉特語、塔吉克語、泰盧固語、吉爾吉斯語和喬治亞語,以及一個專用的說話者識別模型。

有些語言在面板中有多個變體(例如,一個較小、適合行動裝置硬體的模型,以及一個較大且更準確的模型),因此與其假設只有一個可用,不如直接在 Project Settings 面板中檢視目標語言的選項。請參閱完整的 Vosk 模型清單以了解每個變體的準確度、大小和授權詳細資訊。

參數與行為

Vosk 是一個與 whisper.cpp 根本不同的辨識器,因此 辨識參數清單 中的大部分條目都不適用於它。在 Vosk 提供者上呼叫不支援的 setter 不會有任何效果,因此為 whisper.cpp 撰寫的 Blueprint 邏輯在切換提供者後仍可繼續運作,無需修改。實際對 Vosk 有影響的函式如下:

  • 設定語言:選擇要使用的語言模型。Vosk 不支援自動語言偵測,因此若將語言設為「自動」,該設定會被忽略。
  • 設定步長:在音訊被送出進行辨識之前累積多少音訊,機制與 whisper.cpp 相同。由於 Vosk 是串流辨識器,較小的數值(Vosk 提供者預設為 200 毫秒)可讓部分結果保持即時回應。
  • 設定最大 Token 數:此設定在 Vosk 中另有用途,詳見下文。

設定最大 Token 數與串流輸出

Set Max Tokens 參數控制 Vosk 提供者如何透過 On Recognized Text Segment 傳遞已識別的文字:

  • 0(預設):文字會在內部累積,並在辨識完成時作為單一完整片段輸出,無論是透過 VAD 觸發的停止(如語音啟動指令辨識自動初始化語音辨識範例),還是透過你專案中任何呼叫Stop Speech Recognition或強制讓最後一段音訊通過的邏輯。這符合 whisper.cpp 所使用的以片段為基礎的行為。
  • 大於 0:提供者會切換到串流模式。它不會等待完整片段,而是隨著辨識進度廣播部分結果,每次都會用同一句話的較長版本取代先前結果,直到該片段完成,文字會重設以供下一個片段使用。一句簡短的語句在多次On Recognized Text Segment廣播中可能會像這樣:
"The"
"The cat"
"The cat is"
"The cat is sleeping"

確切的數值對 Vosk 本身並不重要,因為它沒有內建的 token 限制。任何大於 0 的值都會開啟串流傳輸。

由於部分結果只會依音訊排入佇列的頻率送達(由 Set Step Size 控制),請將較低的 Max Tokens 與較低的 Step Size 搭配使用,以獲得回應迅速的即時輸出。

平台支援

Vosk 擴充功能可在 Windows、Android 及基於 Android 的平台上運作,例如 Meta Quest。它在 Android 和 Meta Quest 上最為實用,因為在這些平台上 whisper.cpp 沒有 GPU 加速路徑,而且它在 Meta Quest 上表現特別出色。如果你已經在使用 Windows 或具備 Vulkan 或 Metal 加速的其他桌面平台,whisper.cpp 可能是更好的預設選擇。Vosk 旨在作為 whisper.cpp 表現最弱之平台的替代方案。

進階:直接使用模型

「專案設定」面板涵蓋了大部分專案的模型下載與刪除功能。如果您的專案需要直接處理模型,而不是依賴編輯器面板,例如在執行階段檢查可用性或管理檔案,此外掛程式會公開底層程式庫函式:

  • Get Available Vosk Model Names:傳回目前立即可用的模型名稱,無論是已解壓縮到磁碟,還是僅封裝好等待首次使用的模型。這就是 Set Vosk Model Path (By Name) 下拉式選單的資料來源。
  • Is Vosk Model Available:與上述相同的檢查,但針對單一模型 ID。
  • Get Vosk Models Directory:傳回執行時期讀取模型之目錄的絕對路徑。
  • Get Vosk Model Folder Path:傳回磁碟上特定模型資料夾的絕對路徑。
  • Delete Vosk Model Files:從磁碟刪除模型的解壓縮檔案。