MR e Azure 301: Tradução de idiomaMR and Azure 301: Language translation


Observação

Os tutoriais do Mixed Reality Academy foram projetados com o HoloLens (1ª geração) e os headsets imersivos de realidade misturada em mente.The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. Dessa forma, achamos que é importante continuar disponibilizando esses tutoriais para os desenvolvedores que ainda buscam obter diretrizes para o desenvolvimento visando esses dispositivos.As such, we feel it is important to leave these tutorials in place for developers who are still looking for guidance in developing for those devices. Esses tutoriais não serão atualizados com os conjuntos de ferramentas mais recentes nem com as interações usadas para o HoloLens 2.These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. Eles serão mantidos para continuar funcionando nos dispositivos compatíveis.They will be maintained to continue working on the supported devices. Haverá uma nova série de tutoriais que serão publicados no futuro, que demonstrarão como desenvolver para o HoloLens 2.There will be a new series of tutorials that will be posted in the future that will demonstrate how to develop for HoloLens 2. Esse aviso será atualizado com um link para esses tutoriais quando eles forem postados.This notice will be updated with a link to those tutorials when they are posted.


Neste curso, você aprenderá a adicionar recursos de tradução a um aplicativo de realidade misturada usando os serviços cognitivas do Azure, com o API de Tradução de Texto.In this course, you will learn how to add translation capabilities to a mixed reality application using Azure Cognitive Services, with the Translator Text API.

Produto final

O API de Tradução de Texto é um serviço de tradução que funciona quase em tempo real.The Translator Text API is a translation Service which works in near real-time. O serviço é baseado em nuvem e, usando uma chamada à API REST, um aplicativo pode usar a tecnologia de conversão de máquina neural para traduzir texto para outro idioma.The Service is cloud-based, and, using a REST API call, an app can make use of the neural machine translation technology to translate text to another language. Para obter mais informações, visite a página de API de tradução de texto do Azure.For more information, visit the Azure Translator Text API page.

Após a conclusão deste curso, você terá um aplicativo de realidade misturada que poderá fazer o seguinte:Upon completion of this course, you will have a mixed reality application which will be able to do the following:

  1. O usuário vai falar em um microfone conectado a um headset de imersão (VR) (ou o microfone interno do HoloLens).The user will speak into a microphone connected to an immersive (VR) headset (or the built-in microphone of HoloLens).
  2. O aplicativo irá capturar o ditado e enviá-lo para o API de Tradução de Texto do Azure.The app will capture the dictation and send it to the Azure Translator Text API.
  3. O resultado da tradução será exibido em um grupo de interface do usuário simples na cena do Unity.The translation result will be displayed in a simple UI group in the Unity Scene.

Este curso ensinará como obter os resultados do serviço do tradutor em um aplicativo de exemplo baseado em Unity.This course will teach you how to get the results from the Translator Service into a Unity-based sample application. Será necessário aplicar esses conceitos a um aplicativo personalizado que você possa estar criando.It will be up to you to apply these concepts to a custom application you might be building.

Suporte a dispositivosDevice support

CursoCourse HoloLensHoloLens Headsets imersivosImmersive headsets
MR e Azure 301: Tradução de idiomaMR and Azure 301: Language translation ✔️✔️ ✔️✔️

Observação

Embora este curso se concentre principalmente em fones de ouvido (VR) de realidade mista do Windows, você também pode aplicar o que aprende neste curso ao Microsoft HoloLens.While this course primarily focuses on Windows Mixed Reality immersive (VR) headsets, you can also apply what you learn in this course to Microsoft HoloLens. Ao acompanhar o curso, você verá observações sobre as alterações que talvez precise empregar para dar suporte ao HoloLens.As you follow along with the course, you will see notes on any changes you might need to employ to support HoloLens. Ao usar o HoloLens, você pode notar um eco durante a captura de voz.When using HoloLens, you may notice some echo during voice capture.

Pré-requisitosPrerequisites

Observação

Este tutorial foi projetado para desenvolvedores que têm experiência básica com o Unity e o C#.This tutorial is designed for developers who have basic experience with Unity and C#. Além disso, lembre-se de que os pré-requisitos e as instruções escritas neste documento representam o que foi testado e verificado no momento da gravação (maio de 2018).Please also be aware that the prerequisites and written instructions within this document represent what has been tested and verified at the time of writing (May 2018). Você está livre para usar o software mais recente, conforme listado no artigo instalar as ferramentas , embora não seja recomendável que as informações neste curso irão se adequar perfeitamente ao que você encontrará em softwares mais recentes do que as listadas abaixo.You are free to use the latest software, as listed within the install the tools article, though it should not be assumed that the information in this course will perfectly match what you'll find in newer software than what's listed below.

Recomendamos o seguinte hardware e software para este curso:We recommend the following hardware and software for this course:

Antes de começarBefore you start

  • Para evitar problemas de criação desse projeto, é altamente recomendável que você crie o projeto mencionado neste tutorial em uma pasta raiz ou quase raiz (caminhos de pasta longos podem causar problemas em tempo de compilação).To avoid encountering issues building this project, it is strongly suggested that you create the project mentioned in this tutorial in a root or near-root folder (long folder paths can cause issues at build-time).

  • O código neste tutorial permitirá que você registre a partir do dispositivo de microfone padrão conectado ao seu PC.The code in this tutorial will allow you to record from the default microphone device connected to your PC. Verifique se o dispositivo de microfone padrão está definido para o dispositivo que você planeja usar para capturar sua voz.Make sure the default microphone device is set to the device you plan to use to capture your voice.

  • Para permitir que seu computador habilite o ditado, vá para configurações > privacidade > fala, digitando a tinta & digitar e selecione o botão ativar os serviços de fala e digitar sugestões.To allow your PC to enable dictation, go to Settings > Privacy > Speech, inking & typing and select the button Turn On speech services and typing suggestions.

  • Se você estiver usando um microfone e fones de ouvido conectados ao (ou integrados ao) seu headset, certifique-se de que a opção "quando eu usar meu Headset, mude para microfone MIC" esteja ativada em configurações > realidade misturada > áudio e fala.If you're using a microphone and headphones connected to (or built-in to) your headset, make sure the option “When I wear my headset, switch to headset mic” is turned on in Settings > Mixed reality > Audio and speech.

    Configurações de realidade misturada

    Configuração do microfone

Aviso

Lembre-se de que, se você estiver desenvolvendo um headset de imersão para este laboratório, poderá enfrentar problemas de dispositivo de saída de áudio.Be aware that if you are developing for an immersive headset for this lab, you may experience audio output device issues. Isso ocorre devido a um problema com o Unity, que é corrigido em versões posteriores do Unity (Unity 2018,2).This is due to an issue with Unity, which is fixed in later versions of Unity (Unity 2018.2). O problema impede que o Unity altere o dispositivo de saída de áudio padrão em tempo de execução.The issue prevents Unity from changing the default audio output device at run time. Como solução alternativa, verifique se você concluiu as etapas acima e feche e reabra o editor, quando esse problema apresenta.As a work around, ensure you have completed the above steps, and close and re-open the Editor, when this issue presents itself.

