HoloLens (1. generace) a Azure 301: Překlad jazyka


Poznámka

Kurzy Mixed Reality Academy byly navrženy s HoloLens (1. generace) a Mixed Reality na imerzivní náhlavní soupravy. Proto si myslíme, že je důležité ponechat tyto kurzy na místě pro vývojáře, kteří stále hledají pokyny při vývoji těchto zařízení. Tyto kurzy nebudou aktualizovány nejnovějšími sady nástrojů nebo interakcemi používanými pro HoloLens 2. Budou zachovány, aby pokračovaly v práci na podporovaných zařízeních. V budoucnu bude k dispozici nová série kurzů, které předvede vývoj pro HoloLens 2. Toto oznámení bude aktualizováno odkazem na tyto kurzy, když jsou publikovány.


V tomto kurzu se dozvíte, jak přidat možnosti překladu do aplikace hybridní reality pomocí Azure Cognitive Services s rozhraním API Translator Text.

Konečný produkt

Rozhraní Translator Text API je služba překladu, která funguje v reálném čase. Služba je cloudová a pomocí REST API volání může aplikace využít technologii neurálního strojového překladu k překladu textu do jiného jazyka. Další informace najdete na stránce rozhraní Azure Translator Text API.

Po dokončení tohoto kurzu budete mít aplikaci hybridní reality, která dokáže:

  1. Uživatel bude mluvit do mikrofonu připojeného k imerzivní náhlavní soupravě (VR) (nebo integrovanému mikrofonu HoloLens).
  2. Aplikace zachytí diktování a odešle ji do rozhraní Azure Translator Text API.
  3. Výsledek překladu se zobrazí v jednoduché skupině uživatelského rozhraní ve scéně Unity.

V tomto kurzu se naučíte, jak získat výsledky z Translator Service do ukázkové aplikace založené na Unity. Tyto koncepty budete muset použít u vlastní aplikace, kterou můžete vytvořit.

Podpora zařízení

Kurz HoloLens Imerzivní náhlavní soupravy
MR a Azure 301: Překlad jazyka ✔️ ✔️

Poznámka

I když se tento kurz zaměřuje především Windows Mixed Reality imerzivních náhlavních souprav (VR), můžete také použít to, co se v tomto kurzu naučíte, Microsoft HoloLens. Jak budete postupovat podle kurzu, uvidíte poznámky ke změnám, které možná budete muset použít pro podporu HoloLens. Při použití HoloLens si můžete všimnout nějakého odezvy během hlasového zachycení.

Požadavky

Poznámka

Tento kurz je určený pro vývojáře, kteří mají základní zkušenosti s Unity a C#. Upozorňujeme také, že požadavky a napsané pokyny v tomto dokumentu představují to, co bylo otestováno a ověřeno v době psaní tohoto dokumentu (květen 2018). Můžete používat nejnovější software, jak je uvedeno v článku o instalaci nástrojů, i když se předpokládá, že informace v tomto kurzu budou dokonale odpovídat informacím, které najdete v novějším softwaru, než je uvedeno níže.

Pro tento kurz doporučujeme následující hardware a software:

Než začnete

  • Pokud se chcete vyhnout problémům se sestavováním tohoto projektu, důrazně doporučujeme vytvořit projekt uvedený v tomto kurzu v kořenové nebo blízké kořenové složce (dlouhé cesty ke složce mohou způsobit problémy v době sestavení).

  • Kód v tomto kurzu vám umožní zaznamenávat data z výchozího zařízení mikrofonu připojeného k vašemu počítači. Ujistěte se, že je výchozí zařízení mikrofonu nastavené na zařízení, které chcete použít k zachycení hlasu.

  • Pokud chcete počítači povolit diktování, přejděte na Nastavení Privacy > Speech, & pište a vyberte tlačítko Zapnout hlasové služby a >.

  • Pokud používáte mikrofon a mikrofony připojené k náhlavní soupravě (nebo k náhlavní soupravě integrované), ujistěte se, že je zapnutá možnost "Když si náhlavní soupravu nosu, přepněte na mikrofon náhlavní soupravy" Nastavení hybridní realitě Zvuk a řeč . >

    Nastavení hybridní reality

    Nastavení mikrofonu

