4. Como configurar a intenção e o reconhecimento vocal natural4. Setting up intent and natural language understanding

Neste tutorial, você vai explorar o reconhecimento de intenção do Serviço de Fala do Azure.In this tutorial, you will explore the Azure Speech Service's intent recognition. O reconhecimento de intenção permite que você equipe o aplicativo com comandos de fala com IA, em que os usuários podem dizer comandos de fala não específicos e ainda ter sua intenção compreendida pelo sistema.The intent recognition allows you to equip our application with AI-powered speech commands, where users can say non-specific speech commands and still have their intent understood by the system.

ObjetivosObjectives

  • Saiba como configurar intenção, entidades e enunciados no portal do LUISLearn how to set up intent, entities, and utterances in the LUIS portal
  • Saiba como implementar a intenção e o reconhecimento vocal natural em nosso aplicativoLearn how to implement intent and natural language understanding in our application

Preparando a cenaPreparing the scene

Na janela Hierarquia, selecione o objeto Lunarcom e, na janela Inspetor, use o botão Adicionar Componente para adicionar o componente Reconhecedor de Intenção do Lunarcom (Script) ao objeto Lunarcom:In the Hierarchy window, select the Lunarcom object, then in the Inspector window, use the Add Component button to add the Lunarcom Intent Recognizer (Script) component to the Lunarcom object:

mrlearning-speech

Na janela Projeto, navegue até a pasta Ativos > MRTK.Tutoriais.GettingStarted > Pré-fabricados > RocketLauncher, arraste o pré-fabricado RocketLauncher_Complete para a janela Hierarquia e coloque-o em uma localização adequada na frente da câmera, por exemplo:In the Project window, navigate to the Assets > MRTK.Tutorials.GettingStarted > Prefabs > RocketLauncher folder, drag the RocketLauncher_Complete prefab into your Hierarchy window, and place it at a suitable location in front of the camera, for example:

  • Posição da Transformação X = 0, Y = -0,4, Z = 1Transform Position X = 0, Y = -0.4, Z = 1
  • Rotação da Transformação X = 0, Y = 90, Z = 0Transform Rotation X = 0, Y = 90, Z = 0

mrlearning-speech

Na janela Hierarquia, selecione o objeto Lunarcom novamente e, em seguida, expanda o objeto RocketLauncher_Complete > Botão e atribua a cada um dos botões filho do objeto Botões ao campo Botões do Iniciador Lunar correspondente:In the Hierarchy window, select the Lunarcom object again, then expand the RocketLauncher_Complete > Button object and assign each of the Buttons object's child objects to the corresponding Lunar Launcher Buttons field:

mrlearning-speech

Como criar o recurso de Reconhecimento vocal do AzureCreating the Azure Language Understanding resource

Nesta seção, você criará um recurso de previsão do Azure para o aplicativo LUIS (Serviço Inteligente de Reconhecimento vocal) que será criado na próxima seção.In this section, you will create an Azure prediction resource for the Language Understanding Intelligent Service (LUIS) app you will create in the next section.

Entre no Azure e clique em Criar um recurso.Sign in to Azure and click Create a resource. Em seguida, pesquise e selecione Reconhecimento vocal:Then search for and select Language Understanding:

mrlearning-speech

Clique no botão Criar para criar uma instância desse serviço:Click the Create button to create an instance of this service:

mrlearning-speech

Na página Criar, clique na opção Previsão e insira os seguintes valores:On the Create page, click the Prediction option and enter the following values:

  • Para Assinatura, selecione Avaliação Gratuita se você tiver uma assinatura de avaliação, caso contrário, selecione uma das outras assinaturasFor Subscription, select Free Trail if you have a trial subscription, otherwise, select one of your other subscriptions
  • Para o Grupo de recursos, clique no link Criar, insira um nome adequado, por exemplo, MRKT-Tutoriais e, em seguida, clique em OKFor the Resource group, click the Create new link, enter a suitable name, for example, MRKT-Tutorials, and then click the OK

mrlearning-speech

Observação

