301. Смешанная реальность и Azure: перевод с одного языка на другойMR and Azure 301: Language translation


Примечание

Руководства Mixed Reality Academy были разработаны для иммерсивных гарнитур HoloLens (1-го поколения) и иммерсивных гарнитур Mixed Reality.The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. Поэтому мы считаем, что важно оставить эти руководства для разработчиков, которые ищут рекомендации по разработке для этих устройств.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. Данные руководства не будут обновляться с учетом последних наборов инструментов или возможностей взаимодействия для HoloLens 2.These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. Они будут сохранены для работы на поддерживаемых устройствах.They will be maintained to continue working on the supported devices. Появится новая серия руководств, которые будут опубликованы в будущем, где будет показано, как разрабатывать данные для 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. Это уведомление будет обновлено ссылкой на эти учебники при их публикации.This notice will be updated with a link to those tutorials when they are posted.


В этом курсе вы узнаете, как добавлять возможности перевода в приложение смешанной реальности с помощью Cognitive Services Azure с API перевода текстов.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.

Окончательный продукт

API перевода текстов — это служба перевода, которая работает практически в реальном времени.The Translator Text API is a translation Service which works in near real-time. Служба является облачной, и с помощью REST APIного вызова приложение может использовать технологию нейронного машинного перевода для перевода текста на другой язык.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. Дополнительные сведения см. на странице API перевода текстов Azure.For more information, visit the Azure Translator Text API page.

После завершения этого курса у вас будет приложение смешанной реальности, которое сможет сделать следующее:Upon completion of this course, you will have a mixed reality application which will be able to do the following:

  1. Пользователь будет говорить на микрофон, подключенный к головной гарнитуре (VR) (или встроенному микрофону HoloLens).The user will speak into a microphone connected to an immersive (VR) headset (or the built-in microphone of HoloLens).
  2. Приложение запишет диктовку и отправит ее в API перевода текстов Azure.The app will capture the dictation and send it to the Azure Translator Text API.
  3. Результат перевода будет отображаться в простой группе пользовательского интерфейса в сцене Unity.The translation result will be displayed in a simple UI group in the Unity Scene.

В этом курсе вы узнаете, как получить результаты из службы переводчиков в примере приложения на основе Unity.This course will teach you how to get the results from the Translator Service into a Unity-based sample application. Вы сможете применить эти понятия к настраиваемому приложению, которое вы можете собрать.It will be up to you to apply these concepts to a custom application you might be building.

Поддержка устройствDevice support

КурсCourse HoloLensHoloLens Иммерсивные гарнитурыImmersive headsets
301. Смешанная реальность и Azure: перевод с одного языка на другойMR and Azure 301: Language translation ✔️✔️ ✔️✔️

Примечание

Хотя этот курс в основном ориентирован на гарнитуры Windows Mixed Reality (VR), вы также можете применить сведения, которые вы узнаете в этом курсе, к 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. Как вы пройдете вместе с курсом, вы увидите примечания о любых изменениях, которые могут потребоваться для поддержки HoloLens.As you follow along with the course, you will see notes on any changes you might need to employ to support HoloLens. При использовании HoloLens вы можете заметить некоторые эхо во время записи голоса.When using HoloLens, you may notice some echo during voice capture.

Предварительные требованияPrerequisites

Примечание

Этот учебник предназначен для разработчиков, имеющих базовый опыт работы с Unity и C#.This tutorial is designed for developers who have basic experience with Unity and C#. Также имейте в виду, что предварительные требования и письменные инструкции в этом документе отражают, что проверялось и проверено во время написания статьи (Май 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). Вы можете использовать новейшее программное обеспечение, как указано в статье Установка средств , но не следует предполагать, что информация в этом курсе будет полностью соответствовать тому, что вы найдете в более новом программном обеспечении, чем показано ниже.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.

Для этого курса рекомендуется следующее оборудование и программное обеспечение:We recommend the following hardware and software for this course:

Перед началом работыBefore you start

  • Чтобы избежать проблем при создании этого проекта, настоятельно рекомендуется создать проект, упомянутый в этом руководстве, в корневой или ближайшем к корневой папке (длинные пути к папкам могут вызвать проблемы во время сборки).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).

  • Код в этом учебнике позволит вам записывать данные с микрофона по умолчанию, подключенного к компьютеру.The code in this tutorial will allow you to record from the default microphone device connected to your PC. Убедитесь, что в качестве устройства микрофона по умолчанию выбрано устройство, которое планируется использовать для записи голоса.Make sure the default microphone device is set to the device you plan to use to capture your voice.

  • Чтобы разрешить компьютеру Включить диктовку, перейдите в раздел параметры > конфиденциальность > речь, ввод рукописных данных & ввода и нажмите кнопку включить речевые службы и введите предложения.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.

  • Если вы используете микрофон и наушники, подключенные к гарнитуре (или встроенные в), убедитесь, что параметр "при износе гарнитуры, переключиться на микрофон гарнитуры" включен в параметрах > смешанной реальности > аудио и речь.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.

    Параметры смешанной реальности

    Настройка микрофона

Предупреждение