Capítulo 1 – o portal do AzureChapter 1 – The Azure Portal

Para usar a API do Azure Translator, você precisará configurar uma instância do serviço a ser disponibilizada para seu aplicativo.To use the Azure Translator API, you will need to configure an instance of the Service to be made available to your application.

  1. Faça logon no portal do Azure.Log in to the Azure Portal.

    Observação

    Se você ainda não tiver uma conta do Azure, será necessário criar uma.If you do not already have an Azure account, you will need to create one. Se você estiver seguindo este tutorial em uma situação de sala de aula ou laboratório, peça ao instrutor ou a uma das proctors para obter ajuda para configurar sua nova conta.If you are following this tutorial in a classroom or lab situation, ask your instructor or one of the proctors for help setting up your new account.

  2. Depois de fazer logon, clique em novo no canto superior esquerdo e pesquise por "API de tradução de texto".Once you are logged in, click on New in the top left corner and search for "Translator Text API." Selecione Enter.Select Enter.

    Novo recurso

    Observação

    A palavra novo pode ter sido substituída por criar um recurso, em portais mais recentes.The word New may have been replaced with Create a resource, in newer portals.

  3. A nova página fornecerá uma descrição do serviço API de tradução de texto .The new page will provide a description of the Translator Text API Service. Na parte inferior esquerda desta página, selecione o botão criar para criar uma associação com esse serviço.At the bottom left of this page, select the Create button, to create an association with this Service.

    Criar API de Tradução de Texto serviço

  4. Depois de clicar em criar:Once you have clicked on Create:

    1. Insira o nome desejado para esta instância de serviço.Insert your desired Name for this Service instance.

    2. Selecione uma assinatura apropriada.Select an appropriate Subscription.

    3. Selecione o tipo de preço apropriado para você, se esta for a primeira vez que criar um serviço de tradução de texto, uma camada gratuita (chamada F0) deverá estar disponível para você.Select the Pricing Tier appropriate for you, if this is the first time creating a Translator Text Service, a free tier (named F0) should be available to you.

    4. Escolha um grupo de recursos ou crie um novo.Choose a Resource Group or create a new one. Um grupo de recursos fornece uma maneira de monitorar, controlar o acesso, provisionar e gerenciar a cobrança de uma coleção de ativos do Azure.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. É recomendável manter todos os serviços do Azure associados a um único projeto (por exemplo, esses laboratórios) em um grupo de recursos comum).It is recommended to keep all the Azure Services associated with a single project (e.g. such as these labs) under a common resource group).

      Se você quiser ler mais sobre grupos de recursos do Azure, visite o artigo grupo de recursos.If you wish to read more about Azure Resource Groups, please visit the resource group article.

    5. Determine o local do seu grupo de recursos (se você estiver criando um novo grupo de recursos).Determine the Location for your resource group (if you are creating a new Resource Group). O local ideal seria na região em que o aplicativo seria executado.The location would ideally be in the region where the application would run. Alguns ativos do Azure só estão disponíveis em determinadas regiões.Some Azure assets are only available in certain regions.

    6. Você também precisará confirmar que entendeu os termos e condições aplicados a esse serviço.You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    7. Selecione Criar.Select Create.

      Selecione o botão criar.

  5. Depois de clicar em criar, você precisará aguardar até que o serviço seja criado, isso pode levar um minuto.Once you have clicked on Create, you will have to wait for the Service to be created, this might take a minute.

  6. Uma notificação será exibida no portal assim que a instância do serviço for criada.A notification will appear in the portal once the Service instance is created.

    Notificação de criação de serviço do Azure

  7. Clique na notificação para explorar sua nova instância de serviço.Click on the notification to explore your new Service instance.

    Vá para o pop-up de recursos.

  8. Clique no botão ir para recurso na notificação para explorar sua nova instância de serviço.Click the Go to resource button in the notification to explore your new Service instance. Você será levado para sua nova instância do serviço API de Tradução de Texto.You will be taken to your new Translator Text API Service instance.

    API de Tradução de Texto página de serviço

  9. Neste tutorial, seu aplicativo precisará fazer chamadas para seu serviço, o que é feito por meio do uso da chave de assinatura do serviço.Within this tutorial, your application will need to make calls to your Service, which is done through using your Service’s Subscription Key.

  10. Na página início rápido do serviço de tradução de texto , navegue até a primeira etapa, pegue as chaves e clique em chaves (você também pode fazer isso clicando nas teclas de hiperlink azul, localizadas no menu de navegação serviços, indicado pelo ícone de chave).From the Quick start page of your Translator Text Service, navigate to the first step, Grab your keys, and click Keys (you can also achieve this by clicking the blue hyperlink Keys, located in the Services navigation menu, denoted by the key icon). Isso revelará suas chaves de serviço.This will reveal your Service Keys.

  11. Faça uma cópia de uma das chaves exibidas, pois você precisará dela posteriormente em seu projeto.Take a copy of one of the displayed keys, as you will need this later in your project.

Capítulo 2 – configurar o projeto do UnityChapter 2 – Set up the Unity project

Configure e teste seu headset de imersão de realidade misturada.Set up and test your mixed reality immersive headset.

Observação

Você não precisará de controladores de animação para este curso.You will not need motion controllers for this course. Se você precisar de suporte para configurar um headset de imersão, siga estas etapas.If you need support setting up an immersive headset, please follow these steps.

