4.意図と自然言語の理解の設定4. Setting up intent and natural language understanding

このチュートリアルでは、Azure 音声サービスの意図認識について説明します。In this tutorial, you will explore the Azure Speech Service's intent recognition. 意図認識を使用すると、Microsoft のアプリケーションに AI 搭載の音声コマンドを実装でき、ユーザーは明確でない音声コマンドを発話しても、システムにその意図を理解させることができます。The intent recognition allows you to equip our application with AI-powered speech commands, where users can say non-specific speech commands and still have their intent understood by the system.

目標Objectives

  • LUIS ポータルで意図、エンティティ、および発話を設定する方法を理解するLearn how to set up intent, entities, and utterances in the LUIS portal
  • アプリケーションで意図と自然言語の理解を実装する方法を理解するLearn how to implement intent and natural language understanding in our application

シーンの準備Preparing the scene

[Hierarchy](階層) ウィンドウで、Lunarcom オブジェクトを選択し、[Inspector](インスペクター) ウィンドウで、 [コンポーネントの追加] ボタンを使用して、Lunarcom Intent Recognizer (Script) コンポーネントを Lunarcom オブジェクトに追加します。In the Hierarchy window, select the Lunarcom object, then in the Inspector window, use the Add Component button to add the Lunarcom Intent Recognizer (Script) component to the Lunarcom object:

mrlearning-speech

[プロジェクト] ウィンドウで、 [資産] > [MRTK.Tutorials.GettingStarted] > [Prefabs](プレハブ) > [RocketLauncher] フォルダーで、RocketLauncher_Complete プレハブを [Hierarchy](階層) ウィンドウにドラッグし、カメラの前の適切な場所に配置します。次に例を示します。In the Project window, navigate to the Assets > MRTK.Tutorials.GettingStarted > Prefabs > RocketLauncher folder, drag the RocketLauncher_Complete prefab into your Hierarchy window, and place it at a suitable location in front of the camera, for example:

  • [変換] の [位置] X = 0、Y =-0.4、Z = 1Transform Position X = 0, Y = -0.4, Z = 1
  • [変換] の [回転] X = 0、Y = 90、Z = 0Transform Rotation X = 0, Y = 90, Z = 0

mrlearning-speech

[Hierarchy](階層) ウィンドウで、Lunarcom オブジェクトをもう一度選択し、 [RocketLauncher_Complete] > [Button](ボタン) オブジェクトを展開し、 [Buttons](ボタン) オブジェクトの子オブジェクトをそれぞれ対応する [Lunar Launcher Buttons](月着陸船ランチャー ボタン) フィールドに割り当てます。In the Hierarchy window, select the Lunarcom object again, then expand the RocketLauncher_Complete > Button object and assign each of the Buttons object's child objects to the corresponding Lunar Launcher Buttons field:

mrlearning-speech

Azure Language Understanding リソースの作成Creating the Azure Language Understanding resource

このセクションでは、次のセクションで作成する Language Understanding Intelligent Service (LUIS) アプリ用の Azure 予測リソースを作成します。In this section, you will create an Azure prediction resource for the Language Understanding Intelligent Service (LUIS) app you will create in the next section.

Azure にサインインし、 [Create a resource](リソースの作成) をクリックします。Sign in to Azure and click Create a resource. 次に、 [Language Understanding] を検索して選択します。Then search for and select Language Understanding:

mrlearning-speech

[作成] ボタンをクリックして、このサービスのインスタンスを作成します。Click the Create button to create an instance of this service:

mrlearning-speech

[作成] ページで、 [予測] オプションをクリックし、次の値を入力します。On the Create page, click the Prediction option and enter the following values:

  • [サブスクリプション] では、試用版のサブスクリプションをお持ちの場合は [Free Trail](無料試用版) を選択します。それ以外の場合は、他のいずれかのサブスクリプションを選択しますFor Subscription, select Free Trail if you have a trial subscription, otherwise, select one of your other subscriptions
  • [リソース グループ] では、 [新規作成] リンクをクリックし、適切な名前 (MRKT-Tutorials など) を入力して、 [OK] をクリックしますFor the Resource group, click the Create new link, enter a suitable name, for example, MRKT-Tutorials, and then click the OK

mrlearning-speech

注意