Upozornění

Uvědomte si, že pokud vyvíjíte pro imerzivní náhlavní soupravu pro toto cvičení, může dojít k problémům se zvukovým výstupním zařízením. Je to kvůli problému s Unity, který je opravený v novějších verzích Unity (Unity 2018.2). Tento problém brání Unity ve změně výchozího zvukového výstupního zařízení za běhu. Jako řešení se ujistěte, že jste dokončili výše uvedené kroky, a jakmile se tento problém projevuje, zavřete a znovu otevřete Editor.

1. kapitola – Azure Portal

Pokud chcete používat azure Translator API, budete muset nakonfigurovat instanci služby, aby byla pro vaši aplikaci dostupná.

  1. Přihlaste se k webu Azure Portal.

    Poznámka

    Pokud ještě nemáte účet Azure, budete si ho muset vytvořit. Pokud tento kurz postupuje v učebně nebo testovacím prostředí, požádejte o pomoc s nastavením nového účtu instruktora nebo jednoho z kurzů.

  2. Po přihlášení klikněte v levém horním rohu na Nový a vyhledejte "Translator Text API". Stiskněte Enter.

    Nový prostředek

    Poznámka

    Na novějších portálech může být slovo Nový nahrazenotextem Create a resource (Vytvořit prostředek).

  3. Nová stránka bude poskytovat popis služby Translator Text API. V levém dolním rohu této stránky vyberte tlačítko Vytvořit a vytvořte přidružení k této službě.

    Vytvoření Translator Text API Service

  4. Po kliknutí na Vytvořit:

    1. Vložte požadovaný název pro tuto instanci služby.

    2. Vyberte příslušné předplatné.

    3. Vyberte cenovou úroveň, která je pro vás vhodná. Pokud poprvé vytváříte službu Translator Text Service,měla by vám být k dispozici bezplatná úroveň (s názvem F0).

    4. Zvolte skupinu prostředků nebo vytvořte novou. Skupina prostředků poskytuje způsob, jak monitorovat, řídit přístup, zřídit a spravovat fakturaci kolekce prostředků Azure. Doporučujeme ponechat všechny služby Azure přidružené k jednomu projektu (například tato testovací prostředí) v rámci společné skupiny prostředků).

      Pokud si chcete přečíst další informace o skupinách prostředků Azure, navštivte prosím článek o skupině prostředků.

    5. Určete umístění vaší skupiny prostředků (pokud vytváříte novou skupinu prostředků). Umístění by v ideálním případě bylo v oblasti, ve které by se aplikace spouštěl. Některé prostředky Azure jsou k dispozici pouze v určitých oblastech.

    6. Budete také muset potvrdit, že rozumíte podmínkám a podmínkám, které se na tuto službu vztahují.

    7. Vyberte Vytvořit.

      Vyberte tlačítko Vytvořit.

  5. Po kliknutí na Vytvořitbudete muset počkat, než se služba vytvoří, může to trvat minutu.

  6. Po vytvoření instance služby se na portálu zobrazí oznámení.

    Oznámení o vytvoření služby Azure

  7. Klikněte na oznámení a prozkoumejte novou instanci služby.

    Přejděte do automaticky otevíraného okna prostředku.

  8. V oznámení klikněte na tlačítko Přejít k prostředku a prozkoumejte novou instanci služby. Budete ve vaší nové instanci služby Translator API Text.

    stránka Translator textových rozhraní API

  9. V tomto kurzu bude vaše aplikace muset volat vaši službu, což se provádí pomocí klíče předplatného vaší služby.

  10. Na stránce Rychlý start vaší služby Translator Text Service přejděte k prvnímu kroku Sbalte si klíče a klikněte na Klíče (můžete toho dosáhnout také kliknutím na modrý hypertextový odkaz Klíče, které najdete v navigační nabídce Služby a jsou označeny ikonou klíče). Tím se zobrazí vaše klíče služeb.

  11. Zkopírujte si jeden ze zobrazených klíčů, protože ho budete potřebovat později ve svém projektu.