A seguir está uma configuração típica para o desenvolvimento com realidade misturada e, como tal, é um bom modelo para outros projetos:The following is a typical set up for developing with mixed reality and, as such, is a good template for other projects:

  1. Abra o Unity e clique em novo.Open Unity and click New.

    Inicie o novo projeto do Unity.

  2. Agora, você precisará fornecer um nome de projeto de Unity.You will now need to provide a Unity Project name. Inserir MR_Translation.Insert MR_Translation. Verifique se o tipo de projeto está definido como 3D.Make sure the project type is set to 3D. Defina o local como algum lugar apropriado para você (Lembre-se de que, mais próximo de diretórios raiz é melhor).Set the Location to somewhere appropriate for you (remember, closer to root directories is better). Em seguida, clique em criar projeto.Then, click Create project.

    Forneça detalhes para o novo projeto do Unity.

  3. Com o Unity Open, vale a pena verificar se o Editor de script padrão está definido como Visual Studio.With Unity open, it is worth checking the default Script Editor is set to Visual Studio. Vá para Editar preferências de > e, em seguida, na nova janela, navegue até Ferramentas externas.Go to Edit > Preferences and then from the new window, navigate to External Tools. Altere o Editor de script externo para o Visual Studio 2017.Change External Script Editor to Visual Studio 2017. Feche a janela preferências .Close the Preferences window.

    Atualize a preferência do editor de script.

  4. Em seguida, vá para arquivo > configurações de Build e alterne a plataforma para plataforma universal do Windows clicando no botão alternar plataforma .Next, go to File > Build Settings and switch the platform to Universal Windows Platform, by clicking on the Switch Platform button.

    Janela de configurações de compilação, alterne a plataforma para UWP.

  5. Vá para arquivo > configurações de compilação e verifique se:Go to File > Build Settings and make sure that:

    1. O dispositivo de destino está definido como qualquer dispositivo.Target Device is set to Any Device.

      Para o Microsoft HoloLens, defina o dispositivo de destino para o hololens.For Microsoft HoloLens, set Target Device to HoloLens.

    2. O tipo de compilação está definido como D3DBuild Type is set to D3D

    3. O SDK está definido para o mais recente instaladoSDK is set to Latest installed

    4. A versão do Visual Studio está definida para o mais recente instaladoVisual Studio Version is set to Latest installed

    5. Compilar e executar é definido como computador localBuild and Run is set to Local Machine

    6. Salve a cena e adicione-a à compilação.Save the scene and add it to the build.

      1. Faça isso selecionando Adicionar abrir cenas.Do this by selecting Add Open Scenes. Uma janela salvar será exibida.A save window will appear.

        Clique no botão Adicionar cenas abertas

      2. Crie uma nova pasta para isso e qualquer cena futura, em seguida, selecione o botão nova pasta , para criar uma nova pasta, nomeie-a como cenas.Create a new folder for this, and any future, scene, then select the New folder button, to create a new folder, name it Scenes.

        Criar nova pasta de scripts

      3. Abra sua pasta de cenas recém-criada e, no campo nome do arquivo:, digite MR_TranslationScene e pressione salvar.Open your newly created Scenes folder, and then in the File name: text field, type MR_TranslationScene, then press Save.

        Dê um nome à nova cena.

        Lembre-se de que você deve salvar as cenas do Unity na pasta ativos , pois elas devem ser associadas ao projeto do Unity.Be aware, you must save your Unity scenes within the Assets folder, as they must be associated with the Unity Project. Criar a pasta de cenas (e outras pastas semelhantes) é uma maneira típica de estruturar um projeto do Unity.Creating the scenes folder (and other similar folders) is a typical way of structuring a Unity project.

    7. As configurações restantes, em configurações de compilação, devem ser deixadas como padrão por enquanto.The remaining settings, in Build Settings, should be left as default for now.

  6. Na janela configurações de compilação , clique no botão configurações do Player , isso abrirá o painel relacionado no espaço onde o Inspetor está localizado.In the Build Settings window, click on the Player Settings button, this will open the related panel in the space where the Inspector is located.

    Abra as configurações do Player.

  7. Nesse painel, algumas configurações precisam ser verificadas:In this panel, a few settings need to be verified:

    1. Na guia outras configurações :In the Other Settings tab:

      1. A versão de tempo de execução de script deve ser estável (.net 3,5 equivalente).Scripting Runtime Version should be Stable (.NET 3.5 Equivalent).

      2. O back-end de script deve ser .netScripting Backend should be .NET

      3. O nível de compatibilidade da API deve ser .NET 4,6API Compatibility Level should be .NET 4.6

        Atualize outras configurações.

    2. Na guia configurações de publicação , em recursos, marque:Within the Publishing Settings tab, under Capabilities, check:

      1. InternetClientInternetClient

      2. MicrofoneMicrophone

        Atualizando configurações de publicação.

    3. Mais adiante no painel, em configurações de XR (encontradas abaixo de configurações de publicação), suporte à realidade virtual em escala, verifique se o SDK do Windows Mixed Reality foi adicionado.Further down the panel, in XR Settings (found below Publish Settings), tick Virtual Reality Supported, make sure the Windows Mixed Reality SDK is added.

      Atualize as configurações de X R.

  8. De volta às configurações de Build, os projetos do Unity C# não ficam mais esmaecidos; Marque a caixa de seleção ao lado deste.Back in Build Settings, Unity C# Projects is no longer greyed out; tick the checkbox next to this.

  9. Feche a janela Configurações de Build.Close the Build Settings window.

  10. Salve sua cena e projeto (arquivo > salvar cena/arquivo > salvar projeto).Save your Scene and Project (FILE > SAVE SCENE / FILE > SAVE PROJECT).

Capítulo 3 – configuração principal da câmeraChapter 3 – Main Camera setup

Importante

Se você quiser ignorar o componente de configuração do Unity deste curso e continuar diretamente no código, fique à vontade para baixar esse. unitypackage, importe-o para seu projeto como um pacote personalizadoe, em seguida, continue no capítulo 5.If you wish to skip the Unity Set up component of this course, and continue straight into code, feel free to download this .unitypackage, import it into your project as a Custom Package, and then continue from Chapter 5. Você ainda precisará criar um projeto do Unity.You will still need to create a Unity Project.

  1. No painel hierarquia, você encontrará um objeto chamado câmera principal, esse objeto representa o ponto de vista de "cabeçalho" quando você estiver "dentro" de seu aplicativo.In the Hierarchy Panel, you will find an object called Main Camera, this object represents your “head” point of view once you are “inside” your application.

  2. Com o painel do Unity na frente de você, selecione a câmera principal gameobject.With the Unity Dashboard in front of you, select the Main Camera GameObject. Você observará que o painel Inspetor (geralmente localizado à direita, dentro do painel) mostrará os vários componentes desse gameobject, com a transformação na parte superior, seguida pela câmera e alguns outros componentes.You will notice that the Inspector Panel (generally found to the right, within the Dashboard) will show the various components of that GameObject, with Transform at the top, followed by Camera, and some other components. Você precisará redefinir a transformação da câmera principal, para que ela seja posicionada corretamente.You will need to reset the Transform of the Main Camera, so it is positioned correctly.

  3. Para fazer isso, selecione o ícone de engrenagem ao lado do componente transformação da câmera e selecione Redefinir.To do this, select the Gear icon next to the Camera’s Transform component, and selecting Reset.

    Redefina a transformação principal da câmera.

  4. O componente de transformação deve ter a seguinte aparência:The Transform component should then look like:

    1. A posição é definida como 0, 0, 0The Position is set to 0, 0, 0

    2. A rotação está definida como 0, 0, 0Rotation is set to 0, 0, 0

    3. E Scale é definido como 1, 1, 1And Scale is set to 1, 1, 1

      Transformar informações da câmera

  5. Em seguida, com o objeto principal da câmera selecionado, consulte o botão Adicionar componente localizado na parte inferior do painel Inspetor.Next, with the Main Camera object selected, see the Add Component button located at the very bottom of the Inspector Panel.

  6. Selecione esse botão e pesquise (digitando fonte de áudio no campo de pesquisa ou navegando nas seções) para o componente chamado fonte de áudio , conforme mostrado abaixo, e selecione-o (pressionar Enter em também funciona).Select that button, and search (by either typing Audio Source into the search field or navigating the sections) for the component called Audio Source as shown below and select it (pressing enter on it also works).

  7. Um componente de fonte de áudio será adicionado à câmera principal, conforme demonstrado abaixo.An Audio Source component will be added to the Main Camera, as demonstrated below.

    Adicione um componente de fonte de áudio.

    Observação

    Para o Microsoft HoloLens, você também precisará alterar o seguinte, que fazem parte do componente da câmera em sua câmera principal:For Microsoft HoloLens, you will need to also change the following, which are part of the Camera component on your Main Camera:

    • Limpar sinalizadores: Cor sólida.Clear Flags: Solid Color.
    • Plano de fundo ' Black, Alpha 0 ' – cor hexadecimal: #00000000.Background ‘Black, Alpha 0’ – Hex color: #00000000.

