Visão geral de PhraseRecognitionSubsystem

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 subsistema potencial de reconhecimento de frases que você possa compilar, deve ser baseada nessa classe. Subsistemas herdando de 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.

Consulte a documentação da implementação concreta PhraseRecognitionSubsystem a ser usada para obter informações mais específicas.

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 –> MRTK3 –> Subsistemas 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. Primeiro, clique no subsistema habilitado na Instalação 1 e verifique se um slot vazio Configuration Asset aparece nos Detalhes do Subsistema à direita. Nesse caso, crie uma nova configuração em Ativos –> Criar -> MRTK -> Subsistemas -> [nome do seu subsistema] Configurar e arraste a configuração criada para o slot. 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 as 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. Consulte a documentação do subsistema que você deseja usar para obter mais informações.

A título de exemplo, para usar WindowsPhraseRecognitionSubsystem na Plataforma UWP, acesse Configurações do projeto –> Player –> Configurações de publicação –> Funcionalidades e verifique se o Recurso do microfone está definido.

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