No momento da redação deste artigo, você não precisa criar um recurso de criação porque uma chave de avaliação de criação será gerada automaticamente no LUIS quando você criar o LUIS (Serviço Inteligente de Reconhecimento vocal) na próxima seção.As of the time of this writing, you do not need to create an authoring resource because an authoring trial key will automatically be generated within LUIS when you create the Language Understanding Intelligent Service (LUIS) in the next section.

Dica

Se você já tiver outro grupo de recursos adequado em sua conta do Azure, por exemplo, se tiver concluído o tutorial Âncoras Espaciais do Azure, poderá usar esse grupo de recursos em vez de criar um.If you already have another suitable resource group in your Azure account, for example, if you completed the Azure Spatial Anchors tutorial, you may use this resource group instead of creating a new one.

Enquanto ainda estiver na página Criar, insira os seguintes valores:While still on the Create page, enter the following values:

  • Para Nome, insira um nome adequado para o serviço, por exemplo, MRTK-Tutoriais-AzureSpeechServicesFor Name, enter a suitable name for the service, for example, MRTK-Tutorials-AzureSpeechServices
  • Para Localização de previsão, escolha uma localização próxima à localização física dos usuários do seu aplicativo, por exemplo, (EUA) Oeste dos EUAFor Prediction location, choose a location close to your app users' physical location, for example, (US) West US
  • Para Tipo de preço de previsão, para os fins deste tutorial, selecione F0 (cinco chamadas por segundo, dez mil chamadas por mês)For Prediction pricing tier, for the purpose of this tutorial, select F0 (5 Calls per second, 10K Calls per month)

mrlearning-speech

Em seguida, vá para a guia Examinar + criar, examine os detalhes e clique no botão Criar, localizado na parte inferior da página, para criar o recurso, bem como no novo grupo de recursos se você tiver configurado um para ser criado:Next, go to the Review + create tab, review the details, and then click the Create button, located at the bottom of the page, to create the resource, as well as, the new resource group if you configured one to be created:

mrlearning-speech

Observação

Depois de clicar no botão Criar, você precisará aguardar até que o serviço seja criado, o que poderá levar alguns minutos.After you click the Create button, you will have to wait for the service to be created, which might take a few minutes.

Depois que o processo de criação de recursos for concluído, você verá a mensagem Sua implantação foi concluída:Once the resource creation process is completed, you will see the message Your deployment is complete:

mrlearning-speech

Como criar o LUIS (Serviço Inteligente de Reconhecimento Vocal)Creating the Language Understanding Intelligent Service (LUIS)

Nesta seção, você criará um aplicativo LUIS, configurará e treinará seu modelo de previsão e o conectará ao recurso de previsão do Azure criado na etapa anterior.In this section, you will create a LUIS app, configure and train its prediction model, and connect it to the Azure prediction resource you created in the previous step.

Especificamente, você criará uma intenção de que, se o usuário disser que uma ação deve ser executada, o aplicativo disparará o evento Interactable.OnClick() em um dos três botões vermelhos na cena, dependendo de a qual botão o usuário faz referência.Specifically, you will create an intent that if the user says an action should be taken, the app will trigger the Interactable.OnClick() event on one of the three red buttons in the scene, depending on which button the user references.

Por exemplo, se o usuário disser ir em frente e lançar o foguete, o aplicativo preverá que vá em frente significa que algumas ações devem ser executadas e que o evento Interactable.OnClick() para o destino está no botão lançar.For example, if the user says go ahead and launch the rocket, the app will predict that go ahead means some action should be taken, and that the Interactable.OnClick() event to target is on the launch button.

As principais etapas que você seguirá para conseguir isso são:The main steps you will take to achieve this are:

  1. Criar um aplicativo LUISCreate a LUIS app
  2. Criar intençõesCreate intents
  3. Criar exemplos de enunciadosCreate example utterances
  4. Criar entidadesCreate entities
  5. Atribuir entidades a exemplos de enunciadosAssign entities to the example utterances
  6. Treinar, testar e publicar o aplicativoTrain, test, and publish the app
  7. Atribuir um recurso de previsão do Azure ao aplicativoAssign an Azure prediction resource to the app

1. Criar um aplicativo LUIS1. Create a LUIS app