Kapitola 2 – Nastavení projektu Unity

Nastavte a otestujte imerzivní náhlavní soupravu hybridní reality.

Poznámka

Pro tento kurz nepotřebujete ovladače pohybu. Pokud potřebujete podporu pro nastavení imerzivní náhlavní soupravy, postupujte podle těchto kroků.

Níže je obvyklé nastavení pro vývoj s hybridní realitou, a proto je dobrou šablonou pro jiné projekty:

  1. Otevřete Unity a klikněte na Nový.

    Spusťte nový projekt Unity.

  2. Teď budete muset zadat název Project Unity. Vložte MR_Translation. Ujistěte se, že typ projektu je nastavený na 3D. Nastavte Umístění na nějaké vhodné místo (nezapomeňte, že blíže ke kořenovým adresářům je lepší). Pak klikněte na Create project (Vytvořit projekt).

    Zadejte podrobnosti o novém projektu Unity.

  3. Když je Unity otevřená, stojí za to zkontrolovat, že výchozí Editor skriptů je nastavený na Visual Studio. Přejděte na Upravit předvolby a pak v novém okně přejděte na Externí nástroje. Změňte Editor externích skriptů na Visual Studio 2017. Zavřete okno Předvolby.

    Aktualizujte předvolby editoru skriptů.

  4. Potom přejděte do části File Build Nastavení (Sestavení souboru) a kliknutím na tlačítko Switch Platform (Přepnout platformu) přepněte platformu na Universal Windows Platform.

    Sestavte Nastavení, přepněte platformu na UPW.

  5. Přejděte na soubor buildu Nastavení a ujistěte se, že:

    1. Cílové zařízení je nastavené na Libovolné zařízení.

      Jako Microsoft HoloLens nastavte Cílové zařízení na HoloLens.

    2. Typ sestavení je nastavený na D3D.

    3. Sada SDK je nastavená na nejnovější nainstalovanou verzi.

    4. Visual Studio verze je nastavená na nejnovější nainstalovanou verzi.

    5. Možnost Sestavení a spuštění je nastavená na Místní počítač.

    6. Uložte scénu a přidejte ji do sestavení.

      1. To můžete udělat tak, že vyberete Přidat otevřené scény. Zobrazí se okno pro uložení.

        Kliknutí na tlačítko Přidat otevřené scény

      2. Vytvořte pro tuto a budoucí scénu novou složku, pak vyberte tlačítko Nová složka a vytvořte novou složku s názvem Scenes.

        Vytvoření nové složky scripts

      3. Otevřete nově vytvořenou složku Scenes a potom do textového pole Název souboru :zadejte MR_TranslationScenea stiskněte Uložit.

        Zadejte název nové scény.

        Uvědomte si, že scény Unity musíte uložit do složky Assets, protože musí být přidružené k unity Project. Typickým způsobem strukturování projektu Unity je vytvoření složky scenes (a dalších podobných složek).

    7. Zbývající nastavení v okně buildu Nastaveníby teď měla zůstat jako výchozí.

  6. V okně buildu Nastavení klikněte na tlačítko Player Nastavení ( Player Nastavení). Otevře se související panel v prostoru, kde se nachází inspektor.

    Otevřete nastavení přehrávače.

  7. Na tomto panelu je potřeba ověřit několik nastavení:

    1. Na kartě Nastavení:

      1. Verze skriptovacího modulu runtime by měla být stabilní (ekvivalentní .NET 3.5).

      2. Skriptovací back-end by měl být .NET.

      3. Úroveň kompatibility rozhraní API by měla být .NET 4.6.

        Aktualizujte další nastavení.

    2. Na kartě Publishing Nastavení v části Schopnosti zaškrtněte:

      1. InternetClient

      2. Mikrofon

        Aktualizace nastavení publikování

    3. Dále na panelu v XR Nastavení (viz níže Publish Nastavení)(Publikovat Nastavení) zaškrtněte políčko Virtual Reality Supported(Podpora virtuální reality) a ujistěte se, že je Windows Mixed Reality SDK.

      Aktualizujte X R Nastavení.

  8. Zpět v sestavě Nastaveníuž projekty Unity jazyka C# nejsou zašednuté; zaškrtněte políčko vedle tohoto políčka.

  9. Zavřete okno Nastavení sestavení.

  10. Uložte scénu a Project(SOUBOR SAVE SCENE / FILE > SAVE PROJECT).

