Sdílet prostřednictvím


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


Poznámka:

Kurzy Mixed Reality Academy byly navrženy s HoloLensem (1. generace) a imerzivními náhlavními soupravami hybridní reality. Proto máme pocit, že je důležité nechat tyto kurzy zavedené 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 sadami nástrojů ani interakcemi používanými pro HoloLens 2. Budou zachovány, aby pokračovaly v práci na podporovaných zařízeních. Bude k dispozici nová série kurzů, které budou publikovány v budoucnu, které předvádějí, jak vyvíjet pro HoloLens 2. Toto oznámení se při publikování aktualizuje odkazem na tyto kurzy.


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

Konečný produkt

Translator Text API je služba překladu, která funguje téměř v reálném čase. Služba je cloudová a pomocí volání rozhraní REST API 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 azure Translator Text API.

Po dokončení tohoto kurzu budete mít aplikaci hybridní reality, která bude moct provést následující akce:

  1. Uživatel bude mluvit do mikrofonu připojeného k imerzivní náhlavní soupravě (VR) (nebo integrovanému mikrofonu HoloLens).
  2. Aplikace zaznamená diktování a odešle ho 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 dozvíte, jak získat výsledky ze služby Translator Service do ukázkové aplikace založené na Unity. Bude na vás, abyste tyto koncepty použili na vlastní aplikaci, kterou byste mohli vytvářet.

Podpora zařízení

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

Poznámka:

I když se tento kurz primárně zaměřuje na imerzivní náhlavní soupravy Windows Mixed Reality (VR), můžete také použít to, co se v tomto kurzu naučíte, na Microsoft HoloLens. Při sledování kurzu uvidíte poznámky o všech změnách, které možná budete potřebovat k podpoře HoloLensu. Při použití HoloLensu si můžete během hlasového zachycení všimnout určité ozvěny.

Požadavky

Poznámka:

Tento kurz je určený pro vývojáře, kteří mají základní zkušenosti s Unity a C#. Mějte také na paměti, že požadavky a písemné pokyny v tomto dokumentu představují to, co bylo otestováno a ověřeno v době psaní (květen 2018). Můžete používat nejnovější software, jak je uvedeno v článku o instalaci nástrojů , i když by se nemělo předpokládat, že informace v tomto kurzu budou dokonale odpovídat tomu, co 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

  • Abyste se vyhnuli problémům při sestavování tohoto projektu, důrazně doporučujeme vytvořit projekt uvedený v tomto kurzu v kořenové nebo téměř kořenové složce (dlouhé cesty ke složkám můžou způsobovat problémy v době sestavení).

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

  • Pokud chcete počítači povolit diktování, přejděte na Nastavení > řeči ochrany osobních údajů > , rukopis a psaní a vyberte tlačítko Zapnout hlasové služby a psát návrhy.

  • Pokud používáte mikrofon a sluchátka připojená k náhlavní soupravě (nebo k němu integrovaná), ujistěte se, že je v Nastavení > > zvuku a řeči zapnutá možnost "Když používám náhlavní soupravu, přepnout na mikrofon".

    Nastavení hybridní reality

    Nastavení mikrofonu

Upozorňující

Mějte na paměti, že pokud vyvíjíte pro imerzivní náhlavní soupravu pro toto cvičení, může docházet k problémům se zvukovým výstupem zařízení. Důvodem je problém s Unity, který je opravený v novějších verzích Unity (Unity 2018.2). Problém brání Unity ve změně výchozího zvukového výstupního zařízení za běhu. Jako alternativní řešení se ujistěte, že jste dokončili výše uvedené kroky, a zavřete a znovu otevřete Editor, když se tento problém prezentuje.

Kapitola 1 – Azure Portal