このドキュメントの執筆時点では、次のセクションで Language Understanding Intelligent Service (LUIS) を作成すると、作成試用版キーが LUIS 内で自動的に生成されるため、作成リソースを作成する必要はありません。As of the time of this writing, you do not need to create an authoring resource because an authoring trial key will automatically be generated within LUIS when you create the Language Understanding Intelligent Service (LUIS) in the next section.

ヒント

Azure アカウントに別の適切なリソース グループが既にある場合 (Azure Spatial Anchors チュートリアルを完了している場合など)、新しいリソース グループを作成する代わりに、それを使用できます。If you already have another suitable resource group in your Azure account, for example, if you completed the Azure Spatial Anchors tutorial, you may use this resource group instead of creating a new one.

引き続き [作成] ページで、次の値を入力します。While still on the Create page, enter the following values:

  • [名前] には、サービスの適切な名前 (MRTK-Tutorials-AzureSpeechServices など) を入力しますFor Name, enter a suitable name for the service, for example, MRTK-Tutorials-AzureSpeechServices
  • [Prediction location](予測の場所) では、アプリ ユーザーの物理的な場所に近い場所 ([ (米国) 米国西部] など) を選択しますFor Prediction location, choose a location close to your app users' physical location, for example, (US) West US
  • [予測価格レベル] では、このチュートリアルの場合は [F0 (5 Calls per second, 10K Calls per month)](F0 (1 秒あたり 5 回の呼び出し、1 か月あたり 1 万回の呼び出し)) を選択しますFor Prediction pricing tier, for the purpose of this tutorial, select F0 (5 Calls per second, 10K Calls per month)

mrlearning-speech

次に、 [Review + create](確認および作成) タブに移動し、詳細を確認してから、ページの下部にある [作成] ボタンをクリックしてリソースを作成し、新しいリソース グループも (作成するように構成した場合は) 作成します。Next, go to the Review + create tab, review the details, and then click the Create button, located at the bottom of the page, to create the resource, as well as, the new resource group if you configured one to be created:

mrlearning-speech

注意

[作成] ボタンをクリックした後、サービスが作成されるまで待つ必要があります。これには数分かかる場合があります。After you click the Create button, you will have to wait for the service to be created, which might take a few minutes.

リソースの作成プロセスが完了すると、 [デプロイが完了しました] というメッセージが表示されます。Once the resource creation process is completed, you will see the message Your deployment is complete:

mrlearning-speech

Language Understanding Intelligent Service (LUIS) の作成Creating the Language Understanding Intelligent Service (LUIS)

このセクションでは、LUIS アプリを作成し、その予測モデルを構成してトレーニングし、前の手順で作成した Azure 予測リソースに接続します。In this section, you will create a LUIS app, configure and train its prediction model, and connect it to the Azure prediction resource you created in the previous step.

具体的には、ユーザーがアクションを実行する必要があると言った場合に、ユーザーが参照しているボタンに応じて、シーン内の 3 つの赤いボタンのいずれかの Interactable.OnClick() イベントがアプリでトリガーされるという意図を作成します。Specifically, you will create an intent that if the user says an action should be taken, the app will trigger the Interactable.OnClick() event on one of the three red buttons in the scene, depending on which button the user references.

たとえば、ユーザーが "go ahead and launch the rocket" (先へ進めて、ロケットを発射) と言った場合、アプリでは "go ahead" が何らかの アクション を実行する必要があることを意味することと、ターゲット に対するInteractable.OnClick() イベントがその 発射 ボタンにあることが予測されます。For example, if the user says go ahead and launch the rocket, the app will predict that go ahead means some action should be taken, and that the Interactable.OnClick() event to target is on the launch button.

これを実現するには、主に次の手順を実行します。The main steps you will take to achieve this are:

  1. LUIS アプリの作成Create a LUIS app
  2. 意図の作成Create intents
  3. サンプル発話の作成Create example utterances
  4. エンティティの作成Create entities
  5. サンプル発話へのエンティティの割り当てAssign entities to the example utterances
  6. アプリのトレーニング、テスト、発行Train, test, and publish the app
  7. アプリへの Azure 予測リソースの割り当てAssign an Azure prediction resource to the app

1.LUIS アプリの作成1. Create a LUIS app