Имейте в виду, что если вы разрабатываете для использования в этой лаборатории экспериментальной гарнитуры, вы можете столкнуться с проблемами устройств вывода звука.Be aware that if you are developing for an immersive headset for this lab, you may experience audio output device issues. Это вызвано проблемой с Unity, которая исправлена в более поздних версиях Unity (Unity 2018,2).This is due to an issue with Unity, which is fixed in later versions of Unity (Unity 2018.2). Эта ошибка предотвращает изменение устройства выхода звука по умолчанию во время выполнения.The issue prevents Unity from changing the default audio output device at run time. Для решения этой проблемы убедитесь, что вы выполнили описанные выше действия, а затем закройте и снова откройте редактор, когда эта проблема будет представлена.As a work around, ensure you have completed the above steps, and close and re-open the Editor, when this issue presents itself.

Глава 1 — портал AzureChapter 1 – The Azure Portal

Чтобы использовать API-интерфейс Azure Translator, необходимо настроить экземпляр службы, чтобы сделать его доступным для приложения.To use the Azure Translator API, you will need to configure an instance of the Service to be made available to your application.

  1. Войдите на портал Azure.Log in to the Azure Portal.

    Примечание

    Если у вас еще нет учетной записи Azure, необходимо создать ее.If you do not already have an Azure account, you will need to create one. Если вы используете этот учебник в учебной или лабораторной ситуации, обратитесь к своему преподавателю или к одной из прокторс, чтобы получить помощь в настройке новой учетной записи.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. После входа щелкните New (создать ) в левом верхнем углу и выполните поиск по запросу «API перевода текстов».Once you are logged in, click on New in the top left corner and search for "Translator Text API." Нажмите клавишу ВВОД.Select Enter.

    Новый ресурс

    Примечание

    Слово New может быть заменено на создать ресурс в новых порталах.The word New may have been replaced with Create a resource, in newer portals.

  3. На новой странице будет представлено описание службы API перевода текстов .The new page will provide a description of the Translator Text API Service. В нижнем левом углу этой страницы нажмите кнопку создать , чтобы создать связь с этой службой.At the bottom left of this page, select the Create button, to create an association with this Service.

    Создание службы API перевода текстов

  4. После нажатия кнопки создать:Once you have clicked on Create:

    1. Вставьте нужное имя для этого экземпляра службы.Insert your desired Name for this Service instance.

    2. Выберите подходящую подписку.Select an appropriate Subscription.

    3. Выберите ценовую категорию , подходящую для вас. Если вы впервые создаете службу перевод текстов, вам будет доступен бесплатный уровень (с именем F0).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. Выберите группу ресурсов или создайте новую.Choose a Resource Group or create a new one. Группа ресурсов предоставляет способ мониторинга, контроля доступа, подготовки счетов и управления ими для коллекции ресурсов Azure.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. Рекомендуется, чтобы все службы Azure, связанные с одним проектом (например, в этих лабораториях), были в общей группе ресурсов.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).

      Если вы хотите ознакомиться с дополнительными сведениями о группах ресурсов Azure, обратитесь к статье о группе ресурсов.If you wish to read more about Azure Resource Groups, please visit the resource group article.

    5. Определите Расположение группы ресурсов (при создании новой группы ресурсов).Determine the Location for your resource group (if you are creating a new Resource Group). В идеале это расположение будет находиться в регионе, в котором будет выполняться приложение.The location would ideally be in the region where the application would run. Некоторые ресурсы Azure доступны только в определенных регионах.Some Azure assets are only available in certain regions.

    6. Также необходимо подтвердить, что вы поняли условия, примененные к этой службе.You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    7. Нажмите кнопку создания.Select Create.

      Нажмите кнопку Создать.

  5. После нажатия кнопки создать необходимо подождать, пока не будет создана служба, а это может занять некоторое время.Once you have clicked on Create, you will have to wait for the Service to be created, this might take a minute.

  6. После создания экземпляра службы на портале отобразится уведомление.A notification will appear in the portal once the Service instance is created.

    Уведомление о создании службы Azure

  7. Щелкните уведомление, чтобы просмотреть новый экземпляр службы.Click on the notification to explore your new Service instance.

    Перейдите к всплывающему окну ресурсов.

  8. Нажмите кнопку " Переход к ресурсу " в уведомлении, чтобы изучить новый экземпляр службы.Click the Go to resource button in the notification to explore your new Service instance. Вы будете перенаправлены на новый экземпляр службы API перевода текстов.You will be taken to your new Translator Text API Service instance.

    Страница службы API перевода текстов

  9. В рамках этого руководства приложение должно будет вызывать службу, что выполняется с помощью ключа подписки вашей службы.Within this tutorial, your application will need to make calls to your Service, which is done through using your Service’s Subscription Key.

  10. На странице быстрого запуска службы перевод текстов перейдите к первому шагу, Возьмите ключи и щелкните ключи (это можно также сделать, щелкнув синие клавиши-гиперссылки, расположенные в меню навигации службы, обозначенном значком ключа).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). При этом будут раскрыты ключи службы.This will reveal your Service Keys.

  11. Сделайте копию одного из отображаемых ключей, так как это потребуется позже в проекте.Take a copy of one of the displayed keys, as you will need this later in your project.

Глава 2 — Настройка проекта UnityChapter 2 – Set up the Unity project

Настройка и тестирование иммерсивного наушников смешанной реальности.Set up and test your mixed reality immersive headset.

Примечание

Для этого курса не потребуется контроллеры движения.You will not need motion controllers for this course. Если вам нужна поддержка настройки иммерсивного головного телефона, выполните следующие действия.If you need support setting up an immersive headset, please follow these steps.

