MRが楽しい

MRやVRについて学習したことを書き残す

Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ読み解く MRTK3の音声入力

本日は Mixed Reality Toolkit 3 の調査枠です。
Mixed Reality Toolkit 3 パブリックプレビューのドキュメントを少しずつ翻訳しつつ読み進めていきます。

Mixed Reality Toolkit 3 のドキュメント

以下のドキュメントを読み進めていきます。
docs.microsoft.com

今回は「MRTK3の音声入力」と「PhraseRecognitionSubsystem の概要」のページを合わせて読み進めます。
docs.microsoft.com
docs.microsoft.com

概要

MRTK3 の音声入力は PhraseRecognitionSubsystem の実装によって実現しています。
Unity の KeywordRecognizer を利用する WindowsPhraseRecognitionSubsystem をデフォルトで同梱しています。
MRTK v2 と同様に、この機能は、Windows Editor、Standalone Windows、UWPでのみサポートされます。

注意

このガイドでは新しい MRTK プロジェクトで音声サブシステムを有効にする手順を説明します。
音声関連以外の基本的な設定はすでに行われているものとします。

重要

HoloLens 2 で WindowsPhraseRecognitionSubsystem を実行すると「select」キーワードが認識されない外部起因の不具合があります。現在、関係者と連携して対応中です。
回避するには利用する音声認識キーワードを[StatefulInteractable(またはPressableButtonなどのサブクラス) -> Advanced StatefulInteractable Settings -> Allow Select By Voice -> Speech Recognition Keyword]の項目から変更してください。

セットアップ

音声サブシステムを有効にする

1. [Project Settings -> MRTK3 -> Available MRTK Subsystems]に移動します。
2. 使用したい音声サブシステムを有効にします。現時点では MRTK3 には WindowsPhraseRecognitionSubsystem のみが付属しています。

プロファイルを構成します

特定のサブシステムではプロファイルの構成を設定する必要がありますが、現時点の WindowsPhraseRecognitionSubsystem では構成の設定は不要です。
将来の PhraseRecognitionSubsystem の実装では必要になる可能性があることに注意してください。

[MRTK Speech]ゲームオブジェクトをアクティブにします

[MRTK XR Rig -> MRTK Speech]ゲームオブジェクトがアクティブであることを確認して下さい。
更に関連するスクリプト(SpeechInteractor)がアクティブであることを確認します。

マイクの使用権限を設定します

HoloLens2 でアプリを利用する場合、[Project Settings -> Player -> UWP -> PublishingSettings -> Capabilities]に移動し、[Microphone]にチェックを入れます。
これでマイクの使用権限が設定されます。

シーンを再生して動作を確認する

シーンを再生またはデバイスにアプリをデプロイして音声認識の動作を確認します。

PhraseRecognitionSubsystem の使用方法

StatefulInteractable(ボタンなど)と合わせて PhraseRecognitionSubsystem を使用する

PhraseRecognitionSubsystem の最も簡単な使用方法は StatefulInteractable と合わせて使用する方法です。
Interactable で指定された条件が満たされたときに SpeechInteractor によって StatefulInteractable に対する選択イベントがトリガーされます。
以下の設定の場合、指定されたフレーズの[select]が聞こえ、Interactable に視線が合っている場合にトリガーされます。

PhraseRecognitionSubsystem を手動で使用する

PhraseRecognitionSubsystem の手動での使用方法は音声コマンドのフレーズと、そのフレーズが聞こえたときに呼び出す UnityAction を直接登録する方法です。

// Get the first running phrase recognition subsystem.
// 最初に動作するフレーズ認識サブシステムを取得します。
var phraseRecognitionSubsystem = XRSubsystemHelpers.GetFirstRunningSubsystem<PhraseRecognitionSubsystem>();

// If we found one...
// 見つかった場合...
if (phraseRecognitionSubsystem != null)
{
    // Register a phrase and its associated action with the subsystem.
    // サブシステムにフレーズとそれに関連するアクションを登録する。
    phraseRecognitionSubsystem.CreateOrGetEventForPhrase("your phrase").AddListener(() => Debug.Log("Phrase recognized"));
}

2022/06/21時点での注意事項

現在(2022/06/21)最新の[MRTK Windows Speech Recognition]のバージョン[3.0.0-pre.6]では以下の不具合があり、手順通り設定を行っても音声認識が動作しません。
github.com

修正バージョンはまだ提供されていないので、どうしても MRTK3 で音声認識を利用したい場合は以下の修正を手動で反映する必要があります。
github.com