Capítulo 4 – tela de depuração da instalaçãoChapter 4 – Setup Debug Canvas

Para mostrar a entrada e a saída da tradução, é necessário criar uma interface do usuário básica.To show the input and output of the translation, a basic UI needs to be created. Para este curso, você criará um objeto de interface do usuário de tela, com vários objetos ' Text ' para mostrar os dados.For this course, you will create a Canvas UI object, with several ‘Text’ objects to show the data.

  1. Clique com o botão direito do mouse em uma área vazia do painel hierarquia, em interface do usuário, adicionar uma tela.Right-click in an empty area of the Hierarchy Panel, under UI, add a Canvas.

    Adicionar novo objeto de interface do usuário da tela.

  2. Com o objeto Canvas selecionado, no painel Inspetor (dentro do componente ' Canvas '), altere o modo de processamento para espaço mundial.With the Canvas object selected, in the Inspector Panel (within the ‘Canvas’ component), change Render Mode to World Space.

  3. Em seguida, altere os seguintes parâmetros na transformação Rect do painel Inspetor:Next, change the following parameters in the Inspector Panel’s Rect Transform:

    1. Pos - X 0 Y 0 Z 40POS - X 0 Y 0 Z 40

    2. Largura -500Width - 500

    3. Altura -300Height - 300

    4. Escala - X 0,13 Y 0,13 Z 0,13Scale - X 0.13 Y 0.13 Z 0.13

      Atualize a transformação Rect para a tela.

  4. Clique com o botão direito do mouse na tela no painel hierarquia, em interface do usuário e adicione um painel.Right click on the Canvas in the Hierarchy Panel, under UI, and add a Panel. Esse painel fornecerá uma tela de fundo para o texto que será exibido na cena.This Panel will provide a background to the text that you will be displaying in the scene.

  5. Clique com o botão direito do mouse no painel no painel hierarquia, em interface do usuário e adicione um objeto de texto.Right click on the Panel in the Hierarchy Panel, under UI, and add a Text object. Repita o mesmo processo até que você tenha criado quatro objetos de texto da interface do usuário no total (dica: se você tiver o primeiro objeto ' texto ' selecionado, poderá simplesmente pressionar ' CTRL ' + ' d' para duplicá-lo, até que você tenha quatro no total).Repeat the same process until you have created four UI Text objects in total (Hint: if you have the first ‘Text’ object selected, you can simply press ‘Ctrl’ + ‘D’, to duplicate it, until you have four in total).

  6. Para cada objeto de texto, selecione-o e use as tabelas abaixo para definir os parâmetros no painel Inspetor.For each Text Object, select it and use the below tables to set the parameters in the Inspector Panel.

    1. Para o componente de transformação Rect :For the Rect Transform component:

      NameName Transformação- posiçãoTransform - Position LarguraWidth AlturaHeight
      MicrophoneStatusLabelMicrophoneStatusLabel X -80 Y 90 Z 0X -80 Y 90 Z 0 300300 3030
      AzureResponseLabelAzureResponseLabel X -80 Y 30 Z 0X -80 Y 30 Z 0 300300 3030
      DictationLabelDictationLabel X -80 Y -30 Z 0X -80 Y -30 Z 0 300300 3030
      TranslationResultLabelTranslationResultLabel X -80 Y -90 Z 0X -80 Y -90 Z 0 300300 3030
    2. Para o componente de texto (script) :For the Text (Script) component:

      NameName TextoText Tamanho da fonteFont Size
      MicrophoneStatusLabelMicrophoneStatusLabel Status do microfone:Microphone Status: 2020
      AzureResponseLabelAzureResponseLabel Resposta da Web do AzureAzure Web Response 2020
      DictationLabelDictationLabel Você acabou de dizer:You just said: 2020
      TranslationResultLabelTranslationResultLabel Translação:Translation: 2020

      Insira os valores correspondentes para os rótulos de interface do usuário.

    3. Além disso, torne o estilo da fonte em negrito.Also, make the Font Style Bold. Isso fará com que o texto seja mais fácil de ler.This will make the text easier to read.

      Fonte em negrito.

  7. Para cada objeto de texto da interface do usuário criado no capítulo 5, crie um novo objeto de texto da interface do usuário filho .For each UI Text object created in Chapter 5, create a new child UI Text object. Esses filhos exibirão a saída do aplicativo.These children will display the output of the application. Crie objetos filho clicando com o botão direito do mouse no pai pretendido (por exemplo, MicrophoneStatusLabel) e selecione interface do usuário e, em seguida, selecione texto.Create child objects through right-clicking your intended parent (e.g. MicrophoneStatusLabel) and then select UI and then select Text.

  8. Para cada um desses filhos, selecione-o e use as tabelas abaixo para definir os parâmetros no painel inspetor.For each of these children, select it and use the below tables to set the parameters in the Inspector Panel.

    1. Para o componente de transformação Rect :For the Rect Transform component:

      NameName Transformação- posiçãoTransform - Position LarguraWidth AlturaHeight
      MicrophoneStatusTextMicrophoneStatusText X 0 Y-30 Z 0X 0 Y -30 Z 0 300300 3030
      AzureResponseTextAzureResponseText X 0 Y-30 Z 0X 0 Y -30 Z 0 300300 3030
      DictationTextDictationText X 0 Y-30 Z 0X 0 Y -30 Z 0 300300 3030
      TranslationResultTextTranslationResultText X 0 Y-30 Z 0X 0 Y -30 Z 0 300300 3030
    2. Para o componente de texto (script) :For the Text (Script) component:

      NameName TextoText Tamanho da fonteFont Size
      MicrophoneStatusTextMicrophoneStatusText ???? 2020
      AzureResponseTextAzureResponseText ???? 2020
      DictationTextDictationText ???? 2020
      TranslationResultTextTranslationResultText ???? 2020
  9. Em seguida, selecione a opção de alinhamento ' centro ' para cada componente de texto:Next, select the 'centre' alignment option for each text component:

    alinhar texto.

  10. Para garantir que os objetos de texto da interface do usuário filho sejam facilmente legíveis, altere sua cor.To ensure the child UI Text objects are easily readable, change their Color. Para fazer isso, clique na barra (atualmente, ' preto ') ao lado de cor.Do this by clicking on the bar (currently ‘Black’) next to Color.

    Insira valores correspondentes para as saídas de texto da interface do usuário.

  11. Em seguida, na janela nova, pequena, cor , altere a cor hexadecimal para: 0032EAFFThen, in the new, little, Color window, change the Hex Color to: 0032EAFF

    Atualizar cor para azul.

  12. Veja abaixo a aparência da interface do usuário .Below is how the UI should look.

    1. No painel hierarquia:In the Hierarchy Panel:

      Ter hierarquia na estrutura fornecida.

    2. Nas exibições de cena e de jogo:In the Scene and Game Views:

      Ter as exibições de cena e jogo na mesma estrutura.