3. kapitola – nastavení hlavní kamery

Důležité

Pokud chcete v tomto kurzu přeskočit komponentu Unity Set up a pokračovat přímo do kódu, stáhněte si tento balíček .unitypackage,naimportujte ho do svého projektu jako vlastníbalíček a pak pokračujte v kapitole 5. Stále budete muset vytvořit aplikaci Unity Project.

  1. Na panelu Hierarchienajdete objekt s názvem Hlavníkamera , který představuje "hlavní" pohled, jakmile budete uvnitř aplikace.

  2. S řídicím panelem Unity před vás vyberte GameObject hlavní kamery. Všimněte si, že panel inspektoru (obecně nalezený napravo na řídicím panelu) zobrazí různé komponenty tohoto objektu GameObjects možností Transformovat v horní části, za kterou následuje Fotoaparát a některé další komponenty. Budete muset resetovat transformaci hlavní kamery, aby byla správně umístěná.

  3. To můžete udělat tak, že vyberete ikonu ozubeného kola vedle komponenty Transformace fotoaparátu a vyberete Resetovat.

    Resetujte transformaci hlavní kamery.

  4. Komponenta Transform by pak měla vypadat takhle:

    1. Pozice je nastavená na 0, 0, 0.

    2. Rotace je nastavená na 0, 0, 0.

    3. A škálování je nastavené na 1, 1, 1.

      Transformace informací pro fotoaparát

  5. Potom, když je vybraný objekt Hlavní kamera, se podívejte na tlačítko Přidat komponentu, které se nachází v dolní části panelu inspektoru.

  6. Vyberte toto tlačítko a vyhledejte (zadáním zdroje zvuku do vyhledávacího pole nebo navigací v částech) pro komponentu s názvem Zdroj zvuku, jak je znázorněno níže, a vyberte ji (funguje také stisknutí klávesy Enter).

  7. Do hlavní kamery se přidá komponenta Zdroj zvuku, jak je znázorněno níže.

    Přidejte komponentu Zdroj zvuku.

    Poznámka

    Pro Microsoft HoloLens budete muset také změnit následující položky, které jsou součástí komponenty Fotoaparát na hlavním fotoaparátu:

    • Vymazat příznaky: Plná barva.
    • Pozadí "Černá, Alfa 0" – šestnáctková barva: #00000000.

4. kapitola – Nastavení plátna ladění