Ниже приведена типичная Настройка для разработки с использованием смешанной реальности и, как таковая, является хорошим шаблоном для других проектов:The following is a typical set up for developing with mixed reality and, as such, is a good template for other projects:

  1. Откройте Unity и нажмите кнопку создать.Open Unity and click New.

    Запуск нового проекта Unity.

  2. Теперь необходимо указать имя проекта Unity.You will now need to provide a Unity Project name. Вставка MR_Translation.Insert MR_Translation. Убедитесь, что для типа проекта задано значение 3D.Make sure the project type is set to 3D. Задайте для расположения нужное расположение (Помните, что ближе к корневым каталогам лучше).Set the Location to somewhere appropriate for you (remember, closer to root directories is better). Затем нажмите кнопку создать проект.Then, click Create project.

    Укажите сведения о новом проекте Unity.

  3. При открытом Unity стоит проверить, что для редактора скриптов по умолчанию задано значение Visual Studio.With Unity open, it is worth checking the default Script Editor is set to Visual Studio. Перейдите к разделу изменение параметров > , а затем в новом окне перейдите к разделу Внешние инструменты.Go to Edit > Preferences and then from the new window, navigate to External Tools. Измените Редактор внешних скриптов на Visual Studio 2017.Change External Script Editor to Visual Studio 2017. Закройте окно настройки .Close the Preferences window.

    Обновить настройки редактора скриптов.

  4. Затем перейдите в раздел файл > параметры сборки и переключите платформу на универсальная платформа Windows, нажав кнопку коммутатора платформы .Next, go to File > Build Settings and switch the platform to Universal Windows Platform, by clicking on the Switch Platform button.

    Окно "параметры сборки". Переключите платформу в UWP.

  5. Перейдите в раздел файл > параметры сборки и убедитесь в том, что:Go to File > Build Settings and make sure that:

    1. Целевое устройство настроено для любого устройства.Target Device is set to Any Device.

      Для Microsoft HoloLens задайте для параметра целевое устройство значение HoloLens.For Microsoft HoloLens, set Target Device to HoloLens.

    2. Для типа сборки задано значение D3DBuild Type is set to D3D

    3. Пакет SDK установлен в значение " Последняя установка "SDK is set to Latest installed

    4. Для версии Visual Studio установлено значение " Последняя установка "Visual Studio Version is set to Latest installed

    5. Сборка и запуск настроены на локальный компьютерBuild and Run is set to Local Machine

    6. Сохраните сцену и добавьте ее в сборку.Save the scene and add it to the build.

      1. Для этого выберите Добавить открытые сцены.Do this by selecting Add Open Scenes. Появится окно сохранения.A save window will appear.

        Нажмите кнопку Добавить кнопку "открыть сцены"

      2. Создайте новую папку для этого, а также любой будущей сцены, а затем нажмите кнопку создать папку , чтобы создать новую папку, назовите ее « сцены».Create a new folder for this, and any future, scene, then select the New folder button, to create a new folder, name it Scenes.

        Создать новую папку скриптов

      3. Откройте только что созданную папку сцены , а затем в поле имя файла: введите MR_TranslationScene, а затем нажмите кнопку сохранить.Open your newly created Scenes folder, and then in the File name: text field, type MR_TranslationScene, then press Save.

        Присвойте имя новой сцене.

        Помните, что сцены Unity необходимо сохранять в папке Assets , так как они должны быть связаны с проектом Unity.Be aware, you must save your Unity scenes within the Assets folder, as they must be associated with the Unity Project. Создание папки «сцены» (и других аналогичных папок) — типичный способ структуризации проекта Unity.Creating the scenes folder (and other similar folders) is a typical way of structuring a Unity project.

    7. Оставшиеся параметры, в параметрах сборки, должны быть оставлены по умолчанию.The remaining settings, in Build Settings, should be left as default for now.

  6. В окне параметры сборки нажмите кнопку Параметры проигрывателя , чтобы открыть связанную панель в пространстве, где находится инспектор .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.

    Откройте параметры проигрывателя.

  7. На этой панели необходимо проверить несколько параметров:In this panel, a few settings need to be verified:

    1. На вкладке другие параметры выполните следующие действия.In the Other Settings tab:

      1. Версия среды выполнения сценариев должна быть стабильной (эквивалент .NET 3,5).Scripting Runtime Version should be Stable (.NET 3.5 Equivalent).

      2. Серверная часть сценариев должна быть .NETScripting Backend should be .NET

      3. Уровень совместимости API должен быть .NET 4,6API Compatibility Level should be .NET 4.6

        Обновите другие параметры.

    2. На вкладке Параметры публикации в разделе возможности установите флажок:Within the Publishing Settings tab, under Capabilities, check:

      1. InternetClient;InternetClient

      2. МикрофонMicrophone

        Обновляются параметры публикации.

    3. На более низких панели в параметрах XR (см. ниже Параметры публикации), поддерживаемая виртуальная реальность Tick, убедитесь, что добавлен пакет SDK для Windows Mixed Reality .Further down the panel, in XR Settings (found below Publish Settings), tick Virtual Reality Supported, make sure the Windows Mixed Reality SDK is added.

      Обновите параметры X R.

  8. Вернемся к параметрам сборки. проекты C# для Unity больше не заключаются; Установите флажок рядом с этим.Back in Build Settings, Unity C# Projects is no longer greyed out; tick the checkbox next to this.

  9. Закройте окно Build Settings (Параметры сборки).Close the Build Settings window.

  10. Сохраните сцену и проект (файл > сохранить сцену или файл > сохранить проект).Save your Scene and Project (FILE > SAVE SCENE / FILE > SAVE PROJECT).