Capítulo 5 – criar a classe ResultsChapter 5 – Create the Results class

O primeiro script que você precisa criar é a classe Results , que é responsável por fornecer uma maneira de ver os resultados da tradução.The first script you need to create is the Results class, which is responsible for providing a way to see the results of translation. A classe armazena e exibe o seguinte:The Class stores and displays the following:

  • O resultado da resposta do Azure.The response result from Azure.
  • O status do microfone.The microphone status.
  • O resultado do ditado (voz para texto).The result of the dictation (voice to text).
  • O resultado da tradução.The result of the translation.

Para criar esta classe:To create this class:

  1. Clique com o botão direito do mouse no painel Projeto e crie > pasta.Right-click in the Project Panel, then Create > Folder. Nomeie a pasta scripts.Name the folder Scripts.

    Criar pasta de scripts.

    Abra a pasta scripts.

  2. Com a pasta scripts Create, clique duas vezes nela para abrir.With the Scripts folder create, double click it to open. Em seguida, dentro dessa pasta, clique com o botão direito do mouse e selecione criar > em seguida script C#.Then within that folder, right-click, and select Create > then C# Script. Nomeie os resultados do script.Name the script Results.

    Crie o primeiro script.

  3. Clique duas vezes no script novos resultados para abri-lo com o Visual Studio.Double click on the new Results script to open it with Visual Studio.

  4. Insira os seguintes namespaces:Insert the following namespaces:

        using UnityEngine;
        using UnityEngine.UI;
    
  5. Dentro da classe, insira as seguintes variáveis:Inside the Class insert the following variables:

        public static Results instance;
    
        [HideInInspector] 
        public string azureResponseCode;
    
        [HideInInspector] 
        public string translationResult;
    
        [HideInInspector] 
        public string dictationResult;
    
        [HideInInspector] 
        public string micStatus;
    
        public Text microphoneStatusText;
    
        public Text azureResponseText;
    
        public Text dictationText;
    
        public Text translationResultText;
    
  6. Em seguida, adicione o método ativo () , que será chamado quando a classe for inicializada.Then add the Awake() method, which will be called when the class initializes.

        private void Awake() 
        { 
            // Set this class to behave similar to singleton 
            instance = this;           
        } 
    
  7. Por fim, adicione os métodos que são responsáveis pela saída de várias informações de resultados para a interface do usuário.Finally, add the methods which are responsible for outputting the various results information to the UI.

        /// <summary>
        /// Stores the Azure response value in the static instance of Result class.
        /// </summary>
        public void SetAzureResponse(string result)
        {
            azureResponseCode = result;
            azureResponseText.text = azureResponseCode;
        }
    
        /// <summary>
        /// Stores the translated result from dictation in the static instance of Result class. 
        /// </summary>
        public void SetDictationResult(string result)
        {
            dictationResult = result;
            dictationText.text = dictationResult;
        }
    
        /// <summary>
        /// Stores the translated result from Azure Service in the static instance of Result class. 
        /// </summary>
        public void SetTranslatedResult(string result)
        {
            translationResult = result;
            translationResultText.text = translationResult;
        }
    
        /// <summary>
        /// Stores the status of the Microphone in the static instance of Result class. 
        /// </summary>
        public void SetMicrophoneStatus(string result)
        {
            micStatus = result;
            microphoneStatusText.text = micStatus;
        }
    
  8. Certifique-se de salvar suas alterações no Visual Studio antes de retornar ao Unity.Be sure to save your changes in Visual Studio before returning to Unity.

Capítulo 6 – criar a classe microphonemanagerChapter 6 – Create the MicrophoneManager class

A segunda classe que você pretende criar é o microphonemanager.The second class you are going to create is the MicrophoneManager.

Essa classe é responsável por:This class is responsible for:

  • Detectando o dispositivo de gravação conectado ao headset ou ao computador (o que for o padrão).Detecting the recording device attached to the headset or machine (whichever is the default).
  • Capture o áudio (voz) e use o ditado para armazená-lo como uma cadeia de caracteres.Capture the audio (voice) and use dictation to store it as a string.
  • Depois que a voz for pausada, envie o ditado para a classe tradutor.Once the voice has paused, submit the dictation to the Translator class.
  • Hospede um método que pode parar a captura de voz, se desejado.Host a method that can stop the voice capture if desired.