Aby bylo možné zobrazit vstup a výstup překladu, je potřeba vytvořit základní uživatelské rozhraní. Pro tento kurz vytvoříte objekt uživatelského rozhraní plátna s několika objekty Text, které budou zobrazovat data.

  1. Klikněte pravým tlačítkem do prázdné oblasti panelu Hierarchiev části Uživatelské rozhranía přidejte plátno.

    Přidání nového objektu uživatelského rozhraní plátna

  2. Když je vybraný objekt Plátna, na panelu inspektoru (v komponentě Plátno) změňte Režim vykreslování na World Space.

  3. Dále změňte následující parametry v transformaci rectu panelu inspektoru:

    1. POSX 0 Y 0 Z 40

    2. Šířka – 500

    3. Výška – 300

    4. MěřítkoX 0,13 Y 0,13 Z 0,13

      Aktualizujte transformaci rectu pro plátno.

  4. Klikněte pravým tlačítkem na plátno v hierarchickém paneluv části Uživatelské rozhranía přidejte Panel. Tento panel poskytne pozadí textu, který budete zobrazovat ve scéně.

  5. Klikněte pravým tlačítkem na panel v hierarchickém paneluv části Uživatelské rozhranía přidejte objekt Text. Stejný postup opakujte, dokud nevytvojíte celkem čtyři objekty textu uživatelského rozhraní (Tip: Pokud máte vybraný první objekt Text, můžete jednoduše stisknout Ctrl + Da duplikovat ho, dokud nemáte celkem čtyři).

  6. Pro každý objekt Textvyberte a pomocí následujících tabulek nastavte parametry na panelu inspektoru.

    1. Pro komponentu Rect Transform :

      Name Transformace – pozice Width (Šířka) Height (Výška)
      Popisek stavu mikrofonu X -80 Y 90 Z 0 300 30
      Popisek odpovědi Azure X -80 Y 30 Z 0 300 30
      DictationLabel X -80 Y -30 Z 0 300 30
      TranslationResultLabel X -80 Y -90 Z 0 300 30
    2. Pro komponentu Text (Skript):

      Name Text Velikost písma
      Popisek stavu mikrofonu Stav mikrofonu: 20
      Popisek odpovědi Azure Azure Web Response 20
      DictationLabel Právě jste řekli: 20
      TranslationResultLabel Převod: 20

      Zadejte odpovídající hodnoty pro popisky uživatelského rozhraní.

    3. Můžete také nastavit tučné písmo ve stylu písma. Tím se text snadněji čte.

      Tučné písmo

  7. Pro každý objekt text uživatelského rozhraní vytvořený v kapitole 5vytvořte nový podřízenýobjektText uživatelského rozhraní. Tyto děti zobrazí výstup aplikace. Vytvořte podřízené objekty kliknutím pravým tlačítkem myši na zamýšlený nadřazený objekt (např. MicrophoneStatusLabel)a pak vyberte Uživatelské rozhraní a pak vyberte Text.

  8. Pro každou z těchto dětí ji vyberte a pomocí následujících tabulek nastavte parametry na panelu inspektoru.

    1. Pro komponentu Rect Transform :

      Name Transformace – pozice Width (Šířka) Height (Výška)
      MicrophoneStatusText X 0 Y -30 Z 0 300 30
      Text odpovědi Azure X 0 Y -30 Z 0 300 30
      DictationText X 0 Y -30 Z 0 300 30
      TranslationResultText X 0 Y -30 Z 0 300 30
    2. Pro komponentu Text (Skript):

      Name Text Velikost písma
      MicrophoneStatusText ?? 20
      Text odpovědi Azure ?? 20
      DictationText ?? 20
      TranslationResultText ?? 20
  9. Dále vyberte možnost zarovnání "střed" pro každou textovou komponentu:

    zarovnat text.

  10. Pokud chcete zajistit, aby podřízené objekty textu uživatelského rozhraní byly snadno čitelné, změňte jejich barvu. To proveďte kliknutím na pruh (aktuálně "černá") vedle možnosti Barva.

    Zadejte odpovídající hodnoty pro textové výstupy uživatelského rozhraní.

  11. Pak v novém, malém okně Barva změňte šestnáctknou barvu na: 0032EAFF.

    Aktualizujte barvu na modrou.

  12. Uživatelské rozhraní by mělo vypadat takto:

    1. Na panelu Hierarchie:

      Mít hierarchii v poskytnuté struktuře.

    2. V zobrazení scénya hry:

      Mít scénu a herní zobrazení ve stejné struktuře.

Chapter 5 – Vytvoření třídy Results

Prvním skriptem, který je potřeba vytvořit, je třída Results, která zodpovídá za poskytování způsobu zobrazení výsledků překladu. Třída ukládá a zobrazuje následující položky:

  • Výsledek odpovědi z Azure
  • Stav mikrofonu
  • Výsledek diktování (hlas na text).
  • Výsledek překladu.

