9.音声コマンドの使用9. Using speech commands

概要Overview

このチュートリアルでは、音声コマンドを作成する方法と、それらをグローバルに制御する方法について説明します。In this tutorial, you will learn how to create speech commands and how to control them globally. また、音声コマンドを制御するオブジェクトをユーザーが確認する必要があるローカルの音声コマンドを制御する方法についても説明します。You will also learn how to control local speech commands that require the user to look at the object that controls the speech command.

目標Objectives

  • 音声コマンドを作成する方法について説明しますLearn how to create speech commands
  • 音声コマンドをグローバルおよびローカルで制御する方法について説明しますLearn how to control speech commands globally and locally

マイク機能が有効になっていることを確認するEnsuring the Microphone capability is enabled

[Unity] メニューで、[Mixed Reality Toolkit] > [Utilities](ユーティリティ) > [Configure Unity Project](Unity プロジェクトの構成) をクリックして [MRTK Project Configurator] ウィンドウを開き、 [UWP Capabilities](UWP 機能) セクションで [Enable Microphone Capability](マイク機能を有効にする) がグレーで表示されていることを確認します。In the Unity menu, select Mixed Reality Toolkit > Utilities > Configure Unity Project to open the MRTK Project Configurator window, then in the UWP Capabilities section, verify that Enable Microphone Capability is greyed out:

マイク機能を有効にする

注意

このチュートリアル シリーズの冒頭で Unity プロジェクトを構成したときに、MRTK Project Configurator 設定を適用する手順中にマイク機能を有効にしておく必要がありました。The Microphone capability should have been enabled during the Apply the MRTK Project Configurator settings instructions when you configured the Unity project at the beginning of this tutorial series. しかし、有効にしていない場合は、ここで有効にしてください。However, if it is not enabled, make sure you enable it now.

音声コマンドを作成するCreating speech commands

[階層] ウィンドウで [MixedRealityToolkit] オブジェクトを選択し、[インスペクター] ウィンドウで [MixedRealityToolkit] > [入力] タブを選択して、次の手順に従います。In the Hierarchy window, select the MixedRealityToolkit object, then in the Inspector window, select the MixedRealityToolkit > Input tab and take the following steps:

  • [Speech](音声) セクションを展開しますExpand the Speech section
  • DefaultMixedRealitySpeechCommandsProfile を複製し、適切な名前 (たとえば、GettingStarted_MixedRealitySpeechCommandsProfile) を指定しますClone the DefaultMixedRealitySpeechCommandsProfile and give it a suitable name, for example, GettingStarted_MixedRealitySpeechCommandsProfile
  • [Start Behaviour](開始動作)[Auto Start](自動開始) に設定されていることを確認しますVerify that Start Behaviour is set to Auto Start

音声コマンドを作成する

ヒント

MRTK プロファイルを複製する方法については、MRTK プロファイルの構成に関するページにある手順を参照してください。For a reminder on how to clone MRTK profiles, you can refer to the Configuring the MRTK profiles instructions.

[Speech](音声) > [Speech Commands](音声コマンド) セクションで、 [+Add a New Speech Command](新しい音声コマンドの追加) ボタンを 4 回クリックして、既存の音声コマンドの一覧に新しい音声コマンドを 4 つ追加します。次に、 [Keyword](キーワード) フィールドに次の語句を入力します。In the Speech > Speech Commands section, click the + Add a New Speech Command button four times to add four new speech commands to the list of the existing speech commands, then in the Keyword fields enter the following phrases:

  • Enable Indicator(インジケーターの有効化)Enable Indicator
  • Enable Tap to Place(タップの有効化)Enable Tap to Place
  • Enable Bounding Box(境界ボックスの有効化)Enable Bounding Box
  • Disable Bounding Box(境界ボックスの無効化)Disable Bounding Box

新しい音声コマンドを追加する

ヒント

コンピューターにマイクが搭載されていない場合は、音声コマンドにキーコードを割り当てることができます。これにより、対応するキーが押されたときにそれらをトリガーできます。If your computer does not have a microphone you can assign a KeyCode to the speech commands, which will let you trigger them when the corresponding key is pressed.

音声コマンドを制御するControlling speech commands

[プロジェクト] ウィンドウで、 [Assets](アセット) > [MRTK] > [SDK] > [Features](機能) > [UX] > [Prefabs](プレハブ) > [ToolTip](ヒント) フォルダーの順に移動して、ヒント プレハブを見つけます。In the Project window, navigate to the Assets > MRTK > SDK > Features > UX > Prefabs > ToolTip folder to locate the tooltip prefabs:

[ToolTip](ヒント) フォルダーを開く

[階層] ウィンドウで空の領域を右クリックし、 [Create Empty](空を作成) を選択してシーンに空のオブジェクトを追加します。In the Hierarchy window, right-click on an empty spot and select Create Empty to add an empty object to your scene.

