HoloLens (1ª gen) Entrada 212: Voz

Importante

Os tutoriais da Mixed Reality Academy foram desenhados com HoloLens (1ª gen), Unidade 2017 e Auscultadores Imersivos de Realidade Mista em mente. Como tal, sentimos que é importante deixar estes tutoriais no lugar para os desenvolvedores que ainda estão à procura de orientação no desenvolvimento para esses dispositivos. Estes tutoriais não serão atualizados com os mais recentes instrumentos ou interações que estão a ser utilizados para HoloLens 2 e podem não ser compatíveis com versões mais recentes da Unidade. Serão mantidos para continuar a trabalhar nos dispositivos suportados. Uma nova série de tutoriais foi publicada para HoloLens 2.

A entrada de voz dá-nos outra forma de interagir com os nossos hologramas. Os comandos de voz funcionam de uma forma muito natural e fácil. Desenhe os comandos de voz para que sejam:

  • Natural
  • Fácil de lembrar
  • Contexto apropriado
  • Suficientemente distinto de outras opções dentro do mesmo contexto

No MR Basics 101, usamoso KeywordRecognizer para construir dois simples comandos de voz. No MR Input 212, mergulharemos mais fundo e aprenderemos a:

  • Design comandos de voz otimizados para o motor de fala HoloLens.
  • Tenha em atenção que comandos de voz estão disponíveis.
  • Reconheça que ouvimos o comando de voz do utilizador.
  • Compreenda o que o utilizador está a dizer, usando um Reconhecimento de Ditados.
  • Utilize um Reconhecimento de Gramática para ouvir comandos baseados num ficheiro SRGS, ou Especificação de Gramática de Reconhecimento de Voz.

Neste curso, vamos revisitar o Model Explorer, que construímos na ENTRADA MR 210 e NA entrada MR 211.

Importante

Os vídeos incorporados em cada um dos capítulos abaixo foram gravados usando uma versão mais antiga de Unidade e o Mixed Reality Toolkit. Embora as instruções passo a passo sejam precisas e atuais, pode ver scripts e visuais nos vídeos correspondentes que estão desatualizados. Os vídeos continuam incluídos para a posteridade e porque os conceitos cobertos ainda se aplicam.

Suporte de dispositivos

Curso HoloLens Auscultadores imersivos
Entrada MR 212: Voz ✔️ ✔️

Antes de começar

Pré-requisitos

Project ficheiros

  • Descarregue os ficheiros exigidos pelo projeto. Requer Unidade 2017.2 ou mais tarde.
  • Desaprove os ficheiros para o seu ambiente de trabalho ou outro local de fácil acesso.

Nota

Se quiser ver o código fonte antes de descarregar, está disponível no GitHub.

Errata e Notas

  • "Enable Just My Code" precisa de ser desativado(não verificado)em Visual Studio de ferramentas- Opções- > Depuração para atingir pontos de rutura no seu código.

Configuração da Unidade

Instruções

  1. Iniciar a Unidade.
  2. Selecione Abrir.
  3. Navegue para a pasta HolographicAcademy-Hologramas-212-Voice que anteriormente não arquiva.
  4. Encontre e selecione a pasta Start-ModelExplorer.
  5. Clique no botão Selecione Pasta.
  6. No painel Project, expanda a pasta Cenas.
  7. Clique duas vezes na cena do ModelExplorer para carregá-lo em Unidade.

Edifício

  1. In Unitity, selecione File Build Definições.
  2. Se Cenas/ModelExplorer não estiverem listados em Scenes In Build,clique em Adicionar Cenas Abertas para adicionar a cena.
  3. Se estiver a desenvolver especificamente para HoloLens, desenhe o dispositivo Target para HoloLens. Caso contrário, deixe-o em qualquer dispositivo.
  4. Certifique-se de que o Tipo de Construção está definido para D3D e o SDK está definido para o mais recente instalado (que deve ser SDK 16299 ou mais recente).
  5. Clique em Construir.
  6. Criar uma nova pasta chamada "App".
  7. Clique na pasta App.
  8. A Pasta e Unidade de Imprensa Selerá começará a construir o projeto para Visual Studio.

Quando a unidade estiver terminada, aparecerá uma janela do Explorador de Ficheiros.

  1. Abra a pasta App.
  2. Abra a solução Visual Studio ModelExplorer.