前のセクションで Azure リソースを作成するときに使用したものと同じユーザー アカウントを使用して、LUIS にサインインし、国を選択して、使用条件に同意します。Using the same user account you used when creating the Azure resource in the previous section, sign in to LUIS, select your country, and agree to the terms of use. 次の手順では、Azure アカウントをリンクする ように求められたら、代わりに Azure 作成リソースを使用するために、 [Continue using your trial key](試用版キーを引き続き使用する) を選択します。In the next step, when asked to Link your Azure account, choose Continue using your trial key, to use an Azure authoring resource instead.

注意

LUIS に既にサインアップしていて、作成試用版キーの有効期限が切れている場合は、ドキュメント「Azure リソース作成キーに移行する」を参照して、LUIS 作成リソースを Azure に切り替えることができます。If you have already signed up for LUIS and your authoring trial key has expired, you can refer to the Migrate to an Azure resource authoring key documentation to switch your LUIS authoring resource to Azure.

サインインしたら、 [マイ アプリ] ページに移動し、 [新しいアプリの作成] をクリックして、 [新しいアプリの作成] ポップアップ ウィンドウに次の値を入力します。Once signed in, navigate to the My apps page, then click Create new app and enter the following values in the Create new app popup window:

  • [名前] には、適切な名前 (MRTK Tutorials - AzureSpeechServices など) を入力しますFor Name, enter a suitable name, for example, MRTK Tutorials - AzureSpeechServices
  • [カルチャ] では、 [英語] を選択しますFor Culture, select English
  • [説明] には、必要に応じて適切な説明を入力しますFor Description, optionally enter a suitable description

次に、 [完了] ボタンをクリックして、新しいアプリを作成します。Then click the Done button to create the new app:

mrlearning-speech

新しいアプリが作成されると、そのアプリの [ダッシュボード] ページが表示されます。When the new app has been created, you will be taken to that app's Dashboard page:

mrlearning-speech

2.意図の作成2. Create intents

[ダッシュボード] ページで、[ビルド] > [App Assets](アプリ資産) > [意図] ページに移動し、 [Create new intent](新しい意図の作成) をクリックして、 [Create new intent](新しい意図の作成) ポップアップ ウィンドウに次の値を入力します。From the Dashboard page, navigate to the Build > App Assets > Intents page, then click Create new intent and enter the following value in the Create new intent popup window:

  • [Intent name](意図名) に「PressButton」と入力しますFor Intent name, enter PressButton

次に、 [完了] ボタンをクリックして、新しい意図を作成します。Then click the Done button to create the new intent:

mrlearning-speech

注意事項

このチュートリアルでは、Unity プロジェクトでこの意図がその名前によって参照されます。つまり、'PressButton' です。For the purpose of this tutorial, your Unity project will reference this intent by its name, i.e. 'PressButton'. そのため、意図にまったく同じ名前を付けることが非常に重要です。Consequently, it is extremely important that you name your intent exactly the same.

新しい意図が作成されると、その意図のページが表示されます。When the new intent has been created, you will be taken to that intent's page:

mrlearning-speech

3.サンプル発話の作成3. Create example utterances

[PressButton] 意図の [Example utterance](サンプル発話) の一覧に、次のサンプル発話を追加します。To the PressButton intent's Example utterance list, add the following example utterances:

  • activate launch sequence (発射手順を作動)activate launch sequence
  • show me a placement hint (配置のヒントを表示)show me a placement hint
  • initiate the launch sequence (発射手順を開始)initiate the launch sequence
  • press placement hints button (配置のヒント ボタンを押す)press placement hints button
  • give me a hint (ヒントを表示)give me a hint
  • push the launch button (発射ボタンを押す)push the launch button
  • i need a hint (ヒントが必要)i need a hint
  • press the reset button (リセット ボタンを押す)press the reset button
  • time to reset the experience (エクスペリエンスをリセットする時間を計る)time to reset the experience
  • go ahead and launch the rocket (先へ進めて、ロケットを発射)go ahead and launch the rocket

すべてのサンプル発話を追加すると、[PressButton] 意図ページは次のようになります。When all the example utterances have been added, your PressButton intent page should look similar to this:

mrlearning-speech

注意事項