Para criar esta classe:To create this class:

  1. Clique duas vezes na pasta scripts para abri-la.Double click on the Scripts folder, to open it.

  2. Clique com o botão direito do mouse na pasta scripts , clique em criar > script C#.Right-click inside the Scripts folder, click Create > C# Script. Nomeie o script microphonemanager.Name the script MicrophoneManager.

  3. Clique duas vezes no novo script para abri-lo com o Visual Studio.Double click on the new script to open it with Visual Studio.

  4. Atualize os namespaces para ser o mesmo que o seguinte, na parte superior da classe microphonemanager :Update the namespaces to be the same as the following, at the top of the MicrophoneManager class:

        using UnityEngine; 
        using UnityEngine.Windows.Speech;
    
  5. Em seguida, adicione as seguintes variáveis dentro da classe microphonemanager :Then, add the following variables inside the MicrophoneManager class:

        // Help to access instance of this object 
        public static MicrophoneManager instance; 
    
        // AudioSource component, provides access to mic 
        private AudioSource audioSource; 
    
        // Flag indicating mic detection 
        private bool microphoneDetected; 
    
        // Component converting speech to text 
        private DictationRecognizer dictationRecognizer; 
    
  6. Agora, o código para os métodos ativo () e Iniciar () precisa ser adicionado.Code for the Awake() and Start() methods now needs to be added. Eles serão chamados quando a classe for inicializada:These will be called when the class initializes:

        private void Awake() 
        { 
            // Set this class to behave similar to singleton 
            instance = this; 
        } 
    
        void Start() 
        { 
            //Use Unity Microphone class to detect devices and setup AudioSource 
            if(Microphone.devices.Length > 0) 
            { 
                Results.instance.SetMicrophoneStatus("Initialising..."); 
                audioSource = GetComponent<AudioSource>(); 
                microphoneDetected = true; 
            } 
            else 
            { 
                Results.instance.SetMicrophoneStatus("No Microphone detected"); 
            } 
        } 
    
  7. Você pode excluir o método Update () , pois essa classe não o usará.You can delete the Update() method since this class will not use it.

  8. Agora você precisa dos métodos que o aplicativo usa para iniciar e parar a captura de voz e passá-la para a classe Tradutor , que será criada em breve.Now you need the methods that the App uses to start and stop the voice capture, and pass it to the Translator class, that you will build soon. Copie o código a seguir e cole-o abaixo do método Start () .Copy the following code and paste it beneath the Start() method.

        /// <summary> 
        /// Start microphone capture. Debugging message is delivered to the Results class. 
        /// </summary> 
        public void StartCapturingAudio() 
        { 
            if(microphoneDetected) 
            {               
                // Start dictation 
                dictationRecognizer = new DictationRecognizer(); 
                dictationRecognizer.DictationResult += DictationRecognizer_DictationResult; 
                dictationRecognizer.Start(); 
    
                // Update UI with mic status 
                Results.instance.SetMicrophoneStatus("Capturing..."); 
            }      
        } 
    
        /// <summary> 
        /// Stop microphone capture. Debugging message is delivered to the Results class. 
        /// </summary> 
        public void StopCapturingAudio() 
        { 
            Results.instance.SetMicrophoneStatus("Mic sleeping"); 
            Microphone.End(null); 
            dictationRecognizer.DictationResult -= DictationRecognizer_DictationResult; 
            dictationRecognizer.Dispose(); 
        }
    

    Dica

    Embora esse aplicativo não faça uso, o método StopCapturingAudio () também foi fornecido aqui, caso você queira implementar a capacidade de interromper a captura de áudio em seu aplicativo.Though this application will not make use of it, the StopCapturingAudio() method has also been provided here, should you want to implement the ability to stop capturing audio in your application.

  9. Agora você precisa adicionar um manipulador de ditado que será invocado quando a voz parar.You now need to add a Dictation Handler that will be invoked when the voice stops. Esse método passará o texto ditado para a classe do Tradutor .This method will then pass the dictated text to the Translator class.

        /// <summary>
        /// This handler is called every time the Dictation detects a pause in the speech. 
        /// Debugging message is delivered to the Results class.
        /// </summary>
        private void DictationRecognizer_DictationResult(string text, ConfidenceLevel confidence)
        {
            // Update UI with dictation captured
            Results.instance.SetDictationResult(text);
    
            // Start the coroutine that process the dictation through Azure 
            StartCoroutine(Translator.instance.TranslateWithUnityNetworking(text));   
        }
    
  10. Certifique-se de salvar suas alterações no Visual Studio antes de retornar ao Unity.Be sure to save your changes in Visual Studio before returning to Unity.

Aviso

Neste ponto, você observará um erro exibido no painel de console do editor do Unity ("o nome ' Tradutor ' não existe...").At this point you will notice an error appearing in the Unity Editor Console Panel (“The name ‘Translator’ does not exist...”). Isso ocorre porque o código faz referência à classe do Tradutor , que será criada no próximo capítulo.This is because the code references the Translator class, which you will create in the next chapter.

Capítulo 7 – chamada para o serviço do Azure e do TradutorChapter 7 – Call to Azure and translator service

O último script que você precisa criar é a classe Translator .The last script you need to create is the Translator class.

Essa classe é responsável por:This class is responsible for:

  • Autenticando o aplicativo com o Azure, no Exchange para um token de autenticação.Authenticating the App with Azure, in exchange for an Auth Token.
  • Use o token de autenticação para enviar texto (recebido da classe microphonemanager ) a ser traduzido.Use the Auth Token to submit text (received from the MicrophoneManager Class) to be translated.
  • Receba o resultado traduzido e passe-o para a classe Results para ser visualizado na interface do usuário.Receive the translated result and pass it to the Results Class to be visualized in the UI.