Usando a mesma conta de usuário usada ao criar o recurso do Azure na seção anterior, entre no LUIS, selecione seu país/região e concorde com os Termos de uso.Using the same user account you used when creating the Azure resource in the previous section, sign in to LUIS, select your country, and agree to the terms of use. Na próxima etapa, quando você for solicitado a Vincular sua conta do Azure, escolha Continuar usando sua chave de avaliação para usar um recurso de criação do Azure em vez disso.In the next step, when asked to Link your Azure account, choose Continue using your trial key, to use an Azure authoring resource instead.

Observação

Se você já se inscreveu no LUIS e sua chave de avaliação de criação expirou, pode ver a documentação Migrar para uma chave de criação de recursos do Azure para alternar o recurso de criação do LUIS para o Azure.If you have already signed up for LUIS and your authoring trial key has expired, you can refer to the Migrate to an Azure resource authoring key documentation to switch your LUIS authoring resource to Azure.

Depois de conectado, navegue até a página Meus aplicativos, clique em Criar aplicativo e insira os seguintes valores na janela pop-up Criar aplicativo:Once signed in, navigate to the My apps page, then click Create new app and enter the following values in the Create new app popup window:

  • Para Nome, insira um nome adequado, por exemplo, Tutoriais do MRTK – AzureSpeechServicesFor Name, enter a suitable name, for example, MRTK Tutorials - AzureSpeechServices
  • Para Cultura, selecione InglêsFor Culture, select English
  • Para Descrição, opcionalmente, insira uma descrição adequadaFor Description, optionally enter a suitable description

Em seguida, clique no botão Concluído para criar o aplicativo:Then click the Done button to create the new app:

mrlearning-speech

Quando o aplicativo tiver sido criado, você será levado para a página Painel desse aplicativo:When the new app has been created, you will be taken to that app's Dashboard page:

mrlearning-speech

2. Criar intenções2. Create intents

Na página Painel, navegue até a página Criar > Ativos de Aplicativo > Intenções, clique em Criar intenção e insira o seguinte valor na janela pop-up Criar intenção:From the Dashboard page, navigate to the Build > App Assets > Intents page, then click Create new intent and enter the following value in the Create new intent popup window:

  • Para Nome da intenção, insira PressButtonFor Intent name, enter PressButton

Em seguida, clique no botão Concluído para criar a intenção:Then click the Done button to create the new intent:

mrlearning-speech

Cuidado

Para os fins deste tutorial, seu projeto do Unity fará referência a essa intenção por seu nome, ou seja, 'PressButton'.For the purpose of this tutorial, your Unity project will reference this intent by its name, i.e. 'PressButton'. Assim, é extremamente importante que você dê à sua intenção um nome exatamente igual.Consequently, it is extremely important that you name your intent exactly the same.

Quando a intenção for criada, você será levado para a página dessa intenção:When the new intent has been created, you will be taken to that intent's page:

mrlearning-speech

3. Criar exemplos de enunciados3. Create example utterances

Para a lista Enunciado de exemplo da intenção PressButton, adicione os seguintes enunciados de exemplo:To the PressButton intent's Example utterance list, add the following example utterances:

  • ativar sequência de inicializaçãoactivate launch sequence
  • mostrar-me uma dica de posicionamentoshow me a placement hint
  • iniciar a sequência de inicializaçãoinitiate the launch sequence
  • pressionar o botão de dicas de posicionamentopress placement hints button
  • dê-me uma dicagive me a hint
  • pressione o botão iniciarpush the launch button
  • preciso de uma dicai need a hint
  • pressione o botão redefinirpress the reset button
  • tempo para redefinir a experiênciatime to reset the experience
  • Ir em frente e lançar o foguetego ahead and launch the rocket

Quando todos os enunciados de exemplo tiverem sido adicionados, sua página de intenção de PressButton deverá ser semelhante a esta:When all the example utterances have been added, your PressButton intent page should look similar to this:

mrlearning-speech

Cuidado

Para os fins deste tutorial, seu projeto do Unity fará referência às palavras "dica", "dicas", "redefinir" e "iniciar".For the purpose of this tutorial, your Unity project will reference the words 'hint', 'hints', 'reset', and 'launch'. Assim, é extremamente importante que você escreva essas palavras exatamente da mesma maneira.Consequently, it is extremely important that you spell these words in the exact same way.