Глава 3 — Настройка основной камерыChapter 3 – Main Camera setup

Важно!

Если вы хотите пропустить компонент установки Unity, установленный в этом курсе, и продолжить работу с кодом, Скачайте этот файл. пакет unitypackage, импортируйте его в проект как пользовательский пакет, а затем продолжайте в главе 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. Вам все равно придется создать проект Unity.You will still need to create a Unity Project.

  1. На панели Иерархия вы найдете объект с названием Главная камера, этот объект представляет "головную точку представления", когда вы "внутри приложения".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. На панели мониторинга Unity перед вами выберите основную камеру GameObject.With the Unity Dashboard in front of you, select the Main Camera GameObject. Вы заметите, что на панели инспектора (как правило, на панели мониторинга) отображаются различные компоненты этого GameObject, с помощью кнопки преобразовывать в верхней части, за которой следует Камера и некоторые другие компоненты.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. Необходимо будет сбросить преобразование основной камеры, чтобы она правильно расположиться.You will need to reset the Transform of the Main Camera, so it is positioned correctly.

  3. Для этого щелкните значок шестеренки рядом с компонентом преобразования камеры и выберите Сброс.To do this, select the Gear icon next to the Camera’s Transform component, and selecting Reset.

    Сброс основного преобразования камеры.

  4. Компонент преобразования должен выглядеть следующим образом:The Transform component should then look like:

    1. Для этой должности задано значение 0, 0, 0The Position is set to 0, 0, 0

    2. Для вращения задано значение 0, 0, 0Rotation is set to 0, 0, 0

    3. Для параметра Scale устанавливается значение 1, 1, 1 .And Scale is set to 1, 1, 1

      Сведения о преобразовании для камеры

  5. Затем, выбрав основной объект Camera , ознакомьтесь с разрядом с кнопкой Добавить компонент , расположенной в самом низу панели инспектора.Next, with the Main Camera object selected, see the Add Component button located at the very bottom of the Inspector Panel.

  6. Выберите эту кнопку и выполните поиск (для этого введите " аудио-источник " в поле поиска или перейдите к разделам) для компонента с названием " источник звука ", как показано ниже, и выберите его (нажмите клавишу ВВОД на нем).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. Компонент " звуковый источник " будет добавлен на основную камеру, как показано ниже.An Audio Source component will be added to the Main Camera, as demonstrated below.

    Добавьте компонент "источник звука".

    Примечание

    Для Microsoft HoloLens необходимо также изменить следующие компоненты, которые являются частью компонента камеры на основной камере:For Microsoft HoloLens, you will need to also change the following, which are part of the Camera component on your Main Camera:

    • Снять флаги: Сплошной цвет.Clear Flags: Solid Color.
    • Фоновый режим "Черный, альфа 0" — шестнадцатеричный цвет: #00000000.Background ‘Black, Alpha 0’ – Hex color: #00000000.

Глава 4 — настройка отладочного холстаChapter 4 – Setup Debug Canvas