Para criar esta classe:To create this Class:

  1. Vá para a pasta scripts que você criou anteriormente.Go to the Scripts folder you created previously.

  2. Clique com o botão direito do mouse no painel Projeto, crie > script C#.Right-click in the Project Panel, Create > C# Script. Chame o Tradutor de script.Call the script Translator.

  3. Clique duas vezes no novo script do Tradutor para abri-lo com o Visual Studio.Double click on the new Translator script to open it with Visual Studio.

  4. Adicione os seguintes namespaces à parte superior do arquivo:Add the following namespaces to the top of the file:

        using System;
        using System.Collections;
        using System.Xml.Linq;
        using UnityEngine;
        using UnityEngine.Networking;
    
  5. Em seguida, adicione as seguintes variáveis dentro da classe Translator :Then add the following variables inside the Translator class:

        public static Translator instance; 
        private string translationTokenEndpoint = "https://api.cognitive.microsoft.com/sts/v1.0/issueToken"; 
        private string translationTextEndpoint = "https://api.microsofttranslator.com/v2/http.svc/Translate?"; 
        private const string ocpApimSubscriptionKeyHeader = "Ocp-Apim-Subscription-Key"; 
    
        //Substitute the value of authorizationKey with your own Key 
        private const string authorizationKey = "-InsertYourAuthKeyHere-"; 
        private string authorizationToken; 
    
        // languages set below are: 
        // English 
        // French 
        // Italian 
        // Japanese 
        // Korean 
        public enum Languages { en, fr, it, ja, ko }; 
        public Languages from = Languages.en; 
        public Languages to = Languages.it; 
    

    Observação

    • Os idiomas inseridos na Enumeração Languages são apenas exemplos.The languages inserted into the languages enum are just examples. Fique à vontade para adicionar mais se desejar; a API dá suporte a mais de 60 idiomas (incluindo Klingon)!Feel free to add more if you wish; the API supports over 60 languages (including Klingon)!
    • Há uma página mais interativa que abrange os idiomas disponíveis, embora esteja ciente de que a página só parece funcionar quando o idioma do site está definido como ' ' (e o site da Microsoft provavelmente será redirecionado para seu idioma nativo).There is a more interactive page covering available languages, though be aware the page only appears to work when the site language is set to '' (and the Microsoft site will likely redirect to your native language). Você pode alterar o idioma do site na parte inferior da página ou alterando a URL.You can change site language at the bottom of the page or by altering the URL.
    • O valor de authorizationKey , no trecho de código acima, deve ser a chave que você recebeu quando assinou o API de tradução de texto do Azure.The authorizationKey value, in the above code snippet, must be the Key you received when you subscribed to the Azure Translator Text API. Isso foi abordado no capítulo 1.This was covered in Chapter 1.
  6. Agora, o código para os métodos ativo () e Iniciar () precisa ser adicionado.Code for the Awake() and Start() methods now needs to be added.

  7. Nesse caso, o código fará uma chamada para o Azure usando a chave de autorização para obter um token.In this case, the code will make a call to Azure using the authorization Key, to get a Token.

        private void Awake() 
        { 
            // Set this class to behave similar to singleton  
            instance = this; 
        } 
    
        // Use this for initialization  
        void Start() 
        { 
            // When the application starts, request an auth token 
            StartCoroutine("GetTokenCoroutine", authorizationKey); 
        }
    

    Observação

    O token expirará após 10 minutos.The token will expire after 10 minutes. Dependendo do cenário do seu aplicativo, talvez seja necessário fazer a mesma chamada de corrotina várias vezes.Depending on the scenario for your app, you might have to make the same coroutine call multiple times.

  8. A corrotina para obter o token é a seguinte:The coroutine to obtain the Token is the following:

        /// <summary> 
        /// Request a Token from Azure Translation Service by providing the access key. 
        /// Debugging result is delivered to the Results class. 
        /// </summary> 
        private IEnumerator GetTokenCoroutine(string key)
        {
            if (string.IsNullOrEmpty(key))
            {
                throw new InvalidOperationException("Authorization key not set.");
            }
    
            using (UnityWebRequest unityWebRequest = UnityWebRequest.Post(translationTokenEndpoint, string.Empty))
            {
                unityWebRequest.SetRequestHeader("Ocp-Apim-Subscription-Key", key);
                yield return unityWebRequest.SendWebRequest();
    
                long responseCode = unityWebRequest.responseCode;
    
                // Update the UI with the response code 
                Results.instance.SetAzureResponse(responseCode.ToString());
    
                if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
                {
                    Results.instance.azureResponseText.text = unityWebRequest.error;
                    yield return null;
                }
                else
                {
                    authorizationToken = unityWebRequest.downloadHandler.text;
                }
            }
    
            // After receiving the token, begin capturing Audio with the MicrophoneManager Class 
            MicrophoneManager.instance.StartCapturingAudio();
        }
    

    Aviso

    Se você editar o nome do método IEnumerator GetTokenCoroutine (), precisará atualizar os valores de cadeia de caracteres de chamada StartCoroutine e StopCoroutine no código acima.If you edit the name of the IEnumerator method GetTokenCoroutine(), you need to update the StartCoroutine and StopCoroutine call string values in the above code. Deacordo com a documentação do Unity, para interromper uma corrotina específica, você precisa usar o método de valor da cadeia de caracteres.As per Unity documentation, to Stop a specific Coroutine, you need to use the string value method.

  9. Em seguida, adicione a corrotina (com um método de fluxo de "suporte" logo abaixo) para obter a tradução do texto recebido pela classe microphonemanager .Next, add the coroutine (with a “support” stream method right below it) to obtain the translation of the text received by the MicrophoneManager class. Esse código cria uma cadeia de caracteres de consulta para enviar ao API de tradução de texto do Azure e, em seguida, usa a classe interna do Unity UnityWebRequest para fazer uma chamada "Get" para o ponto de extremidade com a cadeia de caracteres de consulta.This code creates a query string to send to the Azure Translator Text API, and then uses the internal Unity UnityWebRequest class to make a ‘Get’ call to the endpoint with the query string. Em seguida, o resultado é usado para definir a tradução no seu objeto de resultados.The result is then used to set the translation in your Results object. O código a seguir mostra a implementação:The code below shows the implementation:

        /// <summary> 
        /// Request a translation from Azure Translation Service by providing a string.  
        /// Debugging result is delivered to the Results class. 
        /// </summary> 
        public IEnumerator TranslateWithUnityNetworking(string text)
        {
            // This query string will contain the parameters for the translation 
            string queryString = string.Concat("text=", Uri.EscapeDataString(text), "&from=", from, "&to=", to);
    
            using (UnityWebRequest unityWebRequest = UnityWebRequest.Get(translationTextEndpoint + queryString))
            {
                unityWebRequest.SetRequestHeader("Authorization", "Bearer " + authorizationToken);
                unityWebRequest.SetRequestHeader("Accept", "application/xml");
                yield return unityWebRequest.SendWebRequest();
    
                if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
                {
                    Debug.Log(unityWebRequest.error);
                    yield return null;
                }
    
                // Parse out the response text from the returned Xml
                string result = XElement.Parse(unityWebRequest.downloadHandler.text).Value;
                Results.instance.SetTranslatedResult(result);
            }
        }
    
  10. Certifique-se de salvar suas alterações no Visual Studio antes de retornar ao Unity.Be sure to save your changes in Visual Studio before returning to Unity.

Capítulo 8 – configurar a cena do UnityChapter 8 – Configure the Unity Scene

  1. De volta ao editor do Unity, clique e arraste a classe Results da pasta scripts para o objeto da câmera principal no painel hierarquia.Back in the Unity Editor, click and drag the Results class from the Scripts folder to the Main Camera object in the Hierarchy Panel.

  2. Clique na câmera principal e examine o painel Inspetor.Click on the Main Camera and look at the Inspector Panel. Você observará que, no componente de script recém-adicionado, há quatro campos com valores vazios.You will notice that within the newly added Script component, there are four fields with empty values. Essas são as referências de saída para as propriedades no código.These are the output references to the properties in the code.

  3. Arraste os objetos de texto apropriados do painel hierarquia para esses quatro slots, conforme mostrado na imagem abaixo.Drag the appropriate Text objects from the Hierarchy Panel to those four slots, as shown in the image below.

    Atualizar referências de destino com valores especificados.

  4. Em seguida, clique e arraste a classe Tradutor da pasta scripts para o objeto de câmera principal no painel hierarquia.Next, click and drag the Translator class from the Scripts folder to the Main Camera object in the Hierarchy Panel.

  5. Em seguida, clique e arraste a classe microphonemanager da pasta scripts para o objeto de câmera principal no painel hierarquia.Then, click and drag the MicrophoneManager class from the Scripts folder to the Main Camera object in the Hierarchy Panel.

  6. Por fim, clique na câmera principal e examine o painel Inspetor.Lastly, click on the Main Camera and look at the Inspector Panel. Você observará que, no script que você arrastou, há duas caixas suspensas que permitirão que você defina os idiomas.You will notice that in the script you dragged on, there are two drop down boxes that will allow you to set the languages.

    Verifique se os idiomas de tradução pretendidos são de entrada.