Se for implantado para HoloLens:

  1. Utilizando a barra de ferramentas superior em Visual Studio, altere o alvo de Debug para Release e de ARM para x86.
  2. Clique na seta de queda ao lado do botão Máquina Local e selecione Máquina Remota.
  3. Introduza o seu endereço IP HoloLens dispositivo e desafie o modo de autenticação para universal (Protocolo não encriptado). Clique em Selecionar. Se não souber o endereço IP do seu dispositivo, procure Definições Network Internet Advanced &> Options.
  4. Na barra de menu superior, clique em Debug - Comece sem depurar ou prima Ctrl + F5. Se esta for a primeira vez que se implanta no seu dispositivo, terá de emparelhá-lo com Visual Studio.
  5. Quando a aplicação tiver sido implantada, desprete a Fitbox com um gesto selecionado.

Se for implantado num auricular imersivo:

  1. Utilizando a barra de ferramentas superior em Visual Studio, altere o alvo de Debug para Release e de ARM para x64.
  2. Certifique-se de que o alvo de implantação está definido para Máquina Local.
  3. Na barra de menu superior, clique em Debug - Comece sem depurar ou prima Ctrl + F5.
  4. Quando a aplicação tiver sido implantada, desprete a Fitbox puxando o gatilho num controlador de movimento.

Nota

Pode notar alguns erros vermelhos no painel Visual Studio Errors. É seguro ignorá-los. Mude para o painel de saída para ver o progresso real da construção. Erros no painel de saída exigirão que faça uma correção (na maioria das vezes são causados por um erro num script).

Capítulo 1 - Sensibilização

Objetivos

  • Aprenda os Dos e Não'ts do design de comando de voz.
  • Use palavras-chaveRecognizer para adicionar comandos de voz baseados em gaze.
  • Sensibilizar os utilizadores para os comandos de voz utilizando o feedbackdo cursor .

Design de comando de voz

Neste capítulo, aprenderás a desenhar comandos de voz. Ao criar comandos de voz:

DO

  • Criar comandos concisos. Não pretende utilizar "Play the currently selected video",porque esse comando não é conciso e seria facilmente esquecido pelo utilizador. Em vez disso, deves usar: "Play Video",porque é conciso e tem múltiplas sílabas.
  • Use um vocabulário simples. Tente sempre usar palavras e frases comuns que sejam fáceis de descobrir e lembrar. Por exemplo, se a sua aplicação tivesse um objeto de nota que pudesse ser exibido ou escondido da vista, não utilizaria o comando "Show Placard",porque "placard" é um termo raramente utilizado. Em vez disso, usaria o comando: "Show Note",para revelar a nota na sua aplicação.
  • Seja consistente. Os comandos de voz devem ser mantidos consistentes em toda a sua aplicação. Imagine que tem duas cenas na sua aplicação e ambas as cenas contêm um botão para fechar a aplicação. Se a primeira cena usou o comando "Exit" para ativar o botão, mas a segunda cena usou o comando "Close App",então o utilizador vai ficar muito confuso. Se a mesma funcionalidade persistir em várias cenas, então o mesmo comando de voz deve ser usado para desencadeá-la.

NÃO

  • Utilize comandos de sílaba simples. Como exemplo, se estava a criar um comando de voz para reproduzir um vídeo, deve evitar usar o simples comando "Play",uma vez que é apenas uma única sílaba e pode facilmente ser ignorado pelo sistema. Em vez disso, deves usar: "Play Video",porque é conciso e tem múltiplas sílabas.
  • Use os comandos do sistema. O comando "Select" é reservado pelo sistema para desencadear um evento Tap para o objeto atualmente focado. Não utilize novamente o comando "Selecione" numa palavra-chave ou frase, pois pode não funcionar como se espera. Por exemplo, se o comando de voz para selecionar um cubo na sua aplicação fosse "Select cube",mas o utilizador estava a olhar para uma esfera quando proferiu o comando, então a esfera seria selecionada. Da mesma forma, os comandos da barra de aplicações estão ativados por voz. Não utilize os seguintes comandos de fala na sua Visão CoreWindow:
    1. Volta
    2. Ferramenta de deslocação
    3. Ferramenta zoom
    4. Ferramenta de arrasto
    5. Ajustar
    6. Remover
  • Use sons semelhantes. Tente evitar usar comandos de voz que rimam. Se tivesse uma aplicação de compras que suportasse "Show Store" e "Show More" como comandos de voz, então quereria desativar um dos comandos enquanto o outro estava em uso. Por exemplo, pode utilizar o botão "Show Store" para abrir a loja e, em seguida, desativar esse comando quando a loja foi apresentada para que o comando "Show More" possa ser utilizado para a navegação.