Чтобы отобразить входные и выходные данные перевода, необходимо создать базовый пользовательский интерфейс.To show the input and output of the translation, a basic UI needs to be created. В этом курсе вы создадите объект пользовательского интерфейса Canvas с несколькими объектами "Text" для отображения данных.For this course, you will create a Canvas UI object, with several ‘Text’ objects to show the data.

  1. Щелкните правой кнопкой мыши пустую область панели Иерархия, в разделе Пользовательский интерфейс добавьте холст.Right-click in an empty area of the Hierarchy Panel, under UI, add a Canvas.

    Добавить новый объект пользовательского интерфейса Canvas.

  2. Выбрав объект Canvas, на панели инспектора (в компоненте Canvas) измените режим рендеринга на мировое пространство.With the Canvas object selected, in the Inspector Panel (within the ‘Canvas’ component), change Render Mode to World Space.

  3. Затем измените следующие параметры в преобразовании Rect на панели инспектора: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. Ширина — 500Width - 500

    3. Высота 300Height - 300

    4. Масштаб - X 0,13 Y 0,13 Z 0,13Scale - X 0.13 Y 0.13 Z 0.13

      Обновите преобразование Rect для холста.

  4. Щелкните правой кнопкой мыши холст на панели Иерархия, в разделе Пользовательский интерфейс и добавьте панель.Right click on the Canvas in the Hierarchy Panel, under UI, and add a Panel. Эта панель предоставит фон текста, который будет отображаться в сцене.This Panel will provide a background to the text that you will be displaying in the scene.

  5. Щелкните правой кнопкой мыши панель на панели Иерархия, в разделе Пользовательский интерфейс и добавьте текстовый объект.Right click on the Panel in the Hierarchy Panel, under UI, and add a Text object. Повторяйте тот же процесс, пока вы не создадите четыре текстовых объекта пользовательского интерфейса в целом (Подсказка: если у вас есть первый объект "Text", можно просто нажать клавишу "Ctrl" + "+ 'd", чтобы продублировать его, пока не будет всего четыре).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. Для каждого текстового объекта выберите его и используйте приведенные ниже таблицы, чтобы задать параметры на панели инспектора.For each Text Object, select it and use the below tables to set the parameters in the Inspector Panel.

    1. Для компонента преобразования Rect :For the Rect Transform component:

      ИмяName Transform- позиционированиеTransform - Position ШиринаWidth Высота:Height
      микрофонестатуслабелMicrophoneStatusLabel X -80 Y 90 Z 0X -80 Y 90 Z 0 300300 3030
      азуререспонселабелAzureResponseLabel X -80 Y 30 Z 0X -80 Y 30 Z 0 300300 3030
      диктатионлабелDictationLabel X -80 Y – 30 Z 0X -80 Y -30 Z 0 300300 3030
      транслатионресултлабелTranslationResultLabel X -80 Y -90 Z 0X -80 Y -90 Z 0 300300 3030
    2. Для компонента Text (script) :For the Text (Script) component:

      ИмяName ТекстText Размер шрифтаFont Size
      микрофонестатуслабелMicrophoneStatusLabel Состояние микрофона:Microphone Status: 2020
      азуререспонселабелAzureResponseLabel Веб-ответ AzureAzure Web Response 2020
      диктатионлабелDictationLabel Вы только что сказали:You just said: 2020
      транслатионресултлабелTranslationResultLabel Перевод:Translation: 2020

      Введите соответствующие значения для меток пользовательского интерфейса.

    3. Кроме того, сделайте шрифт полужирным.Also, make the Font Style Bold. Это упростит чтение текста.This will make the text easier to read.

      Полужирный шрифт.

  7. Для каждого объекта текста пользовательского интерфейса , созданного в главе 5, создайте новый дочерний текстовый объект пользовательского интерфейса.For each UI Text object created in Chapter 5, create a new child UI Text object. Эти дочерние элементы будут отображать выходные данные приложения.These children will display the output of the application. Создайте дочерние объекты, щелкнув правой кнопкой мыши предполагаемый родительский объект (например, микрофонестатуслабел), а затем выберите пункт Пользовательский интерфейс , а затем выберите пункт текст.Create child objects through right-clicking your intended parent (e.g. MicrophoneStatusLabel) and then select UI and then select Text.

  8. Для каждого из этих дочерних элементов выберите его и используйте приведенные ниже таблицы, чтобы задать параметры на панели инспектора.For each of these children, select it and use the below tables to set the parameters in the Inspector Panel.

    1. Для компонента преобразования Rect :For the Rect Transform component:

      ИмяName Transform- позиционированиеTransform - Position ШиринаWidth Высота:Height
      микрофонестатустекстMicrophoneStatusText X 0 Y – 30 Z 0X 0 Y -30 Z 0 300300 3030
      азуререспонсетекстAzureResponseText X 0 Y – 30 Z 0X 0 Y -30 Z 0 300300 3030
      диктатионтекстDictationText X 0 Y – 30 Z 0X 0 Y -30 Z 0 300300 3030
      транслатионресулттекстTranslationResultText X 0 Y – 30 Z 0X 0 Y -30 Z 0 300300 3030
    2. Для компонента Text (script) :For the Text (Script) component:

      ИмяName ТекстText Размер шрифтаFont Size
      микрофонестатустекстMicrophoneStatusText ???? 2020
      азуререспонсетекстAzureResponseText ???? 2020
      диктатионтекстDictationText ???? 2020
      транслатионресулттекстTranslationResultText ???? 2020
  9. Затем выберите параметр выравнивания "центр" для каждого текстового компонента:Next, select the 'centre' alignment option for each text component:

    Выровняйте текст.

  10. Чтобы обеспечить простоту чтения дочерних объектов пользовательского интерфейса , измените их Цвет.To ensure the child UI Text objects are easily readable, change their Color. Для этого щелкните полосу (в настоящий момент черная) рядом с пунктом Цвет.Do this by clicking on the bar (currently ‘Black’) next to Color.

    Введите соответствующие значения для вывода текста пользовательского интерфейса.

  11. Затем в окне новое, небольшое цветовое значение измените шестнадцатеричный цвет на: 0032EAFF .Then, in the new, little, Color window, change the Hex Color to: 0032EAFF

    Измените цвет на синий.

  12. Ниже показано, как должен выглядеть Пользовательский интерфейс .Below is how the UI should look.

    1. На панели Иерархия:In the Hierarchy Panel:

      Иметь иерархию в предоставленной структуре.

    2. В представлениях сцены и игры:In the Scene and Game Views:

      Отображение сцен и игровых представлений в одной и той же структуре.

Глава 5 — Создание класса ResultsChapter 5 – Create the Results class

Первый скрипт, который необходимо создать, — это класс Results , который отвечает за предоставление способа просмотра результатов перевода.The first script you need to create is the Results class, which is responsible for providing a way to see the results of translation. Класс сохраняет и отображает следующее:The Class stores and displays the following:

  • Результат ответа из Azure.The response result from Azure.
  • Состояние микрофона.The microphone status.
  • Результат диктовки (Voice to Text).The result of the dictation (voice to text).
  • Результат перевода.The result of the translation.

