練習 - 設定意圖和自然語言理解

已完成

在本課程模組中,您將探索 Azure 語音服務的意圖辨識。 意圖辨識可讓您將應用程式與 AI 支援的語音命令裝備在一起,讓使用者可以說出非特定語音命令,而且仍然讓系統瞭解其意圖。

準備場景

  1. 在 [階層] 視窗中,選取 Lunarcom 物件,然後在 [偵測器] 視窗中,使用 [新增元件] 按鈕將 Lunarcom 意圖辨識器 (腳本) 元件新增至 Lunarcom 物件。

    Screenshot of adding the Lunarcom Intent Recognizer (Script) component.

  2. 在 [專案] 視窗中,流覽至 [資產>MRTK]。Tutorials.GettingStarted Prefabs>RocketLauncher 資料夾、將RocketLauncher_Complete預製專案拖曳到階層視窗中,並將它放在相機前的適當位置。> 例如:

    • 轉換位置 X = 0, Y = 1, Z = 1.5
    • 轉換旋轉 X = 0,Y = 90,Z = 0

    Screenshot of adding the RocketLauncher_Complete prefab.

  3. 在 [階層] 視窗中,再次選取 Lunarcom 對象,然後展開 [RocketLauncher_Complete>Buttons 物件],並將每個 Buttons 物件的子物件指派給對應的 [農曆啟動器按鈕] 字段。

    Screenshot of assigning each of the buttons.

建立 Azure 語言服務資源

在本節中,您將針對您將在下一節中建立的交談語言理解 (CLU) 應用程式建立 Azure 語言服務資源。

  1. 登入 Azure 入口網站,然後選取 [建立資源],然後搜尋並選取 [語言服務]:

    Screenshot of the Azure language service resource.

  2. 選取 [建立] 按鈕,以建立此服務的執行個體:

    Screenshot of creating an instance of this service.

  3. 在 [建立語言] 頁面上,輸入下列值:

    • 針對 [訂用帳戶],選取 [免費試用] (如果您具有試用的訂用帳戶)。 如果您沒有試用的訂用帳戶,請選取您的其他訂用帳戶之一。
    • 針對 [ 資源群組],選取 [ 建立新 連結],然後輸入適當的名稱;例如 MRTK-Tutorials。 選取 [確定]。

    Screenshot of the Create Language screen.

    提示

    如果您的 Azure 帳戶中已經有另一個適當的資源群組,您可以使用此資源群組,而不是建立新的資源群組。

  4. 仍在 [建立] 頁面上輸入下列值:

    • 針對 [ 名稱],輸入適合服務的名稱;例如 MRTK-Tutorials-AzureSpeechServices
    • 針對 [區域],選擇靠近您應用程式用戶實體位置的位置;例如, 美國東部
    • 針對 [定價層],在本教學課程中,選取 [F0 (每 30 天 5k 交易)]

    Screenshot of the configured Create Language form.

  5. 接下來,選取 [ 檢閱 + 建立],檢閱詳細數據,然後選取 頁面底部的 [建立 ] 按鈕以建立資源(如果您已設定要建立的資源群組]:

    Screenshot of the Review + Create screen.

  6. 一旦完成資源建立流程,您就會看到訊息「您的部署已完成」:

    Screenshot of the Overview screen.

建立交談語言理解應用程式 (CLU)

在本節中,您將建立 CLU 應用程式、設定和定型其預測模型,並將其連線到您在上一個步驟中建立的 Azure 語言資源。

具體而言,您建立了一個意圖,如果使用者說出應該採取的動作,則應用程式將會根據使用者所參考的按鈕,從場景中的三個藍色按鈕之一觸發 PressableButton.OnClicked() 事件。

例如,如果使用者說 [go ahead and launch the rocket],應用程式會預測 [go ahead] 代表應採取一些動作,以及目標事件PressableButton.OnClicked()位於 [啟動] 按鈕上。

您將採取來達成此目的的主要步驟為:

  1. 建立 CLU 應用程式
  2. 建議意圖
  3. 新增範例語句
  4. 建立實體
  5. 將實體指派至範例語句
  6. 定型、測試和發佈應用程式

1. 建立 CLU 應用程式