Instruções

  • No painel da Hierarquia da Unidade, utilize a ferramenta de pesquisa para encontrar o holoComm_screen_mesh objeto.
  • Clique duas vezes no objeto holoComm_screen_mesh para vê-lo na Cena. Este é o relógio do astronauta, que responderá aos nossos comandos de voz.
  • No painel do Inspetor, localizar o componente Fonte de Entrada de Fala (Script).
  • Expandir a secção Palavras-Chave para ver o comando de voz suportado: Abrir Communicator.
  • Clique na engrenagem para o lado direito e, em seguida, selecione Editar Script.
  • Explore o SpeechInputSource.cs para entender como utiliza o KeywordRecognizer para adicionar comandos de voz.

Construir e Implementar

  • Em Unidade, utilize o Definições de Construção de Ficheiros para reconstruir a aplicação.
  • Abra a pasta App.
  • Abra a solução Visual Studio ModelExplorer.

(Se já construiu/implementou este projeto em Visual Studio durante a configuração, então pode abrir essa instância de VS e clicar em 'Reload All' quando solicitado).

  • Em Visual Studio, clique em Debug - Start Without debugging ou prima Ctrl + F5.
  • Depois de a aplicação ser colocada no HoloLens, despreja a caixa de ajuste utilizando o gesto de toque de ar.
  • Olhe para o relógio do astronauta.
  • Quando o relógio estiver focado, verifique se o cursor muda para um microfone. Isto fornece feedback de que a aplicação está a ouvir comandos de voz.
  • Verifique se aparece uma ponta de ferramenta no relógio. Isto ajuda os utilizadores a descobrir o comando "Open Communicator".
  • Enquanto olha para o relógio, diga "Abra Communicator" para abrir o painel do comunicador.

Capítulo 2 - Reconhecimento

Objetivos

  • Grave uma mensagem utilizando a entrada do microfone.
  • Dê feedback ao utilizador de que a aplicação está a ouvir a sua voz.

Nota

A capacidade do Microfone deve ser declarada para que uma aplicação grave a partir do microfone. Isto é feito para si já no MR Input 212, mas lembre-se disso para os seus próprios projetos.

  1. No Editor de Unidade, vá às definições do jogador navegando para "Editar > Project Definições > Player"
  2. Clique no separador "Plataforma universal de Windows"
  3. Na secção "Publicar > capacidades Definições", verifique a capacidade do >

Instruções

  • No painel da Hierarquia da Unidade, verifique se o holoComm_screen_mesh objeto está selecionado.
  • No painel do Inspetor, encontre o componente de Observação de Astronautas (Script).
  • Clique no pequeno cubo azul que é definido como o valor da propriedade prefab Communicator.
  • No painel Project, o pré-fabricado Communicator deve agora ter foco.
  • Clique no pré-fabricado Communicator no painel Project para ver os seus componentes no Inspetor.
  • Olhe para o componente Do Gestor de Microfone (Script), isto permitir-nos-á gravar a voz do utilizador.
  • Note que o Communicator objeto tem um componente de Manipulador de Entrada de Discurso (Script) para responder ao comando enviar mensagens.
  • Veja o componente Communicator (Script) e clique duas vezes no script para o abrir em Visual Studio.

Communicator.cs é responsável pela definição dos estados de botão adequados no dispositivo comunicador. Isto permitirá que os nossos utilizadores gravem uma mensagem, reproduzam-na e enviam a mensagem ao astronauta. Também começará e impedirá uma forma de onda animada, para reconhecer ao utilizador que a sua voz foi ouvida.

  • Em Communicator.cs, elimine as seguintes linhas (81 e 82) do método Iniciar. Isto ativa o botão 'Gravar' no comunicador.
// TODO: 2.a Delete the following two lines:
RecordButton.SetActive(false);
MessageUIRenderer.gameObject.SetActive(false);

Construir e Implementar

  • Em Visual Studio, reconstrua a sua aplicação e implemente o dispositivo.
  • Olhe para o relógio do astronauta e diga "Abra Communicator" para mostrar o comunicador.
  • Prima o botão Record (microfone) para começar a gravar uma mensagem verbal para o astronauta.
  • Comece a falar e verifique se a animação de ondas reproduz no comunicador, que fornece feedback ao utilizador de que a sua voz é ouvida.
  • Pressione o botão Stop (quadrado esquerdo) e verifique se a animação de onda deixa de funcionar.
  • Prima o botão Reproduzir (triângulo direito) para reproduzir a mensagem gravada e ouvi-la no dispositivo.
  • Prima o botão Stop (quadrado direito) para parar a reprodução da mensagem gravada.
  • Diga "Enviar mensagem" para fechar o comunicador e receber uma resposta "Mensagem Recebida" do astronauta.

