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 擴充功能:
-
請確保您的專案中已安裝主要的 Runtime Speech Recognizer 外掛程式。
-
從此處下載 Vosk 擴充外掛程式
-
從下載的壓縮檔中,將資料夾解壓縮到專案的
Plugins資料夾中(如果該資料夾不存在,請建立它)。 -
重建您的專案(此擴充功能需要 C++ 專案)
-
Vosk 擴充功能支援 Unreal Engine 5.0 至 5.8。
-
此擴充功能以原始碼形式提供,且需要使用 C++ 專案。
-
如需更多有關如何手動建置外掛程式的資訊,請參閱建置外掛程式教學課程
切換到 Vosk 提供者
安裝擴充功能後,只要緊接在 CreateSpeechRecognizer 之後使用三個節點,就能將語音辨識器切換為 Vosk:

- 呼叫 Set Speech Recognizer Provider,並傳入 Vosk 提供者類別。
- 在結果上執行 Cast To Runtime Vosk Speech Recognizer Provider。
- 在轉型結果上呼叫 Set Vosk Model Path (By Name),並從下拉式選單中挑選已下載的模型。
您現有設定中的其他一切(開始語音辨識、處理音訊資料、委派、VAD 等等)皆可維持不變、繼續運作。若要切換回 whisper.cpp,請移除這三個節點,或者完全不要呼叫 設定語音辨識提供者,因為 whisper.cpp 是預設。
下載 Vosk 模型
Vosk 模型可從 專案設定 -> 外掛 -> Runtime Speech Recognizer Vosk 下載和管理。此面板會列出按語言分組的預先定義模型目錄,每個條目都有一個 下載 按鈕,下載與解壓縮期間會顯示進度列;模型存放入磁碟後,則會出現 刪除 按鈕。

已下載的模型會解壓縮至 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:從磁碟刪除模型的解壓縮檔案。