Поделиться через


Основная подсистема: KeywordRecognitionSubsystem — MRTK3

Примечание.

Общие сведения о подсистемах в MRTK3 см. здесь.

Пакет Core Definitions включает KeywordRecognitionSubsystem, базовую реализацию MRTKSubsystem и IKeywordRecognitionSubsystem, который служит основой для подсистем, ответственных за распознавание ключевых слов и фраз в MRTK3. Конкретная реализация, поставляемая в составе MRTK, например WindowsKeywordRecognitionSubsystem, и другие потенциальные подсистемы распознавания фраз, которые вы можете создать, должны быть основаны на этом классе. Подсистемы, наследуемые от KeywordRecognitionSubsystem работы, могут SpeechInteractor активировать события выбора на StatefulInteractable's основе параметров взаимодействуемых. Унаследованные подклассы также позволят зарегистрировать произвольное UnityAction's ключевое слово вашего выбора, чтобы действие было вызвано при использовании такого слова.

Дополнительные сведения см. в документации по конкретной реализации KeywordRecognitionSubsystem, которую вы хотите использовать.

Настройка

Примечание.

В этом руководстве приведены инструкции по включению подсистемы в новом проекте MRTK (предполагается, что базовая настройка, не связанная с речью, уже выполнена). Если вы используете наш пример проекта, обратите внимание, что некоторые действия уже выполнены.

1. Включите подсистему распознавания речи

Перейдите к параметрам проекта>MRTK3 Доступные подсистемы MRTK, а затем включите подсистему речи, которую вы хотите использовать.

2. Назначьте ресурс конфигурации (для определенных подсистем)

Для некоторых подсистем ресурс конфигурации требуется, чтобы он выполнялся нормально.

  1. Щелкните подсистему, включенную на шаге 1 настройки.
  2. Проверьте, отображается ли пустой слот Configuration Asset в разделе Subsystem Details (Сведения о подсистеме) справа. Если это так, создайте новую конфигурацию, выбрав "Активы "> Создать подсистемы> MRTK>[имя подсистемы] Config, а затем перетащите созданную конфигурацию в слот.
  3. После заполнения слота конфигурации измените параметры в только что созданной конфигурации для конкретного проекта. Не забудьте сохранить проект после завершения работы.

3. Убедитесь, что объект GameObject в подсистеме речи MRTK активен (требуется для StatefulInteractable (например, кнопок) для ответа на фразы).

Убедитесь, что параметр "Платформа MRTK XR" > "Речь MRTK" активен, а подключенный скрипт включен.

4. Убедитесь, что в параметрах проигрывателя заданы правильные возможности

Различные реализации KeywordRecognitionSubsystem имеют разные необходимые возможности. Дополнительные сведения см. в документации по подсистеме, которую хотите использовать.

Для примера, чтобы использовать WindowsKeywordRecognitionSubsystem на платформе UWP, выберите Project Settings>Player>Publishing Settings>Capabilities (Параметры проекта > Проигрыватель > Параметры публикации > Возможности) и убедитесь, что выбрана возможность Microphone (Микрофон).

5. Запустите сцену на устройстве или в редакторе

Теперь проект должен быть готов к запуску на устройстве или в редакторе.

Использование keywordRecognitionSubsystem

Использование KeywordRecognitionSubsystem с StatefulInteractables (например, кнопками)

Самый простой способ использования KeywordRecognitionSubsystem — использовать его с StatefulInteractable. Если выполняется шаг 3, SpeechInteractor активирует события выбора StatefulInteractable при выполнении условий, указанных в таких интерактивных объектах (например, произносится указанная фраза и взгляд переводится на интерактивный объект). Сведения о настраиваемых параметрах см. в инспекторе StatefulInteractable и SpeechInteractor ("Платформа MRTK XR" > "Речь MRTK").

Использование KeywordRecognitionSubsystem вручную

Альтернативным способом использования KeywordRecognitionSubsystem является ручной регистрации ключевого слова и UnityAction вызываемого при услышанном ключевом слове подсистемой.

// Get the first running phrase recognition subsystem.
var keywordRecognitionSubsystem = XRSubsystemHelpers.GetFirstRunningSubsystem<KeywordRecognitionSubsystem>();

// If we found one...
if (keywordRecognitionSubsystem != null)
{
    // Register a keyword and its associated action with the subsystem
    keywordRecognitionSubsystem.CreateOrGetEventForKeyword("your keyword").AddListener(() => Debug.Log("Keyword recognized"));
}