Capítulo 3 - Compreensão e o Reconhecimento de Ditados

Objetivos

  • Utilize o "Saber dizer reconhecedor" para converter o discurso do utilizador em texto.
  • Mostre a hipótese do Reconhecedor de Ditados e os resultados finais no comunicador.

Neste capítulo, usaremos o Reconhecimento de Ditados para criar uma mensagem para o astronauta. Ao utilizar o Reconhecedor de Ditados, lembre-se que:

  • Tem de estar ligado ao Wi-Fi para que o Reconhecimento de Ditado funcione.
  • Os intervalos de tempo ocorrem após um período de tempo definido. Há dois intervalos para saber:
    • Se o reconhecimento começar e não ouvir nenhum áudio durante os primeiros cinco segundos, irá cronometrá-lo.
    • Se o reconhecedor deu um resultado, mas depois ouve silêncio durante vinte segundos, vai passar o tempo.
  • Apenas um tipo de reconhecimento (Palavra-chave ou Ditado) pode ser executado de cada vez.

Nota

A capacidade do Microfone deve ser declarada para que uma aplicação grave a partir do microfone. Isto é feito para si já no MR Input 212, mas lembre-se disso para os seus próprios projetos.

  1. No Editor de Unidade, vá às definições do jogador navegando para "Editar > Project Definições > Player"
  2. Clique no separador "Plataforma universal de Windows"
  3. Na secção "Publicar > capacidades Definições", verifique a capacidade do >

Instruções

Vamos editar o MicrofoneManager.cs usar o Reconhecimento de Ditados. Isto é o que vamos acrescentar:

  1. Quando premir o botão Record,iniciaremos o DitadoRecognidor.
  2. Mostre a hipótese do que o DitadoRecognizer entendeu.
  3. Bloqueie os resultados do que o DitadoRecognizer entendeu.
  4. Verifique os intervalos do DitadoRecognidor.
  5. Quando premir o botão Stop ou se a sessão do microfone estiver fora, pare o DitamRecognidor.
  6. Reinicie a palavra-chaveRecognizer,que irá ouvir o comando Enviar Mensagens.

Vamos começar. Complete todos os exercícios de codificação para 3.a em MicrophoneManager.cs, ou copie e cole o código acabado abaixo:

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using System.Collections;
using System.Text;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Windows.Speech;

namespace Academy
{
    public class MicrophoneManager : MonoBehaviour
    {
        [Tooltip("A text area for the recognizer to display the recognized strings.")]
        [SerializeField]
        private Text dictationDisplay;

        private DictationRecognizer dictationRecognizer;

        // Use this string to cache the text currently displayed in the text box.
        private StringBuilder textSoFar;

        // Using an empty string specifies the default microphone.
        private static string deviceName = string.Empty;
        private int samplingRate;
        private const int messageLength = 10;

        // Use this to reset the UI once the Microphone is done recording after it was started.
        private bool hasRecordingStarted;

        void Awake()
        {
            /* TODO: DEVELOPER CODING EXERCISE 3.a */

            // 3.a: Create a new DictationRecognizer and assign it to dictationRecognizer variable.
            dictationRecognizer = new DictationRecognizer();

            // 3.a: Register for dictationRecognizer.DictationHypothesis and implement DictationHypothesis below
            // This event is fired while the user is talking. As the recognizer listens, it provides text of what it's heard so far.
            dictationRecognizer.DictationHypothesis += DictationRecognizer_DictationHypothesis;

            // 3.a: Register for dictationRecognizer.DictationResult and implement DictationResult below
            // This event is fired after the user pauses, typically at the end of a sentence. The full recognized string is returned here.
            dictationRecognizer.DictationResult += DictationRecognizer_DictationResult;

            // 3.a: Register for dictationRecognizer.DictationComplete and implement DictationComplete below
            // This event is fired when the recognizer stops, whether from Stop() being called, a timeout occurring, or some other error.
            dictationRecognizer.DictationComplete += DictationRecognizer_DictationComplete;

            // 3.a: Register for dictationRecognizer.DictationError and implement DictationError below
            // This event is fired when an error occurs.
            dictationRecognizer.DictationError += DictationRecognizer_DictationError;

            // Query the maximum frequency of the default microphone. Use 'unused' to ignore the minimum frequency.
            int unused;
            Microphone.GetDeviceCaps(deviceName, out unused, out samplingRate);

            // Use this string to cache the text currently displayed in the text box.
            textSoFar = new StringBuilder();

            // Use this to reset the UI once the Microphone is done recording after it was started.
            hasRecordingStarted = false;
        }