このチュートリアルでは、Unity プロジェクトで "hint"、"hints"、"reset"、および "launch" という単語が参照されます。For the purpose of this tutorial, your Unity project will reference the words 'hint', 'hints', 'reset', and 'launch'. そのため、これらの単語をまったく同じようにつづることが非常に重要です。Consequently, it is extremely important that you spell these words in the exact same way.

4.エンティティの作成4. Create entities

[PressButton] 意図ページで、[ビルド] > [App Assets](アプリ資産) > [エンティティ] ページに移動し、 [新しいエンティティを作成する] をクリックして、 [新しいエンティティを作成する] ポップアップ ウィンドウに次の値を入力します。From the PressButton intent page, navigate to the Build > App Assets > Entities page, then click Create new entity and enter the following values in the Create new entity popup window:

  • [エンティティ名] には、「Action」と入力しますFor Entity name, enter Action
  • [エンティティ型] では、 [シンプル] を選択しますFor Entity type, select Simple

次に、 [完了] ボタンをクリックして、新しいエンティティを作成します。Then click the Done button to create the new entity:

mrlearning-speech

前の手順を 繰り返してTarget という名前の別のエンティティを作成します。これで、Action と Target という名前の 2 つのエンティティが設定されます。Repeat the previous step to create another entity named Target, so you have two entities named Action and Target:

mrlearning-speech

注意事項

このチュートリアルでは、Unity プロジェクトでこれらのエンティティがその名前によって参照されます。つまり、'Action' と 'Target' です。For the purpose of this tutorial, your Unity project will reference these entities by their names, i.e. 'Action' and 'Target'. そのため、エンティティにまったく同じ名前を付けることが非常に重要です。Consequently, it is extremely important that you name your entities exactly the same.

5.サンプル発話へのエンティティの割り当て5. Assign entities to the example utterances

[エンティティ] ページから [PressButton] 意図ページに戻ります。From the Entities page, navigate back to the PressButton intent page.

[PressButton] 意図ページに戻ったら、単語 go をクリックしてから、単語 ahead をクリックします。次に、コンテキスト ポップアップ メニューから [Action (Simple)](アクション (シンプル)) を選択して、go aheadAction エンティティ値としてラベルを付けます。Once back on the the PressButton intent page, click on the word go and then on the word ahead, and then select Action (Simple) from the contextual popup menu to label go ahead as an Action entity value:

mrlearning-speech

これで、go ahead という語句が Action エンティティ値として定義されました。The go ahead phrase is now defined as an Action entity value. Action エンティティ名の上にマウス カーソルを置くと、関連付けられている Action エンティティ値を表示できます。If you hover your mouse cursor above the Action entity name, you can see the associated Action entity value:

mrlearning-speech

注意

上の画像のラベルの下に表示される赤い線は、エンティティ値が予測されていないことを示しています。これは、次のセクションでモデルをトレーニングすると解決します。The red line you see under the label in the image above indicates that the entity value has not been predicted, this will be resolved when you train the model in the next section.

次に、単語 launch をクリックし、コンテキスト ポップアップ メニューから [Target (Simple)](ターゲット (シンプル)) を選択して、launchTarget エンティティ値としてラベルを付けます。Next, click on the word launch, and then select Target (Simple) from the contextual popup menu to label launch as a Target entity value:

mrlearning-speech

これで、launch という単語が Target エンティティ値として定義されました。The launch word is now defined as a Target entity value. Target エンティティ名の上にマウス カーソルを置くと、関連付けられている Target エンティティ値を表示できます。If you hover your mouse cursor above the Target entity name, you can see the associated Target entity value:

mrlearning-speech

PressButton 意図のサンプル発話の "go ahead and launch the rocket" は、次のように予測されるように構成されました。The PressButton intent example utterance 'go ahead and launch the rocket' is now configured to be predicted as follows:

  • 意図:PressButtonIntent: PressButton
  • Action エンティティ: go aheadAction entity: go ahead
  • Target エンティティ: launchTarget entity: launch