Чтобы создать этот класс, сделайте следующее:To create this class:

  1. Щелкните правой кнопкой мыши на панели проект, а затем Создайте > папку.Right-click in the Project Panel, then Create > Folder. Назовите папку Scripts.Name the folder Scripts.

    Создайте папку Scripts.

    Откройте папку «скрипты».

  2. Создав папку Scripts , дважды щелкните ее, чтобы открыть.With the Scripts folder create, double click it to open. Затем в этой папке щелкните правой кнопкой мыши и выберите создать > затем скрипт C#.Then within that folder, right-click, and select Create > then C# Script. Назовите результаты скрипта.Name the script Results.

    Создайте первый скрипт.

  3. Дважды щелкните новый скрипт Results , чтобы открыть его в Visual Studio.Double click on the new Results script to open it with Visual Studio.

  4. Вставьте следующие пространства имен:Insert the following namespaces:

        using UnityEngine;
        using UnityEngine.UI;
    
  5. Внутри класса вставьте следующие переменные: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. Затем добавьте метод " спящий () ", который будет вызываться при инициализации класса.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. Наконец, добавьте методы, которые отвечают за вывод различных сведений о результатах в пользовательский интерфейс.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. Не забудьте сохранить изменения в Visual Studio перед возвратом в Unity.Be sure to save your changes in Visual Studio before returning to Unity.

Глава 6 — создание класса микрофонеманажерChapter 6 – Create the MicrophoneManager class

Второй класс, который предстоит создать, — это микрофонеманажер.The second class you are going to create is the MicrophoneManager.

Этот класс отвечает за:This class is responsible for:

  • Обнаружение устройства записи, подключенного к гарнитуре или компьютеру (в зависимости от значения по умолчанию).Detecting the recording device attached to the headset or machine (whichever is the default).
  • Запишите звук (голосовой) и используйте диктовку, чтобы сохранить ее в виде строки.Capture the audio (voice) and use dictation to store it as a string.
  • После приостановки голоса отправьте диктовку в класс Translator.Once the voice has paused, submit the dictation to the Translator class.
  • Разместите метод, который может при необходимости прекращать запись речи.Host a method that can stop the voice capture if desired.

Чтобы создать этот класс, сделайте следующее:To create this class:

  1. Дважды щелкните папку Scripts , чтобы открыть ее.Double click on the Scripts folder, to open it.

  2. Щелкните правой кнопкой мыши в папке Scripts и выберите создать > скрипт C#.Right-click inside the Scripts folder, click Create > C# Script. Назовите сценарий микрофонеманажер.Name the script MicrophoneManager.

  3. Дважды щелкните новый скрипт, чтобы открыть его в Visual Studio.Double click on the new script to open it with Visual Studio.

  4. Обновите пространства имен, как показано ниже, в верхней части класса микрофонеманажер :Update the namespaces to be the same as the following, at the top of the MicrophoneManager class:

        using UnityEngine; 
        using UnityEngine.Windows.Speech;
    
  5. Затем добавьте следующие переменные в класс микрофонеманажер :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. Теперь необходимо добавить код для методов спящего режима () и Start () .Code for the Awake() and Start() methods now needs to be added. Они будут вызываться при инициализации класса: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. Метод Update () можно Удалить , так как этот класс не будет его использовать.You can delete the Update() method since this class will not use it.

  8. Теперь вам потребуются методы, которые приложение использует для запуска и завершения записи речи, и передайте его классу Translator , который вы будете создавать в ближайшее время.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. Скопируйте приведенный ниже код и вставьте его под методом 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(); 
        }
    

    Совет

    Несмотря на то, что это приложение не будет использовать его, в этой статье также приведен метод стопкаптурингаудио () , который позволяет реализовать возможность отмены записи звука в приложении.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. Теперь необходимо добавить обработчик диктовки, который будет вызываться при остановке голоса.You now need to add a Dictation Handler that will be invoked when the voice stops. Затем этот метод передает продиктованный текст классу Translator .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. Не забудьте сохранить изменения в Visual Studio перед возвратом в Unity.Be sure to save your changes in Visual Studio before returning to Unity.

Предупреждение

На этом этапе вы увидите ошибку на панели консоли редактора Unity ("имя" Translator "не существует...").At this point you will notice an error appearing in the Unity Editor Console Panel (“The name ‘Translator’ does not exist...”). Это обусловлено тем, что код ссылается на класс Translator , который будет создан в следующей главе.This is because the code references the Translator class, which you will create in the next chapter.

Глава 7 — вызов службы Azure и переводчикаChapter 7 – Call to Azure and translator service

Последний скрипт, который необходимо создать, — это класс Translator .The last script you need to create is the Translator class.

Этот класс отвечает за:This class is responsible for:

  • Проверка подлинности приложения в Azure в Exchange для токена проверки подлинности.Authenticating the App with Azure, in exchange for an Auth Token.
  • Используйте токен проверки подлинности для передачи текста (полученного от класса микрофонеманажер ) для перевода.Use the Auth Token to submit text (received from the MicrophoneManager Class) to be translated.
  • Получение переведенного результата и передача его в класс Results для визуализации в пользовательском интерфейсе.Receive the translated result and pass it to the Results Class to be visualized in the UI.

