コア サブシステム: DictationSubsystem — MRTK3

注意

MRTK3 のサブシステムに関する一般的な情報については、こちらを参照してください。

コア定義パッケージには、 の基本実装MRTKSubsystemIDictationsystemである が付属DictationSubsystemしており、MRTK3 でのディクテーションを担当するサブシステムのベースとして機能します。 MRTK の一部として提供される具体的な実装 (作成する可能性があるその他のディクテーション サブシステムなど WindowsDictationSubsystem ) はすべて、このクラスに基づいている必要があります。 から DictationSubsystem 継承するサブシステムを使用すると、ディクテーション セッションを開始および停止でき、音声入力の処理中、最終的な結果が認識されたとき、ディクテーション セッションが完了または障害が発生したときにトリガーされるイベントが提供されます。 これらのイベントにイベント ハンドラーを追加して、ディクテーション機能を処理できます。

詳細については、使用する具体的な DictationSubsystem 実装のドキュメントを参照してください。

セットアップ

注意

このガイドでは、新しい MRTK プロジェクトで音声サブシステムを有効にする手順について説明します (その他の基本的な非音声関連のセットアップは行われているとします)。 サンプル プロジェクトを使用している場合は、いくつかの手順が実行されていることがわかります。

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

[プロジェクト設定][MRTK3利用可能な MRTK サブシステム] > に移動し、使用するディクテーション サブシステムを有効にします。

2. 構成資産を割り当てる

特定のサブシステムでは、正常に実行するために構成アセットが必要です。

  1. セットアップ 1 で有効にしたサブシステムをクリックします。
  2. 右側の [サブシステムの詳細] に空 Configuration Asset のスロットが表示されているかどうかを確認します。 該当する場合は、[アセット] ->[作成][MRTK]>[サブシステム]>[<サブシステムの名前> Config] (<サブシステムの名前> の構成) を選択し、作成された構成をスロットにドラッグします。
  3. 構成スロットが設定されていることを確認したら、新しく作成した特定プロジェクトの構成の設定を変更します。 完了したら、必ずプロジェクトを保存してください。

3. プレーヤー設定で適切な機能が設定されていることを確認する

DictationSubsystem の実装が異なると、必要な機能が異なります。 詳細については、使用するサブシステムのドキュメントを参照してください。

例として UWP プラットフォームで WindowsDictationSubsystem を使用するには、[プロジェクト設定]>[プレーヤー]>[Publishing Settings] (発行の設定)>[機能] に移動し、マイク機能が設定されていることを確認します。

4. デバイスまたはエディターでシーンを実行する

これで、プロジェクトをデバイスまたはエディターで実行する準備が整いました。 ディクテーションがエディターで動作するように音声プライバシー設定を構成する必要がある場合があることに注意してください。

DictationSubsystem の使用

スクリプトで を使用 DictationSubsystem するには、応答するディクテーション イベントにイベント ハンドラーを追加し、 を呼び出 StartDictationします。

// Get the first running dictation subsystem.
DictationSubsystem dictationSubsystem = XRSubsystemHelpers.GetFirstRunningSubsystem<DictationSubsystem>();

// If we found one...
if (dictationSubsystem != null)
{
    // Add event handlers to all dictation subsystem events. 
    dictationSubsystem.Recognizing += DictationSubsystem_Recognizing;
    dictationSubsystem.Recognized += DictationSubsystem_Recognized;
    dictationSubsystem.RecognitionFinished += DictationSubsystem_RecognitionFinished;
    dictationSubsystem.RecognitionFaulted += DictationSubsystem_RecognitionFaulted;

    // And start dictation
    dictationSubsystem.StartDictation();
}

これらのイベント ハンドラーは、イベントがトリガーされたときに発生する内容を使用して実装します。

  • Recognizing は、認識エンジンが入力を処理し、仮の結果を返すときにトリガーされます。
  • Recognized は、認識エンジンが入力を認識し、最終的な結果を返したときにトリガーされます。
  • RecognitionFinished は、認識セッションが完了し、理由を返したときにトリガーされます。
  • RecognitionFaulted は、認識が失敗したときにトリガーされ (つまり、エラーが発生しました)、理由を返します。

完了したら、これらのイベント ハンドラーを削除します。

if (dictationSubsystem != null)
{
    dictationSubsystem.StopDictation();
    dictationSubsystem.Recognizing -= DictationSubsystem_Recognizing;
    dictationSubsystem.Recognized -= DictationSubsystem_Recognized;
    dictationSubsystem.RecognitionFinished -= DictationSubsystem_RecognitionFinished;
    dictationSubsystem.RecognitionFaulted -= DictationSubsystem_RecognitionFaulted;
}

使用 DictationSubsystem の完全な例については、サンプル シーンの DictationHandler サンプル スクリプトを DictationExample 参照してください。