プロジェクトに SpeechInputHandler_Global という名前を指定します。次に、[インスペクター] ウィンドウで、 [コンポーネントの追加] ボタンを使用して [SpeechInputHandler] コンポーネントを追加し、次のように構成します。Name the object SpeechInputHandler_Global, then in the Inspector window, use the Add Component button to add the SpeechInputHandler component and configure it as follows:

  • [Is Focus Required](フォーカスが必要) チェックボックスを オフ にして、ユーザーが SpeechInputHandler コンポーネントを使用してオブジェクトを確認しなくても音声コマンドをトリガーできるようにしますUncheck the Is Focus Required checkbox, so the user is not required to look at the object with the SpeechInputHandler component to trigger the speech command
  • [プロジェクト] ウィンドウで、 [Speech Confirmation Tooltip Prefab](Speech Confirmation ヒント プレハブ) フィールドに SpeechConfirmation Tooltip プレハブを割り当てて、音声コマンドが認識されるとこのプレハブが表示されるようにしますFrom the Project window, assign the SpeechConfirmation Tooltip prefab to the Speech Confirmation Tooltip Prefab field, to have this prefab appear when a speech command is recognized

音声入力ハンドラー コンポーネントを構成する

SpeechInputHandler コンポーネントで、小さい + アイコンを 3 回クリックして、3 つのキーワード要素を追加します。On the SpeechInputHandler component, click the small + icon three times to add three keyword elements:

音声入力ハンドラーにキーワード要素を追加する

[Element 0](要素 0) を展開し、次のように構成します。Expand Element 0 and configure it as follows:

  • [Keyword](キーワード) フィールドに「Enable Indicator(インジケーターの有効化) 」と入力して、前のセクションで作成した [Enable Indicator](インジケーターの有効化) 音声コマンドを参照しますIn the Keyword field, enter Enable Indicator, to reference the Enable Indicator speech command you created in the previous section
  • 小さい + アイコンをクリックして、イベントを追加しますClick the small + icon to add an event
  • [階層] ウィンドウで、 [None (Object)](なし (オブジェクト)) フィールドに Indicator オブジェクトを割り当てますFrom the Hierarchy window, assign the Indicator object to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、 [GameObject] > [SetActive (bool)] の順に選択し、イベントがトリガーされたときに実行するアクションとして、この関数を設定しますFrom the No Function dropdown, select GameObject > SetActive (bool) to set this function as the action to be executed when the event is triggered
  • 引数チェックボックスが オン になっていることを確認しますCheck the argument checkbox, so it is checked

キーワード要素 0 を構成する

[Element 1](要素 1) を展開し、次のように構成します。Expand Element 1 and configure it as follows:

  • [Keyword](キーワード) フィールドに「Enable Bounding Box(境界ボックスの有効化) 」と入力して、前のセクションで作成した [Enable Bounding Box](境界ボックスの有効化) コマンドを参照しますIn the Keyword field, enter Enable Bounding Box, to reference the Enable Bounding Box command you created in the previous section
  • 小さい + アイコンをクリックして、イベントを追加しますClick the small + icon to add an event
  • [階層] ウィンドウで、 [None (Object)](なし (オブジェクト)) フィールドに RoverExplorer オブジェクトを割り当てますFrom the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、 [BoundingBox] > [bool enabled] の順に選択し、イベントがトリガーされたときにこのプロパティ値を更新するようにしますFrom the No Function dropdown, select BoundingBox > bool enabled to update this property value when the event is triggered
  • 引数チェックボックスが オン になっていることを確認しますCheck the argument checkbox, so it is checked
  • 小さい [+] アイコンをクリックして、別のイベントを追加しますClick the small + icon to add another event
  • [階層] ウィンドウで、 [None (Object)](なし (オブジェクト)) フィールドに RoverExplorer オブジェクトを割り当てますFrom the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、 [ObjectManipulator] > [bool enabled] の順に選択し、イベントがトリガーされたときにこのプロパティ値を更新するようにしますFrom the No Function dropdown, select ObjectManipulator > bool enabled to update this property value when the event is triggered
  • 引数チェックボックスが オン になっていることを確認しますCheck the argument checkbox, so it is checked

キーワード要素 1 を構成する

[Element 2](要素 2) を展開し、次のように構成します。Expand Element 2 and configure it as follows:

  • [Keyword](キーワード) フィールドに「Disable Bounding Box(境界ボックスの無効化) 」と入力して、前のセクションで作成した [Disable Bounding Box](境界ボックスの無効化) コマンドを参照しますIn the Keyword field, enter Disable Bounding Box, to reference the Disable Bounding Box command you created in the previous section
  • 小さい + アイコンをクリックして、イベントを追加しますClick the small + icon to add an event
  • [階層] ウィンドウで、 [None (Object)](なし (オブジェクト)) フィールドに RoverExplorer オブジェクトを割り当てますFrom the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、 [BoundingBox] > [bool enabled] の順に選択し、イベントがトリガーされたときにこのプロパティ値を更新するようにしますFrom the No Function dropdown, select BoundingBox > bool enabled to update this property value when the event is triggered
  • 引数チェックボックスが オフ になっていることを確認しますVerify that the argument checkbox is unchecked
  • 小さい [+] アイコンをクリックして、別のイベントを追加しますClick the small + icon to add another event
  • [階層] ウィンドウで、 [None (Object)](なし (オブジェクト)) フィールドに RoverExplorer オブジェクトを割り当てますFrom the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、 [ObjectManipulator] > [bool enabled] の順に選択し、イベントがトリガーされたときにこのプロパティ値を更新するようにしますFrom the No Function dropdown, select ObjectManipulator > bool enabled to update this property value when the event is triggered
  • 引数チェックボックスが オフ になっていることを確認しますVerify that the argument checkbox is unchecked