4. Criar entidades4. Create entities

Na página de intenção PressButton, navegue até a página Criar > Ativos de Aplicativo > Entidades e clique em Criar entidade, então insira os seguintes valores na janela pop-up Criar entidade:From the PressButton intent page, navigate to the Build > App Assets > Entities page, then click Create new entity and enter the following values in the Create new entity popup window:

  • Para Nome da entidade, insira AçãoFor Entity name, enter Action
  • Para Tipo de entidade, selecione SimplesFor Entity type, select Simple

Em seguida, clique no botão Concluído para criar a entidade:Then click the Done button to create the new entity:

mrlearning-speech

Repita a etapa anterior para criar outra entidade chamada Destino para que você tenha duas entidades chamadas Ação e Destino:Repeat the previous step to create another entity named Target, so you have two entities named Action and Target:

mrlearning-speech

Cuidado

Para os fins deste tutorial, seu projeto do Unity fará referência a essas entidades pelo nome, ou seja, "Ação" e "Alvo".For the purpose of this tutorial, your Unity project will reference these entities by their names, i.e. 'Action' and 'Target'. Assim, é extremamente importante que você dê às suas entidades um nome exatamente igual.Consequently, it is extremely important that you name your entities exactly the same.

5. Atribuir entidades a exemplos de enunciados5. Assign entities to the example utterances

Na página entidades, navegue de volta para a página de intenção de PressButton.From the Entities page, navigate back to the PressButton intent page.

Depois de voltar para a página de intenção de PressButton, clique na palavra ir e, em seguida, na palavra em frente e selecione Ação (Simples) no menu pop-up contextual para rotular ir em frente como um valor de entidade de Ação:Once back on the the PressButton intent page, click on the word go and then on the word ahead, and then select Action (Simple) from the contextual popup menu to label go ahead as an Action entity value:

mrlearning-speech

A frase ir em frente frase agora é definida como um valor de entidade de Ação.The go ahead phrase is now defined as an Action entity value. Se você passar o cursor do mouse sobre o nome da entidade de Ação, poderá ver o valor da entidade de Ação associada:If you hover your mouse cursor above the Action entity name, you can see the associated Action entity value:

mrlearning-speech

Observação

A linha vermelha que você vê sob o rótulo na imagem acima indica que o valor da entidade não foi previsto. Isso será resolvido quando você treinar o modelo na próxima seção.The red line you see under the label in the image above indicates that the entity value has not been predicted, this will be resolved when you train the model in the next section.

Em seguida, clique na palavra iniciar e, em seguida, selecione Destino (Simples) no menu pop-up contextual para rotular iniciar como um valor de entidade de destino:Next, click on the word launch, and then select Target (Simple) from the contextual popup menu to label launch as a Target entity value:

mrlearning-speech

A palavra iniciar agora está definida como um valor de entidade de Destino.The launch word is now defined as a Target entity value. Se você passar o cursor do mouse sobre o nome da entidade de Destino, poderá ver o valor da entidade de Destino associada:If you hover your mouse cursor above the Target entity name, you can see the associated Target entity value:

mrlearning-speech

O enunciado de exemplo de intenção PressButton "ir em frente e lançar o foguete" agora está configurado para ser previsto da seguinte maneira:The PressButton intent example utterance 'go ahead and launch the rocket' is now configured to be predicted as follows:

  • Intenção: PressButtonIntent: PressButton
  • Entidade de ação: vá em frenteAction entity: go ahead
  • Entidade de destino: iniciarTarget entity: launch

Repita o processo anterior de duas etapas para atribuir uma ação e um rótulo de entidade de Destino a cada um dos exemplos de enunciado, tendo em mente que as seguintes palavras devem ser rotuladas como entidades de Destino:Repeat the previous two-step process to assign an Action and a Target entity label to each of the example utterances, keeping in mind that the following words should be labeled as Target entities:

  • dica (tem como destino HintsButton no projeto do Unity)hint (targets the HintsButton in the Unity project)
  • dicas (tem como destino HintsButton no projeto do Unity)hints (targets HintsButton in the Unity project)
  • redefinir (tem como destino ResetButton no projeto do Unity)reset (targets the ResetButton in the Unity project)
  • iniciar (tem como destino LaunchButton no projeto do Unity)launch (targets the LaunchButton in the Unity project)