使用您在上一節中建立 Azure 資源使用的相同使用者帳戶、登入 Language Studio

  1. 登入之後,系統會提示您選取 Azure 資源。 選取您在建立 Azure 語言服務資源時所使用的值,然後選取 [ 完成]。

    Screenshot showing the Select an Azure resource popup.

  2. 連線 Azure 資源之後,請選擇 [建立新的 > 對話語言理解 ],然後在 [ 建立專案 ] 彈出視窗中輸入下列值:

    • 針對 [名稱],請輸入適當的名稱,例如:MRTK-Tutorials-AzureSpeechServices。 記下所選取的名稱,以在稍後的教學課程中使用。
    • 針對 [語句主要語言],選取語言。
    • 針對 [描述],選擇性地輸入適當的描述。

    Screenshot of the Create a project popup.

  3. 選取 [下一步] 以檢閱專案設定。 選取 [建立] 以建立專案。

    Screenshot of the Review and finish screen.

  4. 建立新的應用程式時,系統會帶您前往該應用程式的 [架構定義 ] 頁面。

    Screenshot of the App's dashboard page.

2. 建立意圖

  1. 從 [架構定義] 頁面中,選取 [新增],然後在 [新增意圖] 快顯視窗中輸入下列值:

    • 針對 [意圖名稱] 輸入 PressButton
  2. 選取 [新增意圖] 以建立新的意圖:

    Screenshot of the Add an intent screen.

    警告

    基於本教學課程的目的,您的 Unity 專案會依據名稱來參考此意圖 (PressButton)。 請務必將意圖命名為完全相同。

  3. 建立新的意圖之後,您會回到 [架構定義] 頁面。 PressButton 意圖會顯示在意圖清單中。

    Screenshot of the list of Intents.

3. 建立範例語句

  1. 在左側邊欄上,選取 [資料標記] 按鈕。 在 [數據卷標] 畫面上,從 [選取意圖] 下拉式清單中選取 [PressButton]。

    Screenshot of the Data labeling page.

  2. PressButton 意圖的 [表達] 清單中,新增以下範例表達:

    • 啟動啟動序列
    • 向我顯示放置提示
    • 起始啟動序列
    • 按下放置提示按鈕
    • 向我提供提示
    • 推動啟動按鈕
    • 我需要提示
    • 按下重設按鈕
    • 重設體驗的時間
    • 繼續並啟動火箭
  3. 當您新增所有範例語句時,您的數據標籤面看起來應該像這樣:

    Screenshot of the updated Data labeling page.

    警告

    針對本教學課程的目的,您的 Unity 專案會參考 「hint」、“hints”、“reset” 和 “launch” 這兩個字。請務必在所有實例中以完全相同的方式拼字。

4. 建立實體

  1. 在 [資料標記] 頁面上,選取右側 [活動] 窗格中的 [新增實體],然後在 [新增實體] 快顯視窗中輸入下列值:

    • 在 [實體名稱] 中,輸入動作
  2. 選取 [新增實體 ] 以建立新的實體。

    Screenshot of adding a new entity.

  3. 重複上一個步驟以建立另一個名為 Target 的實體,因此您有兩個名為 ActionTarget 的實體

    Screenshot of creating a target entity.

    警告

    基於本教學課程的目的,您的 Unity 專案會依據名稱 (ActionTarget) 來參考這些實體。 請務必將實體命名為完全相同。

5. 將實體指派至範例語句

  1. 選取 [移至] 一字,然後在前一個字上選取 [動作],然後從內容快捷功能表選取 [動作],以將 [動作] 標示為 [動作] 實體值。

    Screenshot of labeling go ahead as an action entity value.

  2. go ahead 片語現在定義為動作實體值。 現在,「繼續」一詞下有動作實體值。

    Screenshot of the added action entity value.

    注意

    您在影像中卷標底下看到的紅線表示實體值尚未預測;當您在下一節中定型模型時,將會解決此問題。

  3. 接下來,選取 [啟動] 字組,然後從內容快捷功能表選取 [目標],將啟動標示為 [目標] 實體值。

    Screenshot of selecting the word launch.

  4. 啟動字詞現在定義為 [目標] 實體值。 現在在 「launch」 一詞下有目標實體值。

    Screenshot of the added Target entity value under the word launch.

  5. PressButton 意圖範例語句 go ahead and launch the rocket 現在已設定為進行預測,如下所示:

    • 意圖:PressButton
    • 動作實體:go ahead
    • 目標實體:啟動
  6. 重複前一個流程,將動作和目標實體標籤指派給每一個範例語句,請記住,下列字組應該標示為 [目標] 實體:

    • 提示 (將 Unity 專案中的 HintsButton 視為目標)
    • 提示 (將 Unity 專案中的 HintsButton 視為目標)
    • 重設 (將 Unity 專案中的 ResetButton 視為目標)
    • 啟動 (將 Unity 專案中的 LaunchButton 視為目標)
  7. 選取儲存變更。 當您標記所有範例語句時,您的 PressButton 意圖頁面看起來應該像這樣:

    Screenshot of the PressButton intent page with all example utterances labeled.