キーワード要素 2 を構成する

[階層] ウィンドウで、[RoverExplorer] > [RoverAssembly] オブジェクトの順に選択します。次に、[インスペクター] ウィンドウで、 [コンポーネントの追加] ボタンを使用して [SpeechInputHandler] コンポーネントを追加し、次のように構成します。In the Hierarchy window, select the RoverExplorer > RoverAssembly object, then in the Inspector window, use the Add Component button to add the SpeechInputHandler component and configure it as follows:

  • [Is Focus Required](フォーカスが必要) チェックボックスが オン になっていることを確認します。これにより、ユーザーは音声コマンドをトリガーするために SpeechInputHandler コンポーネント (RoverAssembly) を使用してオブジェクトを確認する必要が生じますVerify that the Is Focus Required checkbox is check, so the user is required to look at the object with the SpeechInputHandler component, i.e., the RoverAssembly, to trigger the speech command
  • [プロジェクト] ウィンドウで、 [Speech Confirmation Tooltip Prefab](Speech Confirmation ヒント プレハブ) フィールドに SpeechConfirmation Tooltip プレハブを割り当てて、音声コマンドが認識されるとこのプレハブが表示されるようにしますFrom the Project window, assign the SpeechConfirmation Tooltip prefab to the Speech Confirmation Tooltip Prefab field, to have this prefab appear when a speech command is recognized

探査車アセンブリに音声入力ハンドラーを追加する

SpeechInputHandler コンポーネントで、小さい + アイコンをクリックしてキーワード要素を追加し、新しく作成された要素を展開して、次のように構成します。On the SpeechInputHandler component, click the small + icon to add a keyword element, expand the newly created element, then configure it as follows:

  • [Keyword](キーワード) フィールドに「Enable Tap to Place(タップの有効化) 」と入力して、前のセクションで作成した [Enable Tap to Place](タップの有効化) コマンドを参照しますIn the Keyword field, enter Enable Tap to Place, to reference the Enable Tap to Place command you created in the previous section
  • 小さい + アイコンをクリックして、イベントを追加しますClick the small + icon to add an event
  • [階層] ウィンドウで、 [None (Object)](なし (オブジェクト)) フィールドにオブジェクト自体 (同じ RoverAssembly オブジェクト) を割り当てますFrom the Hierarchy window, assign the object itself, i.e., the same RoverAssembly object, to the None (Object) field
  • [No Function](関数なし) ドロップダウンから、TapToPlace > [bool enabled] の順に選択し、イベントがトリガーされたときにこのプロパティ値を更新するようにしますFrom the No Function dropdown, select TapToPlace > bool enabled to update this property value when the event is triggered
  • 引数チェックボックスが オン になっていることを確認しますCheck the argument checkbox, so it is checked

探査車アセンブリで音声入力ハンドラーを構成する

結論Congratulations

このチュートリアルでは、音声コマンドを作成する方法と、それらをグローバルに制御する方法について学習しました。In this tutorial, you learned how to create speech commands and how to control them globally. 音声コマンドを制御するオブジェクトをユーザーが確認する必要があるローカルの音声コマンドを制御する方法についても学習しました。You also learned how to control local speech commands that require the user to look at the object that controls the speech command.

また、入門チュートリアル シリーズも終了しました。This also concludes the Getting started tutorials series. これらのチュートリアルでは、MRTK を使用して最初から完全な mixed reality エクスペリエンスを正常に構築できました。Through these tutorials, you have successfully built a complete mixed reality experience from scratch using the MRTK.

次の Azure Spatial Anchors のチュートリアルマルチユーザー機能のチュートリアルの 2 つのチュートリアル シリーズでは、まず、Azure Spatial Anchors をプロジェクトに統合して、実際に作成した Rover Explorer のエクスペリエンスを固定する方法を学習します。In the next two tutorial series, Azure Spatial Anchors tutorials and Multi-user capabilities tutorials, you will first learn how to integrate Azure Spatial Anchors into your project to anchor the Rover Explorer experience you created in the real world. 次に、ユーザーとオブジェクトの移動をリアルタイムで共有するために、マルチユーザー機能をプロジェクトに追加する方法を学習します。Then, you will learn how to add multi-user capabilities to your project to share user and object movements in real-time.

次の開発チェックポイントNext Development Checkpoint

私たちが用意した Unity 開発チェックポイント体験に従っている場合、次のタスクは Mixed Reality アプリのコア構成要素に慣れることです。If you're following the Unity development checkpoint journey we've laid out, your next task is to familiarize yourself with core building blocks of Mixed Reality apps.

いつでも Unity 開発チェックポイントに戻ることができます。You can always go back to the Unity development checkpoints at any time.