Vytvoření této třídy:

  1. Klikněte pravým tlačítkem na Project Panel apak na Vytvořit složku. Složku pojmechte Scripts (Skripty).

    Vytvořte složku scripts.

    Otevřete složku scripts.

  2. Po vytvoření složky Scripts ji dvojím kliknutím otevřete. Potom v této složce klikněte pravým tlačítkem a vyberte Vytvořit a pak Skript jazyka C#. Pojmete skript Results (Výsledky).

    Vytvořte první skript.

  3. Dvojím kliknutím na nový skript Výsledky ho otevřete pomocí Visual Studio.

  4. Vložte následující obory názvů:

        using UnityEngine;
        using UnityEngine.UI;
    
  5. Do třídy vložte následující proměnné:

        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. Pak přidejte metodu Awake(), která bude volána při inicializaci třídy.

        private void Awake() 
        { 
            // Set this class to behave similar to singleton 
            instance = this;           
        } 
    
  7. Nakonec přidejte metody, které zodpovídají za výstup různých informací o výsledcích do uživatelského rozhraní.

        /// <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. Před návratem do Unity nezapomeňte změny uložit Visual Studio souboru.

Kapitola 6 – vytvoření třídy MicrophoneManager

Druhou třídou, kterou vytvoříte, je MicrophoneManager.

Tato třída zodpovídá za:

  • Rozpoznání nahrávacího zařízení připojeného k náhlavní soupravě nebo počítači (podle toho, co je výchozí).
  • Zachyťte zvuk (hlas) a pomocí diktování ho uložte jako řetězec.
  • Po pozastavení hlasu odešlete diktování do Translator třídy.
  • Hostovat metodu, která může v případě potřeby zastavit záznam hlasu.

Vytvoření této třídy:

  1. Poklikejte na složku Scripts (Skripty) a otevřete ji.

  2. Klikněte pravým tlačítkem do složky Scripts a pak klikněte na Create C# Script (Vytvořit skript C#). Pojmete skript MicrophoneManager.

  3. Dvojím kliknutím na nový skript ho otevřete pomocí Visual Studio.

  4. Aktualizujte obory názvů tak, aby v horní části třídy MicrophoneManager měly stejné jako následující:

        using UnityEngine; 
        using UnityEngine.Windows.Speech;
    
  5. Pak do třídy MicrophoneManager přidejte následující proměnné:

        // 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. Teď je potřeba přidat kód pro metody Awake() a Start(). Ty budou volány při inicializaci třídy:

        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. Metodu Update() můžete odstranit, protože ji tato třída nebude používat.

  8. Teď potřebujete metody, které aplikace používá ke spuštění a zastavení hlasového zachycení, a předání do třídy Translator, kterou brzy sestavíte. Zkopírujte následující kód a vložte ho pod metodu Start().

        /// <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(); 
        }
    

    Tip

    I když se tato aplikace nebude používat, byla zde k dispozici také metoda StopCapturingAudio(), pokud byste ve své aplikaci měli implementovat možnost zastavit zaznamenávání zvuku.

  9. Teď je potřeba přidat obslužnou rutinu diktování, která se vyvolá, když se hlas zastaví. Tato metoda pak předá diktovaný text do Translator třídy.

        /// <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. Před návratem do Unity nezapomeňte změny uložit Visual Studio v aplikaci .

Upozornění

V tomto okamžiku si všimnete chyby, která se zobrazí na panelu konzoly editoru Unity (název "Translator" neexistuje...). Je to proto, že kód odkazuje Translator , kterou vytvoříte v další kapitole.

7. kapitola – Volání do Azure a služby Translator

Posledním skriptem, který musíte vytvořit, je Translator třída.

Tato třída zodpovídá za:

  • Ověřování aplikace v Azurevýměnou za ověřovací token.
  • Pomocí ověřovacího tokenu odešlete text (přijatý ze třídy MicrophoneManager), který se má přeložit.
  • Přijímejte přeložený výsledek a předejte ho do třídy Results, která se má vizualizovat v uživatelském rozhraní.

