夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

音声コマンドを使用する HoloLens2アプリのチュートリアルその⑫

Microsoftのドキュメント[Microsoft Docs]ではHoloLens 2の入門チュートリアルが公開されています。

ツールのインストールから詳しく掲載されているためこちらを今回勉強しながらHoloLens 2が手元にないためHoloLens 1stで動かしてみます。

 チュートリアルは以下で公開されています。

docs.microsoft.com

前回までで3Dオブジェクトに対してのBoundingBoxを付与しました。

〇6. 詳細な入力オプションを学ぶ

〇音声コマンドの有効化

●1. 既定の入力システムプロファイルを複製します。

 ユーザーによる音声コマンドを使用するためには音声認識のキーワードとしてMixedRealityToolkitのProfileに登録しておく必要があります。

 [Hierarchy] ウィンドウで[MixedRealityToolkit]オブジェクトを選択し[Inspector] ウィンドウで [Input] タブを選択し、 [DefaultHoloLens2InputSystemProfile]を[Clone]して独自のカスタマイズ可能な入力システムプロファイルに置き換えます。

f:id:Holomoto-Sumire:20200320075406j:plain

Profileの構成に関しては以前のチュートリアルで行っています。

redhologerbera.hatenablog.com

●2. 既定の Speech コマンドプロファイルを複製します。

 [Speech]セクションを展開し、 [DefaultMixedRealitySpeechCommandsProfile]を複製して、カスタマイズ可能な独自のSpeech コマンドプロファイルに置き換えます。

f:id:Holomoto-Sumire:20200320075850j:plain

● 3. speech コマンドを作成する

 [Speech command] セクションで、 [+ Add a New Speech Command] ボタンをクリックして、既存の音声コマンドの一覧の一番下に新しい speech コマンドを追加します。

f:id:Holomoto-Sumire:20200320080227j:plain

次に、 [keyword] フィールドに適切な単語または語句を入力します。たとえば、 [Play Music] を選択します。

f:id:Holomoto-Sumire:20200320081322j:plain

●4. 音声入力ハンドラー (スクリプト) コンポーネントを追加して構成する

 [Hierarchy] ウィンドウで、 Octaオブジェクトを選択し、[Inspector]ウィンドウから[Add component]より [SpeechInputHandler ] コンポーネントを octa オブジェクトに追加します。

f:id:Holomoto-Sumire:20200320081551j:plain

次に、 [is Forcus Required] チェックボックスをオフにして、ユーザーが音声コマンドを実行するために octa オブジェクトを確認する必要がないようにします。(このチェックボックスがオンの状態では音声コマンドを実行するためにはユーザーがオブジェクトをFocusしている必要があります。)

f:id:Holomoto-Sumire:20200320082102j:plain

●5. speech コマンドの応答イベントを実装する

 ここまでで音声認識とそのキーワードとターゲットを指定しました。 次に音声コマンドを受信して応答するイベントを実装します。

 [SpeechInputHundler] コンポーネントで、[+ ] ボタンをクリックし、[Element 0]を展開しキーワードの一覧に作成した[Play Music]を設定します。

f:id:Holomoto-Sumire:20200320082649j:plain

 このキーワードには[MixedRealityToolkit]オブジェクトの[Input]の[Profile]でキーワードとして登録したものが使用可能です。

 [Project]ウィンドウの[Assets/MixedReality.SDK/StandardAssets/Audio]から[MRTK_Gem]をOctaオブジェクトのinspectorにドラッグ&ドロップしてコンポーネントとして追加します。

f:id:Holomoto-Sumire:20200320083327j:plain

 [SpeechInputHundler]から[Response () ]イベントを作成し、イベントを受信するようにoctaオブジェクトを設定、アクションとして[AudioSourcs.PlayOneShot]を定義します。

 以上で実機で[Play Music]とユーザーが発音するとOctaオブジェクトから音が流れる仕組みが実装できました。

 実機で動作させるためにはデバイス側の機能制限でマイク機能の使用を許可する必要があります。