6. 定型、測試和發佈應用程式

  1. 若要定型應用程式,請從左側邊欄中選取 [定型] 按鈕。 您應該會看到 [訓練作業] 頁面。

    Screenshot of the Training jobs screen.

  2. 選取 [開始定型作業],然後選取下列值:

    • 選取 [定型新模型 ] 並輸入適當的名稱;例如 MRTK-Tutorials-AzureSpeechServices
    • 選取 [ 標準訓練]。
    • 選取 [ 自動從定型數據分割測試集]。
  3. 選取 [定型] 以開始定型程序。 當定型完成處理時,您會看到 已完成的訓練 通知。

    Screenshot of Finished training notification.

  4. 若要檢閱定型的結果,請在 [定型作業] 畫面上選取您的 [輸出模型 ],然後選取 [ 模型效能] 索引標籤。

    Screenshot of the Model performance screen.

  5. 若要部署應用程式,請選取左側邊欄中的 [部署模型] 按鈕。 您應該會看到 [部署模型] 頁面。

    Screenshot of the Deploying a model page.

  6. 選取 [新增部署],然後在 [新增部署] 快顯視窗中輸入下列值:

    • 選取 [建立新的部署名稱],然後輸入適當的名稱。 記下您選取的名稱,稍後在本教學課程中將會用到它。
    • [選取定型的模型] 下拉式清單中選取您先前建立的模型
  7. 選取 [部署 ] 並等候發佈程式完成。

    Screenshot of the Deployment completed notification.

  8. 選取新的部署,然後選取 [ 取得預測 URL ] 按鈕。

    Screenshot of the Get Prediction URL page.

將 Unity 專案連線至 CLU 應用程式

  1. 在 [ 取得預測 URL ] 彈出視窗上,選取 [複製 ] 圖示以複製 預測 URL

    Screenshot of Get Prediction URL popup.

  2. 回到 Unity 專案中的 [階層] 視窗中,選取 [農曆通] 對象,然後在 [偵測器] 視窗中找出 Lunarcom 意圖辨識器 (腳本) 元件,並將其設定如下。

    • 在 [CLU 端點] 欄位中,貼上您在上一個步驟中複製的 [預測 URL]。
    • 在 [CLU 專案名稱] 欄位中,貼上您在建立 CLU 應用程式時記下的 [專案名稱]。
    • 在 [CLU 部署] 欄位中,貼上您在建立新部署時記下的 [部署名稱]。
    • 在 [ 語言服務 API 金鑰 ] 字段中,傳遞語言 服務的 API 金鑰 (Key1 或 Key2)。 您可以選取語言服務,然後在左側功能表中選取 [金鑰] 和 [端點],以在 Azure 入口網站 中找到此專案。

    Screenshot of passing the example query you copied.

測試意圖辨識

  1. 若要直接在 Unity 編輯器中使用意圖辨識,您必須允許開發電腦使用聽寫。 若要確認此設定,請開啟 Windows 設定,然後選擇 [隱私權>語音],並確定 [在線語音辨識] 已開啟。

    Screenshot of Testing the intent recognition.

  2. 如果進入遊戲模式,您可以先按下火箭按鈕來測試意圖辨識。 然後,當您說出第一個範例語句時, 請繼續發射火箭,您會看到 LunarModule 發射到太空。

    Screenshot of Enter the game mode.

  3. 請嘗試所有範例語句,然後嘗試範例語句的一些變化,然後嘗試一些隨機語句。