Vytvoření této třídy:

  1. Přejděte do složky Scripts, kterou jste vytvořili dříve.

  2. Klikněte pravým tlačítkem na panel Project avytvořte skript jazyka C#. Volejte skript Translator.

  3. Poklikejte na nový skript Translator a otevřete ho pomocí Visual Studio.

  4. Na začátek souboru přidejte následující obory názvů:

        using System;
        using System.Collections;
        using System.Xml.Linq;
        using UnityEngine;
        using UnityEngine.Networking;
    
  5. Potom do třídy Translator proměnné:

        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; 
    

    Poznámka

    • Jazyky vložené do výčtu jazyků jsou jenom příklady. Pokud chcete, můžete přidat další. Rozhraní API podporuje více než 60 jazyků (včetně
    • K dispozici je interaktivnějšístránka pokrývající dostupné jazyky, i když si uvědomte, že stránka funguje jenom v případě, že je jazyk webu nastavený na hodnotu (a web Microsoftu se pravděpodobně přesměruje do vašeho nativního jazyka). Jazyk webu můžete změnit v dolní části stránky nebo změnou adresy URL.
    • Hodnota authorizationKey ve výše uvedeném fragmentu kódu musí být klíč, který jste dostali při přihlášení k odběru rozhraní Azure Translator Text API. To bylo prokryto v kapitole 1.
  6. Teď je potřeba přidat kód pro metody Awake() a Start().

  7. V tomto případě kód zavolá Do Azure pomocí autorizačního klíče, aby se získejte 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); 
        }
    

    Poznámka

    Platnost tokenu vyprší po 10 minutách. V závislosti na scénáři vaší aplikace možná budete muset provést stejné korutinní volání vícekrát.

  8. Korutina pro získání tokenu je následující:

        /// <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();
        }
    

    Upozornění

    Pokud upravíte název metody IEnumerator GetTokenCoroutine(),budete muset aktualizovat hodnoty řetězce volání StartCoroutine a StopCoroutine ve výše uvedeném kódu. Podle dokumentace k Unitymusíte k zastavení konkrétní korutinypoužít metodu řetězcové hodnoty.

  9. Dále přidejte korutinu (s metodou "support" streamu přímo pod ní), abyste získali překlad textu přijatého třídou MicrophoneManager. Tento kód vytvoří řetězec dotazu pro odeslání do rozhraní Azure Translator Text APIa pak pomocí interní třídy Unity UnityWebRequest zavolá koncový bod pomocí řetězce dotazu get. Výsledek se pak použije k nastavení překladu v objektu Results. Následující kód ukazuje implementaci:

        /// <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. Před návratem do Unity nezapomeňte změny uložit Visual Studio souboru.

Kapitola 8 – Konfigurace scény Unity

  1. Zpět v editoru Unity klikněte na třídu Results a přetáhněte ji ze složky Scripts do objektu Hlavní kamera v hierarchickém panelu.

  2. Klikněte na hlavní kameru a podívejte se na panel inspektoru. Všimněte si, že v nově přidané komponentě Script existují čtyři pole s prázdnými hodnotami. Toto jsou výstupní odkazy na vlastnosti v kódu.

  3. Přetáhněte příslušné objekty Text z panelu Hierarchie na tyto čtyři sloty, jak je znázorněno na obrázku níže.

    Aktualizujte cílové odkazy se zadanými hodnotami.

  4. Dále klikněte na třídu Translator a přetáhněte ji ze složky Skripty do objektu Hlavní kamera v hierarchickém panelu.

  5. Potom klikněte na třídu MicrophoneManager a přetáhněte ji ze složky Scripts do objektu Hlavní kamera v hierarchickém panelu.

  6. Nakonec klikněte na hlavní kameru a podívejte se na panel inspektoru. Všimněte si, že ve skriptu, který jste přetáhli, existují dvě rozevírací pole, která vám umožní nastavit jazyky.

    Ujistěte se, že jsou vstupní zamýšlené jazyky překladu.

Kapitola 9 – Testování ve smíšené realitě

V tuto chvíli je potřeba otestovat, jestli je scéna správně implementovaná.