Чтобы создать этот класс, сделайте следующее:To create this Class:

  1. Перейдите к созданной ранее папке Scripts .Go to the Scripts folder you created previously.

  2. Щелкните правой кнопкой мыши на панели проект, Создайте > скрипт C#.Right-click in the Project Panel, Create > C# Script. Вызовите транслятор скриптов.Call the script Translator.

  3. Дважды щелкните новый скрипт переводчика , чтобы открыть его в Visual Studio.Double click on the new Translator script to open it with Visual Studio.

  4. Добавьте следующие пространства имен в начало файла: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. Затем добавьте следующие переменные в класс 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; 
    

    Примечание

    • Языки, вставленные в перечисление языков, являются просто примерами.The languages inserted into the languages enum are just examples. Вы можете добавить дополнительные сведения, если хотите. API поддерживает более 60 языков (включая марсианского)!Feel free to add more if you wish; the API supports over 60 languages (including Klingon)!
    • Существует более интерактивная страница, охватывающая доступные языки, хотя имейте в виду, что страница работает только в том случае, если для языка сайта задано значение "" (а веб-сайт Майкрософт, скорее всего, перенаправляется на ваш собственный язык).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). Язык сайта можно изменить в нижней части страницы или путем изменения URL-адреса.You can change site language at the bottom of the page or by altering the URL.
    • Значение authorizationkey согласно инструкциям в приведенном выше фрагменте кода должно быть ключом , полученным при оформлении подписки на API перевода текстов Azure.The authorizationKey value, in the above code snippet, must be the Key you received when you subscribed to the Azure Translator Text API. Это было рассмотрено в главе 1.This was covered in Chapter 1.
  6. Теперь необходимо добавить код для методов спящего режима () и Start () .Code for the Awake() and Start() methods now needs to be added.

  7. В этом случае код выполнит вызов Azure с помощью ключа авторизации, чтобы получить маркер.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); 
        }
    

    Примечание

    Срок действия маркера истечет через 10 минут.The token will expire after 10 minutes. В зависимости от сценария для приложения может потребоваться несколько раз выполнять один и тот же соподпрограммный вызов.Depending on the scenario for your app, you might have to make the same coroutine call multiple times.

  8. Для получения маркера используется следующая соподпрограмма: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();
        }
    

    Предупреждение

    При изменении имени метода IEnumerator жеттокенкораутине () необходимо обновить значения строк вызова старткораутине и стопкораутине в приведенном выше коде.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. Как и в случае с документацией Unity, для отмены конкретной соподпрограммы необходимо использовать метод строкового значения.As per Unity documentation, to Stop a specific Coroutine, you need to use the string value method.

  9. Затем добавьте соподпрограмму (с помощью метода потока поддержки прямо под ним), чтобы получить перевод текста, полученного классом микрофонеманажер .Next, add the coroutine (with a “support” stream method right below it) to obtain the translation of the text received by the MicrophoneManager class. Этот код создает строку запроса для отправки в API перевода текстов Azure, а затем использует внутренний класс Unity унитивебрекуест для выполнения вызова Get к конечной точке со строкой запроса.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. Затем результат используется для задания перевода в объекте Results.The result is then used to set the translation in your Results object. В приведенном ниже коде показана реализация: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. Не забудьте сохранить изменения в Visual Studio перед возвратом в Unity.Be sure to save your changes in Visual Studio before returning to Unity.

Глава 8 — Настройка сцены UnityChapter 8 – Configure the Unity Scene

  1. В редакторе Unity щелкните и перетащите класс Results из папки сценарии в объект Main на панели Иерархия.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. Щелкните основную камеру и посмотрите на Панель инспектора.Click on the Main Camera and look at the Inspector Panel. Вы заметите, что в вновь добавленном компоненте скрипта есть четыре поля с пустыми значениями.You will notice that within the newly added Script component, there are four fields with empty values. Это выходные ссылки на свойства в коде.These are the output references to the properties in the code.

  3. Перетащите соответствующие текстовые объекты с панели Иерархия в эти четыре слота, как показано на рисунке ниже.Drag the appropriate Text objects from the Hierarchy Panel to those four slots, as shown in the image below.

    Обновить ссылки на целевые объекты указанными значениями.

  4. Затем перетащите класс Translator из папки Scripts в главный объект Camera на панели Иерархия.Next, click and drag the Translator class from the Scripts folder to the Main Camera object in the Hierarchy Panel.

  5. Затем перетащите класс микрофонеманажер из папки Scripts в основной объект Camera на панели Иерархия.Then, click and drag the MicrophoneManager class from the Scripts folder to the Main Camera object in the Hierarchy Panel.

  6. Наконец, щелкните основную камеру и посмотрите на Панель инспектора.Lastly, click on the Main Camera and look at the Inspector Panel. Вы заметите, что в скрипте, который вы перетащили, есть два раскрывающихся списка, которые позволяют задать языки.You will notice that in the script you dragged on, there are two drop down boxes that will allow you to set the languages.

    Убедитесь, что нужные языки перевода введены.

Глава 9 — тестирование в смешанной реальностиChapter 9 – Test in mixed reality

На этом этапе необходимо проверить, правильно ли реализована сцена.At this point you need to test that the Scene has been properly implemented.

Убедитесь в следующем:Ensure that:

  • Все параметры, упомянутые в главе 1 , заданы правильно.All the settings mentioned in Chapter 1 are set correctly.
  • Результаты, переводчики и микрофонеманажер присоединяются к главному объекту Camera .The Results, Translator, and MicrophoneManager, scripts are attached to the Main Camera object.
  • Вы поместили ключ службы API перевода текстов Azure в переменную authorizationkey согласно инструкциям в скрипте переводчика .You have placed your Azure Translator Text API Service Key within the authorizationKey variable within the Translator Script.
  • Все поля на панели инспектора основной камеры назначены должным образом.All the fields in the Main Camera Inspector Panel are assigned properly.
  • Микрофон работает при запуске сцены (если нет, убедитесь, что подключенный микрофон является устройством по умолчанию и что вы правильно настроили его в 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).