        void Update()
        {
            // 3.a: Add condition to check if dictationRecognizer.Status is Running
            if (hasRecordingStarted && !Microphone.IsRecording(deviceName) && dictationRecognizer.Status == SpeechSystemStatus.Running)
            {
                // Reset the flag now that we're cleaning up the UI.
                hasRecordingStarted = false;

                // This acts like pressing the Stop button and sends the message to the Communicator.
                // If the microphone stops as a result of timing out, make sure to manually stop the dictation recognizer.
                // Look at the StopRecording function.
                SendMessage("RecordStop");
            }
        }

        /// <summary>
        /// Turns on the dictation recognizer and begins recording audio from the default microphone.
        /// </summary>
        /// <returns>The audio clip recorded from the microphone.</returns>
        public AudioClip StartRecording()
        {
            // 3.a Shutdown the PhraseRecognitionSystem. This controls the KeywordRecognizers
            PhraseRecognitionSystem.Shutdown();

            // 3.a: Start dictationRecognizer
            dictationRecognizer.Start();

            // 3.a Uncomment this line
            dictationDisplay.text = "Dictation is starting. It may take time to display your text the first time, but begin speaking now...";

            // Set the flag that we've started recording.
            hasRecordingStarted = true;

            // Start recording from the microphone for 10 seconds.
            return Microphone.Start(deviceName, false, messageLength, samplingRate);
        }

        /// <summary>
        /// Ends the recording session.
        /// </summary>
        public void StopRecording()
        {
            // 3.a: Check if dictationRecognizer.Status is Running and stop it if so
            if (dictationRecognizer.Status == SpeechSystemStatus.Running)
            {
                dictationRecognizer.Stop();
            }

            Microphone.End(deviceName);
        }

        /// <summary>
        /// This event is fired while the user is talking. As the recognizer listens, it provides text of what it's heard so far.
        /// </summary>
        /// <param name="text">The currently hypothesized recognition.</param>
        private void DictationRecognizer_DictationHypothesis(string text)
        {
            // 3.a: Set DictationDisplay text to be textSoFar and new hypothesized text
            // We don't want to append to textSoFar yet, because the hypothesis may have changed on the next event
            dictationDisplay.text = textSoFar.ToString() + " " + text + "...";
        }

        /// <summary>
        /// This event is fired after the user pauses, typically at the end of a sentence. The full recognized string is returned here.
        /// </summary>
        /// <param name="text">The text that was heard by the recognizer.</param>
        /// <param name="confidence">A representation of how confident (rejected, low, medium, high) the recognizer is of this recognition.</param>
        private void DictationRecognizer_DictationResult(string text, ConfidenceLevel confidence)
        {
            // 3.a: Append textSoFar with latest text
            textSoFar.Append(text + ". ");

            // 3.a: Set DictationDisplay text to be textSoFar
            dictationDisplay.text = textSoFar.ToString();
        }

        /// <summary>
        /// This event is fired when the recognizer stops, whether from Stop() being called, a timeout occurring, or some other error.
        /// Typically, this will simply return "Complete". In this case, we check to see if the recognizer timed out.
        /// </summary>
        /// <param name="cause">An enumerated reason for the session completing.</param>
        private void DictationRecognizer_DictationComplete(DictationCompletionCause cause)
        {
            // If Timeout occurs, the user has been silent for too long.
            // With dictation, the default timeout after a recognition is 20 seconds.
            // The default timeout with initial silence is 5 seconds.
            if (cause == DictationCompletionCause.TimeoutExceeded)
            {
                Microphone.End(deviceName);

                dictationDisplay.text = "Dictation has timed out. Please press the record button again.";
                SendMessage("ResetAfterTimeout");
            }
        }

        /// <summary>
        /// This event is fired when an error occurs.
        /// </summary>
        /// <param name="error">The string representation of the error reason.</param>
        /// <param name="hresult">The int representation of the hresult.</param>
        private void DictationRecognizer_DictationError(string error, int hresult)
        {
            // 3.a: Set DictationDisplay text to be the error string
            dictationDisplay.text = error + "\nHRESULT: " + hresult;
        }

