Subsistema Principal: PhraseRecognitionSubsystem – MRTK3

Observação

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

O pacote Definições Principais é fornecido com PhraseRecognitionSubsystem, uma implementação base de MRTKSubsystem e IPhraseRecognitionSubsystem, 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 WindowsPhraseRecognitionSubsystem, bem como outro possíveis subsistemas de reconhecimento de frases que você possa criar, deve ser baseada nessa classe. Subsistemas herdando do PhraseRecognitionSubsystem podem trabalhar com SpeechInteractor para disparar eventos selecionados em StatefulInteractables com base nas configurações dos interativos. As subclasses herdadas também permitirão o registro de UnityActions arbitrários em 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 PhraseRecognitionSubsystem 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 PhraseRecognitionSubsystem 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 WindowsPhraseRecognitionSubsystem 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 PhraseRecognitionSubsystem

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

A maneira mais fácil de usar PhraseRecognitionSubsystem é 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 PhraseRecognitionSubsystem manualmente

Uma maneira alternativa de usar PhraseRecognitionSubsystem é registrar manualmente a frase e a UnityAction que você deseja ver invocada quando a frase for ouvida com o subsistema.

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