Subsistema principal: KeywordRecognitionSubsystem — MRTK3

Observação

Para obter informações gerais sobre subsistemas no MRTK3, consulte aqui.

O pacote Definições Principais é fornecido com KeywordRecognitionSubsystem, uma implementação base de MRTKSubsystem e IKeywordRecognitionSubsystem, que atua como a base de subsistemas responsáveis pelo reconhecimento de palavra-chave/frase no MRTK3. A implementação concreta enviada como parte do MRTK, como WindowsKeywordRecognitionSubsystem, bem como outro possíveis subsistemas de reconhecimento de frases que você possa criar, deve ser baseada nessa classe. Os subsistemas herdados de KeywordRecognitionSubsystem podem trabalhar com SpeechInteractor para disparar eventos selecionados com StatefulInteractable's base nas configurações dos interacionáveis. As subclasses herdadas também permitirão o registro de arbitrário UnityAction's para uma palavra-chave de sua escolha para que a ação seja invocada quando essa palavra for dita.

Para obter informações mais específicas, consulte a documentação da implementação concreta do KeywordRecognitionSubsystem a ser usada.

Instalação

Observação

Este guia fornece etapas para habilitar o subsistema de fala em um novo projeto do MRTK (com outra instalação básica não relacionada à fala em vigor). Se você estiver usando nosso projeto de exemplo, poderá observar que algumas etapas foram executadas para você.

1. Habilitar o subsistema de fala

Acesse Configurações do Projeto>MRTK3Subsistemas Disponíveis do MRTK e habilite o subsistema de fala que você gostaria de usar.

2. Atribuir um ativo de configuração (para alguns subsistemas)

Em alguns subsistemas, um ativo de configuração é necessário para que ele seja executado normalmente.

  1. Clique no subsistema que você habilitou na Instalação 1.
  2. Verifique se um slot vazio de Configuration Asset aparece em Detalhes do Subsistema à direita. Nesse caso, crie uma configuração em Ativos –>CriarMRTK>Subsistemas>Configurar [nome do seu subsistema] e arraste a configuração criada para o slot.
  3. Depois de verificar se o slot de configuração está preenchido, altere as configurações na configuração recém-criada do seu projeto específico. Lembre-se de salvar o projeto quando terminar.

3. Verifique se o GameObject de Fala do MRTK está ativo (necessário para StatefulInteractables (por exemplo, botões) responder às frases)

Verifique se MRTK XR Rig –> Fala do MRTK está ativo e se os scripts anexados estão habilitados.

4. Verificar se as funcionalidades adequadas estão definidas nas Configurações do Player

Diferentes implementações de KeywordRecognitionSubsystem possuem recursos necessários diferentes. Para obter mais informações, consulte a documentação do subsistema que você deseja usar.

A título de exemplo, para usar WindowsKeywordRecognitionSubsystem na Plataforma UWP, vá para Configurações do Projeto>Player>Configurações de Publicação>Funcionalidades e verifique se a funcionalidade do Microfone está definida.

5. Executar a cena no dispositivo/no editor

O projeto deve estar pronto para ser executado em um dispositivo ou no editor.

Usando KeywordRecognitionSubsystem

Usando KeywordRecognitionSubsystem com StatefulInteractables (por exemplo, botões)

A maneira mais fácil de usar KeywordRecognitionSubsystem é usá-lo com StatefulInteractables. Se a Etapa 3 na seção de instalação for executada, SpeechInteractor vai disparar eventos selecionados em StatefulInteractables quando as condições especificadas em tais interativos forem cumpridas (por exemplo, uma frase especificada é ouvida e o interativo está sendo focalizado). Consulte o inspetor de StatefulInteractable e SpeechInteractor (MRTK XR Rig –> Fala do MRTK) para obter as definições configuráveis.

Usando KeywordRecognitionSubsystem manualmente

Uma maneira alternativa de usar KeywordRecognitionSubsystem é registrar manualmente palavra-chave e o UnityAction que você deseja ver invocado quando o palavra-chave é ouvido com o subsistema.

// 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"));
}