Pokud chcete používat rozhraní 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 ho muset vytvořit. Pokud tento kurz sledujete v situaci v učebně nebo testovacím prostředí, požádejte svého instruktora nebo některého z proktorů, aby vám pomohli nastavit nový účet.

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

    Nový prostředek

    Poznámka:

    Slovo Nový mohlo být nahrazeno vytvořením prostředku na novějších portálech.

  3. Na nové stránce se zobrazí 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í služby Translator Text API

  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 se jedná o první vytvoření služby Translator Text, 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řizovat a spravovat fakturaci pro kolekci prostředků Azure. Doporučujeme zachovat všechny služby Azure přidružené k jednomu projektu (např. 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 ideálně bylo v oblasti, ve které by aplikace běžela. Některé prostředky Azure jsou dostupné jenom v určitých oblastech.

    6. Budete také muset potvrdit, že jste porozuměli podmínkám a ujednáním použitým pro tuto službu.

    7. Vyberte Vytvořit.

      Vyberte tlačítko Vytvořit.

  5. Jakmile kliknete na Vytvořit, budete muset počkat, až se služba vytvoří, může to chvíli trvat.

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

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

  7. Kliknutím na oznámení můžete prozkoumat novou instanci služby.

    Přejděte do místní nabídky prostředku.

  8. Kliknutím na tlačítko Přejít k prostředku v oznámení můžete prozkoumat novou instanci služby. Přejdete do nové instance služby Translator Text API.

    Stránka služby Translator Text API

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

  10. Na stránce Rychlý start služby Translator Text přejděte k prvnímu kroku, uchopte klíče a klikněte na Tlačítko (můžete toho dosáhnout také tak, že kliknete na modrý hypertextový odkaz Klíče, který se nachází v navigační nabídce Služby označené ikonou klíče). Tím se zobrazí klíče služby.

  11. Pořídit kopii jednoho ze zobrazených klíčů, protože ho budete potřebovat později v projektu.

Kapitola 2 – Nastavení projektu Unity

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

Poznámka:

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

Následuje typická sada pro vývoj s hybridní realitou a jako taková je vhodná šablona pro jiné projekty:

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

    Spusťte nový projekt Unity.

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

    Zadejte podrobnosti o novém projektu Unity.

  3. Při otevření Unity stojí za to zkontrolovat, jestli je výchozí editor skriptů 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ředvolbu editoru skriptů.

  4. Dále přejděte do Nastavení sestavení souborů > a přepněte platformu na Univerzální platforma Windows kliknutím na tlačítko Přepnout platformu.

    Okno Nastavení sestavení, přepnutí platformy na UPW

  5. Přejděte do nastavení sestavení souborů > a ujistěte se, že:

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

      Pro 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. Verze sady Visual Studio je nastavená na nejnovější nainstalovanou verzi.

    5. Sestavení a spuštění je nastavené na místní počítač.

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

      1. Uděláte to tak, že vyberete Přidat otevřené scény. Zobrazí se okno pro uložení.

        Kliknutí na tlačítko Pro přidání otevřených scén

      2. Vytvořte novou složku pro tuto a jakoukoli budoucí scénu a pak vyberte tlačítko Nová složka a vytvořte novou složku, pojmenujte ji Scény.

        Vytvoření nové složky skriptů

      3. Otevřete nově vytvořenou složku Scény a potom do textového pole Název souboru zadejte MR_TranslationScene a stiskněte uložit.

        Pojmenujte novou scénu.

        Mějte na paměti, že scény Unity musíte uložit do složky Assets , protože musí být přidružené k projektu Unity. Vytvoření složky scén (a dalších podobných složek) je typický způsob strukturování projektu Unity.

    7. Zbývající nastavení v nastavení sestavení by teď měla zůstat ve výchozím nastavení.

  6. V okně Nastavení sestavení klikněte na tlačítko Nastavení přehrávače, 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ě Další nastavení:

      1. Skriptovací verze modulu runtime by měla být stabilní (ekvivalent .NET 3.5).

      2. Back-end skriptování 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ě Nastavení publikování v části Možnosti zaškrtněte:

      1. InternetClient

      2. Mikrofon

        Aktualizace nastavení publikování

    3. Dále na panelu v nastavení XR (v části Nastavení publikování níže) zaškrtněte možnost Podpora virtuální reality a ujistěte se, že je přidaná sada SDK pro Windows Mixed Reality.

      Aktualizujte nastavení X R.

  8. Zpět v nastavení sestavení už projekty Unity C# nejsou šedé. Zaškrtněte políčko vedle tohoto nastavení.

  9. Zavřete okno Nastavení sestavení.

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

Kapitola 3 – Nastavení hlavní kamery

Důležité

Pokud chcete přeskočit komponentu Nastavení Unity v tomto kurzu a pokračovat přímo do kódu, můžete si stáhnout tento balíček .unitypackage, importovat ho do projektu jako vlastní balíček a pokračovat z kapitoly 5. Stále budete muset vytvořit projekt Unity.

  1. Na panelu hierarchie najdete objekt s názvem Hlavní kamera, tento objekt představuje váš "hlavní" pohled, jakmile budete "uvnitř" aplikace.

  2. Na řídicím panelu Unity před vámi vyberte hlavní objekt GameObject fotoaparátu. Všimněte si, že panel inspektoru (obvykle se nachází vpravo, v řídicím panelu) zobrazí různé komponenty objektu GameObject s transformací v horní části, následovanou kamerou a některými dalšími komponentami. Budete muset resetovat transformaci hlavní kamery, aby byla správně umístěna.

  3. Uděláte to tak, že vyberete ikonu ozubeného kola vedle komponenty Transformace fotoaparátu a vyberete Obnovit.

    Resetujte transformaci hlavní kamery.

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

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

    2. Otočení je nastaveno na 0, 0, 0

    3. A měřítko je nastaveno na 1, 1, 1

      Informace o transformaci pro kameru

  5. V dalším kroku s vybraným objektem Hlavní kamera se podívejte na tlačítko Přidat komponentu umístěné v dolní části panelu inspektoru.

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

  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 změnit také následující položky, které jsou součástí komponenty Kamera na hlavní kameru:

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

Kapitola 4 – Nastavení ladicího plátna

Aby bylo možné zobrazit vstup a výstup překladu, je potřeba vytvořit základní uživatelské rozhraní. V tomto kurzu vytvoříte objekt uživatelského rozhraní plátna s několika textovými objekty, které zobrazí data.

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

    Přidejte nový objekt uživatelského rozhraní plátna.

  2. Když je vybraný objekt Plátno, na panelu inspektoru (v rámci komponenty Plátno) změňte režim vykreslování na světový prostor.

  3. V dalším kroku změňte následující parametry v transformaci rektního panelu inspektoru:

    1. POS - X 0 Y 0 Z 40

    2. Šířka – 500

    3. Výška – 300

    4. Měřítko - X 0.13 Y 0.13 Z 0.13

      Aktualizujte transformaci rect pro plátno.

  4. Pravým tlačítkem myši klikněte na plátno na panelu hierarchie v části Uživatelské rozhraní a přidejte panel. Tento panel bude obsahovat pozadí textu, který se bude zobrazovat ve scéně.

  5. Klikněte pravým tlačítkem myši na panelu hierarchie v části Uživatelské rozhraní a přidejte objekt Text. Opakujte stejný postup, dokud nevytvořili celkem čtyři objekty textu uživatelského rozhraní (Tip: pokud máte vybraný první objekt Text, můžete jednoduše stisknout Ctrl + D, duplikovat ho, dokud nebudete mít celkem čtyři).

  6. Pro každý textový objekt ho vyberte a pomocí následujících tabulek nastavte parametry v panelu inspektoru.

    1. Pro komponentu Rect Transform :

      Název Transformace – pozice Šířka Výška
      MicrophoneStatusLabel X -80 Y 90 Z 0 300 30
      AzureResponseLabel X -80 Y 30 Z 0 300 30
      DiktováníLabel X -80 Y -30 Z 0 300 30
      TranslationResultLabel X -80 Y -90 Z 0 300 30
    2. Pro komponentu Text (Script):

      Název Text Velikost písma
      MicrophoneStatusLabel Stav mikrofonu: 20
      AzureResponseLabel Webová odpověď Azure 20
      DiktováníLabel Právě jste řekl: 20
      TranslationResultLabel Převod: 20

      Zadejte odpovídající hodnoty popisků uživatelského rozhraní.

    3. Nastavte také tučný styl 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 5 vytvořte nový podřízený textový objekt uživatelského rozhraní. Tyto podřízené položky zobrazí výstup aplikace. Vytvořte podřízené objekty tak, že kliknete pravým tlačítkem myši na zamýšlený nadřazený objekt (např. MicrophoneStatusLabel) a pak vyberete uživatelské rozhraní a pak vyberete Text.

  8. Pro každou z těchto podřízených položek ji vyberte a pomocí následujících tabulek nastavte parametry v panelu inspektoru.

    1. Pro komponentu Rect Transform :

      Název Transformace – pozice Šířka Výška
      MicrophoneStatusText X 0 Y -30 Z 0 300 30
      AzureResponseText X 0 Y -30 Z 0 300 30
      Diktování – text X 0 Y -30 Z 0 300 30
      TranslationResultText X 0 Y -30 Z 0 300 30
    2. Pro komponentu Text (Script):

      Název Text Velikost písma
      MicrophoneStatusText ?? 20
      AzureResponseText ?? 20
      Diktování – text ?? 20
      TranslationResultText ?? 20
  9. Dále vyberte možnost zarovnání "střed" pro každou textovou komponentu:

    zarovnat text.

  10. Chcete-li zajistit, aby objekty text podřízeného uživatelského rozhraní byly snadno čitelné, změňte jejich barvu. Uděláte to tak, že kliknete na panel (aktuálně černobílé) vedle možnosti Barva.

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

  11. Potom v novém, malé, Barevné okno, změňte Hex Color na: 0032EAFF

    Aktualizujte barvu na modrou.

  12. Níže je postup, jak by mělo uživatelské rozhraní vypadat.

    1. Na panelu hierarchie:

      Mít hierarchii v zadané struktuře.

    2. V zobrazení scény a hry:

      Mají scénu a zobrazení her ve stejné struktuře.

Kapitola 5 – Vytvoření třídy výsledků

Prvním skriptem, který potřebujete vytvořit, je třída Výsledky , která je zodpovědná za poskytnutí 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. Pravým tlačítkem myši klikněte na panel projektu a pak na Vytvořit > složku. Pojmenujte složky Skripty.

    Vytvořte složku skriptů.

    Otevřete složku skriptů.

  2. Když vytvoříte složku Scripts , poklikejte na ni a otevřete ji. Potom v této složce klikněte pravým tlačítkem myši a vyberte Vytvořit > a potom skript jazyka C#. Pojmenujte výsledky skriptu.

    Vytvořte první skript.

  3. Poklikáním na nový skript Výsledky ho otevřete v sadě 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é jsou zodpovědné 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. Než se vrátíte do Unity, nezapomeňte změny uložit v sadě Visual Studio.

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

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

Tato třída zodpovídá za:

  • Zjiště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.
  • Jakmile se hlas pozastaví, odešlete diktování do třídy Translator.
  • Hostujte metodu, která může v případě potřeby zastavit hlasový záznam.

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

  1. Poklikáním otevřete složku Skripty .

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

  3. Poklikáním na nový skript ho otevřete v sadě Visual Studio.

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

        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. Kód pro metody Awake() a Start() je teď potřeba přidat. Tyto se budou volat 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 tato třída ji nebude používat.

  8. Teď potřebujete metody, které aplikace používá ke spuštění a zastavení zachytávání hlasu, 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, stopCapturingAudio () metoda byla zde také uvedena, pokud chcete implementovat schopnost zastavit zachytávání zvuku ve vaší aplikaci.

  9. Teď musíte přidat obslužnou rutinu diktování, která se vyvolá při zastavení hlasu. Tato metoda pak předá diktovaný text do třídy Translator .

        /// <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. Než se vrátíte do Unity, nezapomeňte změny uložit v sadě Visual Studio.

Upozorňující

V tuto chvíli si všimnete chyby, která se zobrazí na panelu konzoly Unity Editoru (název Translator neexistuje...). Důvodem je to, že kód odkazuje na třídu Translator , kterou vytvoříte v další kapitole.

Kapitola 7 – Volání do Azure a překladatelské služby

Posledním skriptem , který potřebujete vytvořit, je třída Translator .

Tato třída zodpovídá za:

  • Ověřování aplikace v Azure výměnou za ověřovací token.
  • Ověřovací token použijte k odeslání textu (přijatého z třídy MicrophoneManager), který se má přeložit.
  • Získejte přeložený výsledek a předejte ho třídě výsledků , 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 projektu a vytvořte > skript jazyka C#. Zavolejte translator skriptu.

  3. Poklikáním otevřete nový skript Translatoru v sadě Visual Studio.

  4. Do horní části souboru přidejte následující obory názvů:

        using System;
        using System.Collections;
        using System.Xml.Linq;
        using UnityEngine;
        using UnityEngine.Networking;
    
  5. Pak do třídy Translator přidejte následující 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 jen příklady. Nebojte se přidat více, pokud chcete; rozhraní API podporuje více než 60 jazyků (včetně Klingonu)!
    • Existuje interaktivnější stránka, která pokrývá dostupné jazyky, ale mějte na paměti, že stránka funguje jenom v případě, že je jazyk webu nastavený na "" (a web Microsoftu pravděpodobně přesměruje do vašeho nativního jazyka). Jazyk webu můžete změnit v dolní části stránky nebo úpravou adresy URL.
    • Hodnota authorizationKey ve výše uvedeném fragmentu kódu musí být klíč, který jste obdrželi při přihlášení k odběru rozhraní Azure Translator Text API. To bylo popsáno v kapitole 1.
  6. Kód pro metody Awake() a Start() je teď potřeba přidat.

  7. V takovém případě kód zavolá Do Azure pomocí autorizačního klíče a získá 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 několikrát provést stejné korutinové volání.

  8. Korutinou k 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();
        }
    

    Upozorňující

    Pokud upravíte název IEnumerator metody GetTokenCoroutine(), musíte aktualizovat Hodnoty řetězce volání StartCoroutine a StopCoroutine ve výše uvedeném kódu. Jak je uvedeno v dokumentaci Unity, pokud chcete zastavit konkrétní coroutine, musíte použít metodu řetězcové hodnoty.

  9. Dále přidejte korutin (s metodou streamu "support" přímo pod ní) a získejte překlad textu přijatého třídou MicrophoneManager . Tento kód vytvoří řetězec dotazu pro odeslání do rozhraní Azure Translator Text API a pak pomocí interní třídy Unity UnityWebRequest provede volání "Get" koncovému bodu s řetězcem dotazu. 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. Než se vrátíte do Unity, nezapomeňte změny uložit v sadě Visual Studio.