Quando todos os enunciados de exemplo tiverem sido rotulados, sua página de intenção de PressButton deverá ser semelhante a esta:When all the example utterances have been labeled, your PressButton intent page should look similar to this:

mrlearning-speech

Como alternativa para verificar novamente se você atribuiu as entidades corretas, clique no menu Exibir opções e alterne a exibição para Mostrar valores de entidade:For an alternative way to double-check that you have assigned the correct entities, click the View options menu and switch the view to Show entity values:

mrlearning-speech

Agora, com o modo de exibição definido para mostrar valores de entidade, você pode focalizar o curso do mouse sobre as palavras e frases rotuladas para verificar rapidamente o nome da entidade atribuída:Now, with the view set to show entity values, you can hover the mouse courser over the labeled words and phrases to quickly verify the assigned entity name:

mrlearning-speech

6. Treinar, testar e publicar o aplicativo6. Train, test, and publish the app

Para treinar o aplicativo, clique no botão Treinar e aguarde a conclusão do processo de treinamento:To train the app, click the Train button and wait for the training process to complete:

mrlearning-speech

Observação

Como você pode ver na imagem acima, as linhas vermelhas em todos os rótulos foram removidas, indicando que todos os valores de entidade foram previstos.As you can see in the image above, the red lines under all the labels have been removed, indicating that all the entity values have been predicted. Observe também que o ícone de status à esquerda do botão Treinar mudou a cor de vermelho para verde.Also notice that the status icon to the left of the Train button has changed color from red to green.

Quando o processamento do treinamento for concluído, clique no botão Testar, digite ir em frente e lançar o foguete e pressione a tecla Enter:When the training is finished processing, click the Test button, then type in go ahead and launch the rocket and press the Enter key:

mrlearning-speech

Quando o enunciado de teste tiver sido processado, clique em Inspecionar para ver o resultado do teste:When the test utterance has been processed, click Inspect to see the test result:

  • Intenção: PressButton (com uma certeza de 98,5%)Intent: PressButton (with a 98.5% certainty)
  • Entidade de ação: vá em frenteAction entity: go ahead
  • Entidade de destino: iniciarTarget entity: launch

mrlearning-speech

Para publicar o aplicativo, clique no botão Publicar no canto superior direito e, em seguida, na janela Escolher o slot e as configurações de publicação, selecione Produção e clique no botão Publicar:To publish the app, click the Publish button in the top right, then in the Choose your publishing slot and settings popup window, select Production and click the Publish button:

mrlearning-speech

Aguarde a conclusão do processo de publicação:Wait for the publishing process to complete:

mrlearning-speech

7. Atribuir um recurso de previsão do Azure ao aplicativo7. Assign an Azure prediction resource to the app

Navegue até a página Gerenciar > Configurações do Aplicativo > Recursos do Azure:Navigate to the Manage > Application Settings > Azure Resources page:

mrlearning-speech

Na página Recursos do Azure, clique no botão Adicionar recurso de previsão e selecione os seguintes valores na janela pop-up Atribuir um recurso ao aplicativo:On the Azure Resources page, click the Add prediction resource button and select the following values in the Assign a resource to your app popup window:

Em seguida, clique no botão Atribuir recurso para atribuir o recurso de previsão do Azure ao seu aplicativo:Then click the Assign resource button to assign the Azure prediction resource to your app:

mrlearning-speech

Quando o recurso tiver sido atribuído, sua página de recursos do Azure deverá ser semelhante a esta:When the resource has been assigned, your Azure Resources page should look similar to this:

mrlearning-speech

Como conectar o projeto do Unity ao aplicativo LUISConnecting the Unity project to the LUIS app

Na página Gerenciar > Configurações do Aplicativo > Recursos do Azure, clique no ícone copiar para copiar a Consulta de Exemplo:On the Manage > Application Settings > Azure Resources page, click the copy icon to copy the Example Query:

mrlearning-speech