        /// <summary>
        /// The dictation recognizer may not turn off immediately, so this call blocks on
        /// the recognizer reporting that it has actually stopped.
        /// </summary>
        public IEnumerator WaitForDictationToStop()
        {
            while (dictationRecognizer != null && dictationRecognizer.Status == SpeechSystemStatus.Running)
            {
                yield return null;
            }
        }
    }
}

Construir e Implementar

  • Reconstruir em Visual Studio e implementar no seu dispositivo.
  • Dispense a caixa de ajuste com um gesto de toque de ar.
  • Olhe para o relógio do astronauta e diga "Abra Communicator".
  • Selecione o botão Gravar (microfone) para gravar a sua mensagem.
  • Começa a falar. O Reconhecimento de Ditados interpretará o seu discurso e mostrará o texto hipotético no comunicador.
  • Tente dizer "Enviar mensagem" enquanto está a gravar uma mensagem. Note que o Reconhecimento de Palavras-Chave não responde porque o Reconhecedor de Ditados ainda está ativo.
  • Pare de falar por alguns segundos. Veja como o Reconhecedor de Ditados completa a sua hipótese e mostra o resultado final.
  • Comece a falar e faça uma pausa de 20 segundos. Isto fará com que o Reconhecimento de Ditados acabe com o tempo.
  • Note que o Reconhecimento de palavras-chave é re-activado após o intervalo acima. O comunicador irá agora responder aos comandos de voz.
  • Diga "Envie mensagem" para enviar a mensagem ao astronauta.

Capítulo 4 - Reconhecedor de Gramática

Objetivos

  • Utilize o Reconhecedor de Gramática para reconhecer o discurso do utilizador de acordo com um ficheiro SRGS, ou Especificação de Gramática de Reconhecimento de Voz.

Nota

A capacidade do Microfone deve ser declarada para que uma aplicação grave a partir do microfone. Isto é feito para si já no MR Input 212, mas lembre-se disso para os seus próprios projetos.

  1. No Editor de Unidade, vá às definições do jogador navegando para "Editar > Project Definições > Player"
  2. Clique no separador "Plataforma universal de Windows"
  3. Na secção "Publicar > capacidades Definições", verifique a capacidade do >

Instruções

  1. No painel hierárquico, procure Jetpack_Center e selecione-o.
  2. Procure o roteiro de Ação Tagalong no painel do inspetor.
  3. Clique no pequeno círculo à direita do campo Object To Tag Along.
  4. Na janela que aparece, procure sRGSToolbox e selecione-a da lista.
  5. Veja o ficheiro SRGSColor.xml na pasta StreamingAssets.
    1. A especificação de design SRGS pode ser encontrada no site da W3C aqui.

No nosso ficheiro SRGS, temos três tipos de regras:

  • Uma regra que permite dizer uma cor de uma lista de doze cores.
  • Três regras que ouvem uma combinação da regra da cor e uma das três formas.
  • A regra raiz, colorChooser, que ouve qualquer combinação das três regras "color + shape". As formas podem ser ditas em qualquer ordem e em qualquer quantidade de apenas um a todos os três. Esta é a única regra que é ouvida, uma vez que é especificada como a regra raiz no topo do ficheiro na < etiqueta de gramática > inicial.

Construir e Implementar

  • Reconstruir a aplicação em Unidade, em seguida, construir e implementar a partir de Visual Studio para experimentar a aplicação em HoloLens.
  • Dispense a caixa de ajuste com um gesto de toque de ar.
  • Olhe para o jetpack do astronauta e faça um gesto de toque de ar.
  • Começa a falar. O Reconhecedor de Gramática irá interpretar o seu discurso e alterar as cores das formas com base no reconhecimento. Um comando de exemplo é "círculo azul, quadrado amarelo".
  • Execute outro gesto de toque de ar para descartar a caixa de ferramentas.

Fim

Parabéns! Já completou o MR Input 212: Voice.

  • Conhece os Dos e os Não-Não dos Comandos de Voz.
  • Viu como as ferramentas eram utilizadas para sensibilizar os utilizadores para os comandos de voz.
  • Viu vários tipos de feedback usados para reconhecer que a voz do utilizador foi ouvida.
  • Sabe como alternar entre o Reconhecimento de Palavras-Chave e o Reconhecedor de Ditados, e como estas duas funcionalidades compreendem e interpretam a sua voz.
  • Aprendeu a usar um ficheiro SRGS e o Grammar Recogniser para reconhecimento de voz na sua aplicação.