Kapitola 8 – Konfigurace scény Unity

  1. Zpět v Unity Editoru klikněte a přetáhněte třídu Výsledky ze složky Scripts do objektu Hlavní kamera na panelu hierarchie.

  2. Klikněte na hlavní kameru a podívejte se na panel inspektoru. Všimněte si, že v rámci nově přidané komponenty Script jsou č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é textové objekty 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 Scripts do objektu Hlavní kamera v panelu hierarchie.

  5. Potom klepněte a přetáhněte MicrophoneManager třídy ze složky Scripts do objektu Main Camera v panelu hierarchie.

  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, jsou dvě rozevírací pole, která vám umožní nastavit jazyky.

    Ujistěte se, že jsou zadané jazyky překladu.

Kapitola 9 – Testování v hybridní realitě

V tomto okamžiku musíte otestovat, že scéna byla správně implementována.

Zajistěte následující:

  • Všechna nastavení uvedená v kapitole 1 jsou správně nastavena.
  • K objektu Hlavní kamera jsou připojeny skripty Results, Translator a MicrophoneManager.
  • Klíč služby Azure Translator Text API jste umístili do proměnné authorizationKey v rámci služby Translator Script.
  • Všechna pole na hlavním panelu kontroly kamery jsou správně přiřazena.
  • Mikrofon funguje při spuštění scény (pokud ne, zkontrolujte, jestli je připojený mikrofon výchozím zařízením a jestli jste ho správně nastavili ve 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.

Upozorňující

Pokud se v konzole Unity zobrazí chyba týkající se výchozí změny zvukového zařízení, scéna nemusí fungovat podle očekávání. Důvodem je způsob, jakým 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 spusťte ji znovu a mělo by to fungovat podle očekávání.

Kapitola 10 – Sestavení řešení UPW a zkušební načtení na místním počítači

Všechno potřebné pro oddíl Unity tohoto projektu bylo dokončeno, takže je čas ho sestavit z Unity.

  1. Přejděte na Nastavení sestavení: Nastavení sestavení souboru>...

  2. V okně Nastavení sestavení klikněte na Sestavit.

    Sestavte scénu Unity.

  3. Pokud ještě ne, zaškrtněte projekty Unity C#.

  4. Klikněte na Sestavit. Unity spustí okno Průzkumník souborů, ve kterém potřebujete vytvořit a pak vybrat složku pro sestavení aplikace. Vytvořte teď složku a pojmenujte ji App. Pak s vybranou složkou Aplikace stiskněte vybrat složku.

  5. Unity začne sestavovat projekt do složky Aplikace .

  6. Po dokončení sestavování Unity (může to nějakou dobu trvat), otevře se okno Průzkumník souborů na místě sestavení (zkontrolujte 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 do nového sestavení Unity ( složka aplikace ) a otevřete soubor řešení v sadě Visual Studio.

  2. V konfiguraci řešení vyberte Ladit.

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

    U Microsoft HoloLensu může být jednodušší nastavit tento počítač na vzdálený počítač, takže nejste připojení k počítači. I když budete muset udělat toto:

    • Znát IP adresu vašeho HoloLensu, který najdete v rozšířených možnostech sítě Nastavení > a Internetu > Wi-Fi>. Protokol IPv4 je adresa, kterou byste měli použít.
    • Ujistěte se, že je režim vývojáře zapnutý, najdete v části Aktualizace nastavení > a zabezpečení > pro vývojáře.

    Nasaďte řešení ze sady Visual Studio.

  4. Přejděte do nabídky Sestavení a kliknutím na Nasadit řešení aplikaci načtě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í aplikace zobrazí výzvu k autorizaci přístupu k mikrofonu. Nezapomeňte kliknout na tlačítko ANO .

  7. Teď jste připraveni začít překládat!

Hotová aplikace rozhraní API pro překlad textu

Blahopřejeme, vytvořili jste 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 mluvený?

Cvičení 2

Umožňuje uživateli změnit zdrojové a výstupní jazyky ("from" a "to") v rámci samotné aplikace, takže aplikace nemusí být znovu sestavena pokaždé, když chcete změnit jazyky.