Zajistit:

  • Všechna nastavení uvedená v kapitole 1 jsou správně nastavená.
  • Skripty Results, Translatora MicrophoneManagerjsou připojené k objektu Hlavní kamera.
  • Klíč služby Azure Translator Text APIjste umístili do proměnné authorizationKey v rámci Translator Script.
  • Všechna pole na hlavním panelu inspektoru fotoaparátu jsou správně přiřazená.
  • Mikrofon funguje při spuštění scény (pokud ne, zkontrolujte, jestli je váš připojený mikrofon výchozím zařízením a jestli jste ho správně nastavili v rámci Windows).

Imerzivní náhlavní soupravu můžete otestovat stisknutím tlačítka Přehrát v Unity Editoru. Aplikace by měla fungovat prostřednictvím připojené imerzivní náhlavní soupravy.

Upozornění

Pokud se v konzole Unity zobrazí chyba týkající se změny výchozího zvukového zařízení, nemusí scéna fungovat podle očekávání. Je to způsobeno tím, jak portál hybridní reality pracuje s integrovanými mikrofony pro náhlavní soupravy, které je mají. Pokud se zobrazí tato chyba, jednoduše zastavte scénu a znovu ji spusťte a vše by mělo fungovat podle očekávání.

10. kapitola – Sestavení řešení pro UPW a načtení bokem na místním počítači

Všechno potřebné pro část Unity tohoto projektu je teď hotové, takže je čas ji sestavit z Unity.

  1. Přejděte na Build Nastavení:File Build Nastavení...

  2. V okně Build Nastavení klikněte na Build (Sestavit).

    Sestavte scénu Unity.

  3. Pokud to ještě není, zaškrtněte Unity C# Projects ( Projekty Unity v jazyce C#).

  4. Klikněte na Build (Sestavit). Unity spustí Průzkumník souborů, ve kterém budete muset vytvořit a pak vybrat složku, do které chcete aplikaci sestavit. Teď vytvořte složku a pojmnte ji App (Aplikace). Potom s vybranou možností Složka aplikace stiskněte Vybrat složku.

  5. Unity začne vytvářet projekt do složky App.

  6. Jakmile Unity dokončí sestavování (může to chvíli trvat), otevře se v umístění sestavení okno Průzkumník souborů (podívejte se na hlavní panel, protože se nemusí vždy zobrazovat nad okny, ale upozorní vás na přidání nového okna).

Kapitola 11 – Nasazení aplikace

Nasazení aplikace:

  1. Přejděte k novému sestavení Unity (složce App) a otevřete soubor řešení pomocí Visual Studio.

  2. V části Konfigurace řešení vyberte Ladit.

  3. V platformě řešení vyberte x86, místní počítač.

    Pro Microsoft HoloLens může být jednodušší ji nastavit na Vzdálený počítač,abyste se k počítači nevázáni. Budete ale muset provést také následující akce:

    • Znát IP adresu vašeho HoloLens, kterou najdete v části Nastavení Network Internet Wi-Fi Advanced >> Options; IPv4 je adresa, kterou byste měli použít.
    • Ujistěte se, že je vývojářskýrežim v provozu. najdete v Nastavení Update Security pro vývojáře.

    Nasaďte řešení z Visual Studio.

  4. Přejděte do nabídky Build (Sestavení) a kliknutím na Deploy Solution (Nasadit řešení) aplikaci nasadíte do počítače bokem.

  5. Vaše aplikace by se teď měla zobrazit v seznamu nainstalovaných aplikací připravených ke spuštění.

  6. Po spuštění vás aplikace vyzve k autorizaci přístupu k mikrofonu. Nezapomeňte kliknout na tlačítko ANO.

  7. Teď jste připraveni začít s překladem.

Hotová aplikace Rozhraní API pro překlad textu

Blahopřejeme, sestavíte aplikaci hybridní reality, která využívá rozhraní Azure Translation Text API k převodu řeči na přeložený text.

Konečný produkt.

Bonusová cvičení

Cvičení 1

Můžete do aplikace přidat funkci převodu textu na řeč, aby byl vrácený text vyslovený?

Cvičení 2

Umožňuje uživateli změnit zdrojový a výstupní jazyk ("z" a "na") v rámci samotné aplikace, takže aplikaci není nutné znovu vytvořit pokaždé, když budete chtít změnit jazyky.