前の 2 段階のプロセスを 繰り返して、Action および Target エンティティ ラベルを各サンプル発話に割り当てます。次の単語には Target エンティティというラベルを付ける必要があることに注意してください。Repeat the previous two-step process to assign an Action and a Target entity label to each of the example utterances, keeping in mind that the following words should be labeled as Target entities:

  • hint (Unity プロジェクトの HintsButton をターゲットにします)hint (targets the HintsButton in the Unity project)
  • hints (Unity プロジェクトの HintsButton をターゲットにします)hints (targets HintsButton in the Unity project)
  • reset (Unity プロジェクトの ResetButton をターゲットにします)reset (targets the ResetButton in the Unity project)
  • launch (Unity プロジェクトの LaunchButton をターゲットにします)launch (targets the LaunchButton in the Unity project)

すべてのサンプル発話にラベルを付けると、[PressButton] 意図ページは次のようになります。When all the example utterances have been labeled, your PressButton intent page should look similar to this:

mrlearning-speech

適切なエンティティが割り当てられていることを再確認する別の方法として、 [View options](表示オプション) メニューをクリックして、ビューを [Show entity values](エンティティ値の表示) に切り替えます。For an alternative way to double-check that you have assigned the correct entities, click the View options menu and switch the view to Show entity values:

mrlearning-speech

エンティティ値を表示するように設定したビューでは、ラベル付けされた単語や語句の上にマウス カーソルを置くと、割り当てられているエンティティ名をすぐに確認できます。Now, with the view set to show entity values, you can hover the mouse courser over the labeled words and phrases to quickly verify the assigned entity name:

mrlearning-speech

6.アプリのトレーニング、テスト、発行6. Train, test, and publish the app

アプリをトレーニングするには、 [トレーニング] ボタンをクリックし、トレーニング プロセスが完了するまで待ちます。To train the app, click the Train button and wait for the training process to complete:

mrlearning-speech

注意

上の画像に示されているように、すべてのラベルの下の赤い線が削除され、すべてのエンティティ値が予測されたことが示されています。As you can see in the image above, the red lines under all the labels have been removed, indicating that all the entity values have been predicted. また、[トレーニング] ボタンの左側にある状態アイコンが赤から緑に変わっていることにも注目してください。Also notice that the status icon to the left of the Train button has changed color from red to green.

トレーニングの処理が完了したら、 [テスト] ボタンをクリックし、「go ahead and launch the rocket」と入力して、Enter キーを押します。When the training is finished processing, click the Test button, then type in go ahead and launch the rocket and press the Enter key:

mrlearning-speech

テスト発話が処理されたら、 [検査] をクリックして、テスト結果を確認します。When the test utterance has been processed, click Inspect to see the test result:

  • 意図:PressButton (98.5% の確実性)Intent: PressButton (with a 98.5% certainty)
  • Action エンティティ: go aheadAction entity: go ahead
  • Target エンティティ: launchTarget entity: launch

mrlearning-speech

アプリを発行するには、右上にある [発行] ボタンをクリックし、 [Choose your publishing slot and settings](発行スロットと設定の選択) ポップアップ ウィンドウで、 [Production](実稼働) を選択し、 [発行] ボタンをクリックします。To publish the app, click the Publish button in the top right, then in the Choose your publishing slot and settings popup window, select Production and click the Publish button:

mrlearning-speech

発行プロセスが完了するまで待ちます。Wait for the publishing process to complete:

mrlearning-speech

7.アプリへの Azure 予測リソースの割り当て7. Assign an Azure prediction resource to the app

[管理] > [アプリケーションの設定] > [Azure リソース] ページに移動します。Navigate to the Manage > Application Settings > Azure Resources page:

mrlearning-speech

[Azure リソース] ページで、 [Add prediction resource](予測リソースの追加) ボタンをクリックし、 [Assign a resource to your app](リソースをアプリに割り当てる) ポップアップ ウィンドウで次の値を選択します。On the Azure Resources page, click the Add prediction resource button and select the following values in the Assign a resource to your app popup window:

次に、 [リソースの割り当て] ボタンをクリックして、アプリに Azure 予測リソースを割り当てます。Then click the Assign resource button to assign the Azure prediction resource to your app:

mrlearning-speech

リソースが割り当てられると、[Azure リソース] ページは次のようになります。When the resource has been assigned, your Azure Resources page should look similar to this:

mrlearning-speech

Unity プロジェクトを LUIS アプリに接続するConnecting the Unity project to the LUIS app

[管理] > [アプリケーションの設定] > [Azure リソース] ページで、コピー アイコンをクリックして、サンプル クエリ をコピーします。On the Manage > Application Settings > Azure Resources page, click the copy icon to copy the Example Query:

mrlearning-speech

Unity プロジェクトに戻り、[Hierarchy](階層) ウィンドウで Lunarcom オブジェクトを選択し、次に [Inspector](インスペクター) ウィンドウで Lunarcom Intent Recognizer (Script) コンポーネントを見つけ、次のように構成します。Back in your Unity project, in the Hierarchy window, select the Lunarcom object, then in the Inspector window, locate the Lunarcom Intent Recognizer (Script) component and configure it as follows:

  • 前の手順でコピーした サンプル クエリ[LUIS Endpoint](LUIS エンドポイント) フィールドに貼り付けます。In the LUIS Endpoint field, past the Example Query you copied in the previous step:

mrlearning-speech

意図認識のテストと改善Testing and improving the intent recognition

Unity エディターで意図認識を直接使用するには、開発用コンピューターでディクテーションを使用できるようにする必要があります。To use intent recognition directly in the Unity editor, you must allow your development computer to use dictation. この設定を確認するには、Windows の [設定] を開き、 [プライバシー] > [音声認識] を選択し [オンライン音声認識] がオンになっていることを確認します。To verify this setting, open Windows Settings then choose Privacy > Speech and ensure Online speech recognition is turned on:

mrlearning-speech

これで、ゲーム モードに入ったら、まずロケット ボタンを押すと、意図認識をテストできます。If you now enter Game mode, you can test the intent recognition by first pressing the rocket button. 次に、お使いのコンピューターにマイクがあると仮定して、最初のサンプル発話の go ahead and launch the rocket を声に出すと、宇宙への LunarModule の発射が確認されます。Then, assuming your computer has a microphone, when you say the first example utterance, go ahead and launch the rocket, you will see the LunarModule launch into space:

mrlearning-speech

サンプル発話 をすべて試してから、サンプル発話のバリエーション をいくつかと、ランダムな発話 をいくつか試してみてください。Try all the example utterances, then some variation of the example utterances, as well as, a few random utterances.

次に、LUIS に戻り、[ビルド] > [Improve app performance](アプリのパフォーマンスの向上) > [Review endpoint utterances](エンドポイントの発話の確認) ページに移動し、トグル ボタンを使用して既定のエンティティ ビューから [Tokens View](トークン ビュー) に切り替え、発話を確認します。Next, return to LUIS and navigate to Build > Improve app performance > Review endpoint utterances page, use the toggle button to switch from the default Entities View to Tokens View, and then review the utterances:

  • [Utterance](発話) 列では、必要に応じて、意図に合うように割り当てられたラベルの変更や削除を行いますIn the Utterance column, change and remove the assigned labels as needed so they align with your intent
  • [Aligned intent](連携している意図) 列では、意図が正しいことを確認しますIn the Aligned intent column, verify that the intent is correct
  • [Add/Delete](追加/削除) 列では、緑色のチェック マーク ボタンをクリックして発話を追加するか、赤い [x] ボタンをクリックして削除しますIn the Add/Delete column, click the green check mark button to add the utterance or the red x button to delete it

必要な数の発話を確認したら、 [トレーニング] ボタンをクリックしてモデルを再トレーニングし、 [発行] ボタンをクリックして更新されたアプリを再発行します。When you have reviewed as many utterances as you like, click the Train button to retrain the model, then the Publish button to republish the updated app:

mrlearning-speech

注意

エンドポイントの発話が PressButton 意図と連携していないが、その発話に意図がないことをモデルに認識させる必要がある場合は、[Aligned intent](連携している意図) を [なし] に変更できます。If an endpoint utterance does not align with the PressButton intent, but you would like your model to know that the utterance has no intent, you can change the Aligned intent to None.

このプロセスを何度でも 繰り返して、アプリ モデルを向上させます。Repeat this process as many times as you like to improve your app model.

結論Congratulations

これで、プロジェクトに AI 搭載の音声コマンドが設定されました。これにより、正確なコマンドを口に出さなくても、アプリケーションでユーザーの意図を認識できます。Your project now have AI-powered speech commands, allowing your application to recognize the users' intent even if they do not utter precise commands. デバイスでアプリケーションを実行して、機能が適切に動作していることを確認してください。Run the application on your device to ensure the feature is working properly.