共用方式為


核心子系統:KeywordRecognitionSubsystem — MRTK3

注意

如需 MRTK3 中子系統的一般資訊,請參閱 這裡

核心定義套件隨附 KeywordRecognitionSubsystem ,這是 的基底實 MRTKSubsystemIKeywordRecognitionSubsystem 作,可作為負責 MRTK3 中關鍵字/片語辨識的子系統基底。 作為 MRTK 一部分隨附的具體實作,例如 WindowsKeywordRecognitionSubsystem ,您可能建置的其他潛在片語辨識子系統都應該以這個類別為基礎。 繼承自 KeywordRecognitionSubsystem 的子系統可以使用 SpeechInteractor ,根據可互動的設定觸發選取事件 StatefulInteractable's 。 繼承的子類別也會允許對您選擇的關鍵字進行任意 UnityAction's 註冊,以便在說出這類單字時叫用動作。

如需更具體的資訊,請參閱您想要使用之具體 KeywordRecognitionSubsystem 實作的檔。

安裝程式

注意

本指南提供在新的 MRTK 專案中啟用語音子系統的步驟, (其他基本非語音相關設定就地) 。 如果您使用我們的範例專案,您可能會注意到已為您執行一些步驟。

1.啟用語音子系統

移至[專案設定>MRTK3可用的 MRTK 子系統],然後啟用您想要使用的語音子系統。

2.為特定子系統指派設定資產 ()

對於某些子系統,需要設定 資產 才能正常執行。

  1. 按一下您在安裝程式 1 中啟用的子系統。
  2. 檢查右側的 [子系統詳細資料] 底下是否顯示空白 Configuration Asset 位置。 如果是,請選取[資產-建立子系統>>的名稱] 設定, > 然後將建立的組態拖曳到位置,以建立新的設定。
  3. 確定已填入組態位置之後,請變更您特定專案新建立的組態中的設定。 請記得在完成時儲存專案。

3.確定 MRTK 語音遊戲物件為作用中 ( (, StatefulInteractable 例如,按鈕) 回應片語)

請確定 MRTK XR Rig - > MRTK 語音作用中,並啟用附加的腳本 () 。

4.確定已于播放機設定中設定適當的功能

的不同實作 KeywordRecognitionSubsystem 有不同的必要功能。 如需詳細資訊,請參閱您想要使用的子系統檔。

例如,若要在 UWP 平臺上使用 WindowsKeywordRecognitionSubsystem ,請移至[專案設定>播放機>發佈設定>功能],並確定已設定麥克風功能。

5.在裝置/編輯器中執行場景

專案現在應該已準備好在裝置或編輯器中執行。

使用 KeywordRecognitionSubsystem

例如,使用 KeywordRecognitionSubsystem 搭配 StatefulInteractable s (,按鈕)

最簡單的使用 KeywordRecognitionSubsystem 方式是搭配 使用 StatefulInteractable 。 如果執行安裝程式區段下的步驟 3, SpeechInteractor 則會在符合這類可互動性的條件時觸發 的選取事件 StatefulInteractable (例如,會聽到指定的片語,且可互動的已暫留) 。 StatefulInteractable如需可設定的設定,請參閱 和 SpeechInteractor (MRTK XR Rig - > MRTK 語音) 。

手動使用 KeywordRecognitionSubsystem

另一種使用 KeywordRecognitionSubsystem 方式是手動註冊關鍵字,而 UnityAction 您想要在使用子系統聽到關鍵字時看到叫用的 。

// Get the first running phrase recognition subsystem.
var keywordRecognitionSubsystem = XRSubsystemHelpers.GetFirstRunningSubsystem<KeywordRecognitionSubsystem>();

// If we found one...
if (keywordRecognitionSubsystem != null)
{
    // Register a keyword and its associated action with the subsystem
    keywordRecognitionSubsystem.CreateOrGetEventForKeyword("your keyword").AddListener(() => Debug.Log("Keyword recognized"));
}