Базовая подсистема: KeywordRecognitionSubsystem — MRTK3

Примечание

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

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

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

Настройка

Примечание

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

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

Выберите Project Settings>MRTK3Available MRTK Subsystems (Параметры проекта > MRTK3 > Доступные подсистемы MRTK) и включите нужные подсистемы распознавания речи.

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

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

  1. Щелкните подсистему, включенную на шаге 1 настройки.
  2. Проверьте, отображается ли пустой слот Configuration Asset в разделе Subsystem Details (Сведения о подсистеме) справа. Если это так, создайте новую конфигурацию, выбрав Assets ->CreateMRTK>Subsystems>[имя_вашей_подсистемы] Config (Ресурсы > Создать > MRTK > Подсистемы > нужная подсистема > Настроить), а затем перетащите созданную конфигурацию в слот.
  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"));
}