De volta ao seu projeto do Unity, na janela Hierarquia, selecione o objeto Lunarcom e, em seguida, na janela Inspetor, localize o componente Lunarcom do Reconhecedor de Intenção (Script) e configure-o da seguinte maneira:Back in your Unity project, in the Hierarchy window, select the Lunarcom object, then in the Inspector window, locate the Lunarcom Intent Recognizer (Script) component and configure it as follows:

  • No campo Ponto de Extremidade LUIS, após a Consulta de Exemplo que você copiou na etapa anterior:In the LUIS Endpoint field, past the Example Query you copied in the previous step:

mrlearning-speech

Como testar e aprimorar o reconhecimento de intençãoTesting and improving the intent recognition

Para usar o reconhecimento de intenção diretamente no editor do Unity, você deve permitir que seu computador de desenvolvimento use ditado.To use intent recognition directly in the Unity editor, you must allow your development computer to use dictation. Para verificar essa configuração, abra as Configurações do Windows e escolha Privacidade > Fala e garanta que Reconhecimento de fala online esteja ativado:To verify this setting, open Windows Settings then choose Privacy > Speech and ensure Online speech recognition is turned on:

mrlearning-speech

Se agora você entrar no modo de Jogo, poderá testar o reconhecimento de intenção pressionando primeiro o botão foguete.If you now enter Game mode, you can test the intent recognition by first pressing the rocket button. Em seguida, supondo que o computador tenha um microfone, quando você disser o primeiro enunciado de exemplo, ir em frente e lançar o foguete, você verá o lançamento do LunarModule no espaço:Then, assuming your computer has a microphone, when you say the first example utterance, go ahead and launch the rocket, you will see the LunarModule launch into space:

mrlearning-speech

Experimente todos os enunciados de exemplo, então algumas variações dos enunciados de exemplo, bem como alguns enunciados aleatórios.Try all the example utterances, then some variation of the example utterances, as well as, a few random utterances.

Em seguida, retorne para LUIS e navegue para a página Criar > Aprimorar o desempenho do aplicativo > Examinar enunciados do ponto de extremidade, use o botão de alternância para alternar da Exibição de Entidades padrão para Exibição de Tokens e, em seguida, examine os enunciados:Next, return to LUIS and navigate to Build > Improve app performance > Review endpoint utterances page, use the toggle button to switch from the default Entities View to Tokens View, and then review the utterances:

  • Na coluna Enunciado, altere e remova os rótulos atribuídos conforme necessário para que eles se alinhem com a sua intençãoIn the Utterance column, change and remove the assigned labels as needed so they align with your intent
  • Na coluna Intenção alinhada, verifique se a intenção está corretaIn the Aligned intent column, verify that the intent is correct
  • Na coluna Adicionar/Excluir, clique no botão de marca de seleção verde para adicionar o enunciado ou o botão x vermelho para excluí-loIn the Add/Delete column, click the green check mark button to add the utterance or the red x button to delete it

Quando você tiver examinado o número de enunciados que desejar, clique no botão Treinar para treinar novamente o modelo e, em seguida, no botão Publicar para republicar o aplicativo atualizado:When you have reviewed as many utterances as you like, click the Train button to retrain the model, then the Publish button to republish the updated app:

mrlearning-speech

Observação

Se um enunciado do ponto de extremidade não se alinhar com a intenção PressButton, mas você quiser que seu modelo saiba que o enunciado não tem nenhuma intenção, poderá alterar a intenção Alinhada para Nenhum.If an endpoint utterance does not align with the PressButton intent, but you would like your model to know that the utterance has no intent, you can change the Aligned intent to None.

Repita esse processo quantas vezes desejar para aprimorar seu modelo de aplicativo.Repeat this process as many times as you like to improve your app model.

ParabénsCongratulations

Seu projeto agora tem comandos de fala habilitados para IA, permitindo que seu aplicativo reconheça a intenção dos usuários, mesmo que eles não enunciem comandos precisos.Your project now have AI-powered speech commands, allowing your application to recognize the users' intent even if they do not utter precise commands. Execute o aplicativo em seu dispositivo para garantir que o recurso esteja funcionando corretamente.Run the application on your device to ensure the feature is working properly.