Capítulo 9 – testar em realidade misturadaChapter 9 – Test in mixed reality

Neste ponto, você precisa testar se a cena foi implementada corretamente.At this point you need to test that the Scene has been properly implemented.

Verifique se:Ensure that:

  • Todas as configurações mencionadas no capítulo 1 estão definidas corretamente.All the settings mentioned in Chapter 1 are set correctly.
  • Os resultados, o Tradutor e o microfonemanager, os scripts são anexados ao objeto da câmera principal .The Results, Translator, and MicrophoneManager, scripts are attached to the Main Camera object.
  • Você colocou sua chave do serviço de API de tradução de texto do Azure dentro da variável AuthorizationKey dentro do script do Tradutor .You have placed your Azure Translator Text API Service Key within the authorizationKey variable within the Translator Script.
  • Todos os campos no painel principal do Inspetor de câmera são atribuídos corretamente.All the fields in the Main Camera Inspector Panel are assigned properly.
  • O microfone está funcionando ao executar sua cena (caso contrário, verifique se o microfone anexado é o dispositivo padrão e se você o configurou corretamente no Windows).Your microphone is working when running your scene (if not, check that your attached microphone is the default device, and that you have set it up correctly within Windows).

Você pode testar o headset de imersão pressionando o botão reproduzir no Editor do Unity.You can test the immersive headset by pressing the Play button in the Unity Editor. O aplicativo deve estar funcionando por meio do headset de imersão anexado.The App should be functioning through the attached immersive headset.

Aviso

Se você vir um erro no console do Unity sobre a alteração do dispositivo de áudio padrão, a cena poderá não funcionar conforme o esperado.If you see an error in the Unity console about the default audio device changing, the scene may not function as expected. Isso ocorre devido à maneira como o portal de realidade misturada lida com microfones internos para fones de ouvido que os têm.This is due to the way the mixed reality portal deals with built-in microphones for headsets that have them. Se você vir esse erro, simplesmente pare a cena e inicie-a novamente e as coisas devem funcionar conforme o esperado.If you see this error, simply stop the scene and start it again and things should work as expected.

Capítulo 10 – criar a solução UWP e Sideload no computador localChapter 10 – Build the UWP solution and sideload on local machine

Tudo o que é necessário para a seção do Unity deste projeto foi concluído, portanto, é hora de compilá-lo a partir do Unity.Everything needed for the Unity section of this project has now been completed, so it is time to build it from Unity.

  1. Navegue até configurações de compilação: arquivo > configurações de compilação...Navigate to Build Settings: File > Build Settings...

  2. Na janela configurações de compilação , clique em Compilar.From the Build Settings window, click Build.

    Compile a cena do Unity.

  3. Se ainda não estiver, projetos do Tick Unity C#.If not already, tick Unity C# Projects.

  4. Clique em Compilar.Click Build. O Unity iniciará uma janela Explorador de arquivos , onde você precisará criar e, em seguida, selecionar uma pasta na qual o aplicativo será compilado.Unity will launch a File Explorer window, where you need to create and then select a folder to build the app into. Crie essa pasta agora e nomeie-a como aplicativo.Create that folder now, and name it App. Em seguida, com a pasta de aplicativo selecionada, pressione Selecionar pasta.Then with the App folder selected, press Select Folder.

  5. O Unity começará a criar seu projeto na pasta do aplicativo .Unity will begin building your project to the App folder.

  6. Depois que o Unity terminar a compilação (pode levar algum tempo), ele abrirá uma janela do Explorador de arquivos no local de sua compilação (verifique sua barra de tarefas, pois ela nem sempre aparecerá acima das janelas, mas o notificará sobre a adição de uma nova janela).Once Unity has finished building (it might take some time), it will open a File Explorer window at the location of your build (check your task bar, as it may not always appear above your windows, but will notify you of the addition of a new window).

Capítulo 11 – implantar seu aplicativoChapter 11 – Deploy your application

Para implantar seu aplicativo:To deploy your application:

  1. Navegue até sua nova compilação do Unity (a pasta do aplicativo ) e abra o arquivo de solução com o Visual Studio.Navigate to your new Unity build (the App folder) and open the solution file with Visual Studio.

  2. Na configuração da solução, selecione depurar.In the Solution Configuration select Debug.

  3. Na plataforma da solução, selecione x86, computador local.In the Solution Platform, select x86, Local Machine.

    Para o Microsoft HoloLens, você pode achar mais fácil definir isso como computador remoto, para que você não esteja vinculado ao seu computador.For the Microsoft HoloLens, you may find it easier to set this to Remote Machine, so that you are not tethered to your computer. No entanto, também será necessário fazer o seguinte:Though, you will need to also do the following:

    • Conheça o endereço IP do seu HoloLens, que pode ser encontrado nas configurações > rede & Internet > Wi-Fi > opções avançadas; o IPv4 é o endereço que você deve usar.Know the IP Address of your HoloLens, which can be found within the Settings > Network & Internet > Wi-Fi > Advanced Options; the IPv4 is the address you should use.
    • Verificar se o modo de desenvolvedor está ativado; encontrado em configurações > atualização & > de segurança para desenvolvedores.Ensure Developer Mode is On; found in Settings > Update & Security > For developers.

    Implante a solução do Visual Studio.

  4. Vá para o menu Compilar e clique em implantar solução para Sideload o aplicativo em seu PC.Go to Build menu and click on Deploy Solution to sideload the application to your PC.

  5. Seu aplicativo agora deve aparecer na lista de aplicativos instalados, pronto para ser iniciado.Your App should now appear in the list of installed apps, ready to be launched.

  6. Depois de iniciado, o aplicativo solicitará que você autorize o acesso ao microfone.Once launched, the App will prompt you to authorize access to the Microphone. Certifique-se de clicar no botão Sim .Make sure to click the YES button.

  7. Agora você está pronto para começar a traduzir!You are now ready to start translating!

Seu aplicativo de API de tradução de texto concluídoYour finished Translation Text API application

Parabéns, você criou um aplicativo de realidade misturada que aproveita a API de texto de tradução do Azure para converter a fala em texto traduzido.Congratulations, you built a mixed reality app that leverages the Azure Translation Text API to convert speech to translated text.

Produto final.

Exercícios de bônusBonus exercises

Exercício 1Exercise 1

Você pode adicionar a funcionalidade de conversão de texto em fala ao aplicativo para que o texto retornado seja falado?Can you add text-to-speech functionality to the app, so that the returned text is spoken?

Exercício 2Exercise 2

Possibilitar que o usuário altere os idiomas de origem e saída (' de ' e ' para ') no próprio aplicativo, para que o aplicativo não precise ser recriado sempre que você quiser alterar os idiomas.Make it possible for the user to change the source and output languages ('from' and 'to') within the app itself, so the app does not need to be rebuilt every time you want to change languages.