Можно протестировать иммерсивное гарнитуру, нажав кнопку воспроизвести в редакторе Unity.You can test the immersive headset by pressing the Play button in the Unity Editor. Приложение должно работать через присоединенную иммерсивное гарнитуру.The App should be functioning through the attached immersive headset.

Предупреждение

Если в консоли Unity появляется сообщение об ошибке о смене звукового устройства по умолчанию, возможно, сцена не работает должным образом.If you see an error in the Unity console about the default audio device changing, the scene may not function as expected. Это связано с тем, как портал смешанной реальности работает со встроенными микротелефонами для гарнитур, имеющих их.This is due to the way the mixed reality portal deals with built-in microphones for headsets that have them. Если вы видите эту ошибку, просто закройте сцену и снова запустите ее, и она должна работать должным образом.If you see this error, simply stop the scene and start it again and things should work as expected.

Глава 10 — Создание решения UWP и загружать неопубликованные на локальном компьютереChapter 10 – Build the UWP solution and sideload on local machine

Все необходимое для раздела Unity этого проекта теперь завершено, поэтому пришло время создать его из Unity.Everything needed for the Unity section of this project has now been completed, so it is time to build it from Unity.

  1. Выберите параметры сборки: файл > параметры сборки...Navigate to Build Settings: File > Build Settings...

  2. В окне " параметры сборки " щелкните Сборка.From the Build Settings window, click Build.

    Создание сцены Unity.

  3. Если это еще не так, то проект Tick Unity C#.If not already, tick Unity C# Projects.

  4. Щелкните Построить.Click Build. Unity запустит окно проводника , в котором необходимо создать, а затем выбрать папку для сборки приложения.Unity will launch a File Explorer window, where you need to create and then select a folder to build the app into. Создайте эту папку сейчас и назовите ее app Name.Create that folder now, and name it App. Затем выберите папку приложения и нажмите кнопку выбрать папку.Then with the App folder selected, press Select Folder.

  5. Unity начнет сборку проекта в папку приложения .Unity will begin building your project to the App folder.

  6. После того как Unity завершит сборку (может занять некоторое время), он откроет окно проводника в расположении сборки (проверьте панель задач, так как она может не всегда отображаться над окнами, но будет уведомлять о добавлении нового окна).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).

Глава 11 — развертывание приложенияChapter 11 – Deploy your application

Чтобы развернуть приложение, выполните следующие действия.To deploy your application:

  1. Перейдите к новой сборке Unity (папка приложения ) и откройте файл решения в Visual Studio.Navigate to your new Unity build (the App folder) and open the solution file with Visual Studio.

  2. В конфигурации решения выберите Отладка.In the Solution Configuration select Debug.

  3. На платформе решения выберите x86, локальный компьютер.In the Solution Platform, select x86, Local Machine.

    Для Microsoft HoloLens может быть проще установить этот параметр на Удаленный компьютер, чтобы вы не были подключены к компьютеру.For the Microsoft HoloLens, you may find it easier to set this to Remote Machine, so that you are not tethered to your computer. Однако необходимо также выполнить следующие действия.Though, you will need to also do the following:

    • Определите IP-адрес HoloLens, который можно найти в параметрах > сети & интернет > Wi-Fi > дополнительные параметры. IPv4 — это адрес, который следует использовать.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.
    • Убедитесь, что включен режим разработчика ; находится в параметрах > Update & > безопасности для разработчиков.Ensure Developer Mode is On; found in Settings > Update & Security > For developers.

    Разверните решение из Visual Studio.

  4. Перейдите в меню "сборка " и щелкните " Развернуть решение ", чтобы загружать неопубликованные приложение на компьютер.Go to Build menu and click on Deploy Solution to sideload the application to your PC.

  5. Теперь приложение должно отобразиться в списке установленных приложений, готовых к запуску.Your App should now appear in the list of installed apps, ready to be launched.

  6. После запуска приложение предложит авторизовать доступ к микрофону.Once launched, the App will prompt you to authorize access to the Microphone. Обязательно нажмите кнопку « Да ».Make sure to click the YES button.

  7. Теперь вы готовы начать трансляцию!You are now ready to start translating!

Законченное приложение API для перевода текстаYour finished Translation Text API application

Поздравляем! вы создали приложение смешанной реальности, которое использует API перевода текста Azure для преобразования речи в переведенный текст.Congratulations, you built a mixed reality app that leverages the Azure Translation Text API to convert speech to translated text.

Окончательный продукт.

Дополнительные упражненияBonus exercises

Упражнение 1Exercise 1

Можно ли добавить в приложение функции преобразования текста в речь, чтобы возвращаемый текст был произнесен?Can you add text-to-speech functionality to the app, so that the returned text is spoken?

Упражнение 2Exercise 2

Предоставление пользователю возможности изменять языки исходного и выходного кода ("с" и "на") в самом приложении, поэтому не требуется перестраивать приложение каждый раз, когда необходимо изменить языки.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.