Mr und Azure 303: verstehen in natürlicher Sprache (Luis)MR and Azure 303: Natural language understanding (LUIS)


Hinweis

Die Tutorials der Mixed Reality Academy wurden im Hinblick auf HoloLens (1. Gen.) und immersive Mixed Reality-Headsets entworfen.The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. Daher halten wir es für wichtig, diese Tutorials für Entwickler verfügbar zu halten, die noch nach Anleitung beim Entwickeln für diese Geräte suchen.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. Diese Tutorials werden nicht mit den neuesten Toolsets oder Interaktionen aktualisiert, die für HoloLens 2 verwendet werden.These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. Sie werden gewartet, um weiterhin auf den unterstützten Geräten zu funktionieren.They will be maintained to continue working on the supported devices. Es gibt eine neue Reihe von Tutorials, die in Zukunft veröffentlicht werden, um die Entwicklung für hololens 2 zu veranschaulichen.There will be a new series of tutorials that will be posted in the future that will demonstrate how to develop for HoloLens 2. Dieser Hinweis wird mit einem Link zu diesen Tutorials aktualisiert, wenn diese veröffentlicht werden.This notice will be updated with a link to those tutorials when they are posted.


In diesem Kurs erfahren Sie, wie Sie Language Understanding mithilfe von Azure Cognitive Services mit dem Language Understanding-API in eine gemischte Reality-Anwendung integrieren.In this course, you will learn how to integrate Language Understanding into a mixed reality application using Azure Cognitive Services, with the Language Understanding API.

Lab-Ergebnis

Bei Language Understanding (Luis) handelt es sich um einen Microsoft Azure Dienst, der Anwendungen die Möglichkeit bietet, die Bedeutung von Benutzereingaben zu machen, z. b. durch das Extrahieren der gewünschten Person in ihren eigenen Worten.Language Understanding (LUIS) is a Microsoft Azure service, which provides applications with the ability to make meaning out of user input, such as through extracting what a person might want, in their own words. Dies wird durch Machine Learning erreicht, das die Eingabeinformationen versteht und erfährt und dann mit detaillierten, relevanten Informationen Antworten kann.This is achieved through machine learning, which understands and learns the input information, and then can reply with detailed, relevant, information. Weitere Informationen finden Sie auf der Seite Azure Language Understanding (Luis).For more information, visit the Azure Language Understanding (LUIS) page.

Nachdem Sie diesen Kurs abgeschlossen haben, verfügen Sie über eine gemischte Reality-Headset-Anwendung, die Folgendes ausführen kann:Having completed this course, you will have a mixed reality immersive headset application which will be able to do the following:

  1. Erfassen Sie die Sprache für Benutzereingaben, indem Sie das Mikrofon verwenden, das dem immersiven Headset zugeordnet ist.Capture user input speech, using the Microphone attached to the immersive headset.
  2. Senden Sie das erfasste Diktat an den Azure-Language Understanding Intelligent Service (Luis).Send the captured dictation the Azure Language Understanding Intelligent Service (LUIS).
  3. Achten Sie darauf, dass Luis aus den Sende Informationen Bedeutung hat, die analysiert werden, und versuchen Sie zu bestimmen, ob die Anforderung des Benutzers hergestellt werden soll.Have LUIS extract meaning from the send information, which will be analyzed, and attempt to determine the intent of the user’s request will be made.

Die Entwicklung umfasst das Erstellen einer APP, in der der Benutzer die Sprach-und/oder den Blick verwenden kann, um die Größe und die Farbe der Objekte in der Szene zu ändern.Development will include the creation of an app where the user will be able to use voice and/or gaze to change the size and the color of the objects in the scene. Die Verwendung von Bewegungs Controllern wird nicht abgedeckt.The use of motion controllers will not be covered.

In Ihrer Anwendung liegt es an Ihnen, wie Sie die Ergebnisse in Ihren Entwurf integrieren.In your application, it is up to you as to how you will integrate the results with your design. In diesem Kurs erfahren Sie, wie Sie einen Azure-Dienst in Ihr Unity-Projekt integrieren.This course is designed to teach you how to integrate an Azure Service with your Unity Project. Es ist Ihre Aufgabe, das wissen, das Sie aus diesem Kursgewinnen, zu nutzen, um ihre gemischte Reality-Anwendung zu verbessern.It is your job to use the knowledge you gain from this course to enhance your mixed reality application.

Seien Sie darauf vorbereitet, Luis mehrmals zu trainieren. Dies wird in Kapitel 12behandelt.Be prepared to Train LUIS several times, which is covered in Chapter 12. Wenn Luis schneller trainiert wurde, erhalten Sie bessere Ergebnisse.You will get better results the more times LUIS has been trained.

GeräteunterstützungDevice support

KursCourse HoloLensHoloLens Immersive HeadsetsImmersive headsets
Mr und Azure 303: verstehen in natürlicher Sprache (Luis)MR and Azure 303: Natural language understanding (LUIS) ✔️✔️ ✔️✔️

Hinweis

Dieser Kurs konzentriert sich in erster Linie auf Windows Mixed Reality immersive (VR)-Headsets, aber Sie können auch das, was Sie in diesem Kurs lernen, auf Microsoft hololens anwenden.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. Wenn Sie den Kurs befolgen, finden Sie Hinweise zu allen Änderungen, die Sie möglicherweise zur Unterstützung von hololens verwenden müssen.As you follow along with the course, you will see notes on any changes you might need to employ to support HoloLens. Wenn Sie hololens verwenden, bemerken Sie möglicherweise bei der sprach Erfassung einen Echo.When using HoloLens, you may notice some echo during voice capture.

VoraussetzungenPrerequisites

Hinweis

Dieses Tutorial richtet sich an Entwickler, die über grundlegende Kenntnisse in Unity und c# verfügen.This tutorial is designed for developers who have basic experience with Unity and C#. Beachten Sie auch, dass die Voraussetzungen und Anweisungen in diesem Dokument darstellen, was zum Zeitpunkt des Schreibens getestet und überprüft wurde (Mai 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). Sie können die neueste Software verwenden, die im Artikel Installieren der Tools aufgeführt ist. es sollte jedoch nicht davon ausgegangen werden, dass die Informationen in diesem Kurs genau mit den Informationen in neueren Software vergleichen, als im folgenden aufgeführt sind.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.

Für diesen Kurs empfehlen wir die folgende Hardware und Software:We recommend the following hardware and software for this course:

VorbereitungBefore you start

  1. Um Probleme zu vermeiden, die beim Erstellen dieses Projekts auftreten, wird dringend empfohlen, dass Sie das in diesem Tutorial erwähnte Projekt in einem Stamm Ordner oder in einem Ordner mit einem Stamm Ordner erstellen (lange Ordner Pfade können zur Buildzeit Probleme verursachen).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).

  2. Damit Ihr Computer das Diktat aktivieren kann, wechseln Sie zu Windows-Einstellungen > Datenschutz > Sprache, & eingeben, und drücken Sie dann die Schaltfläche Sprachdienste aktivieren und Vorschläge eingeben.To allow your machine to enable Dictation, go to Windows Settings > Privacy > Speech, Inking & Typing and press on the button Turn On speech services and typing suggestions.

  3. Der Code in diesem Tutorial ermöglicht Ihnen das Aufzeichnen der standardmäßigen Mikrofon Geräte , die auf Ihrem Computer festgelegt sind.The code in this tutorial will allow you to record from the Default Microphone Device set on your machine. Stellen Sie sicher, dass das standardmikrofon als das Mikrofon festgelegt ist, das Sie zum Erfassen Ihrer Stimme verwenden möchten.Make sure the Default Microphone Device is set as the one you wish to use to capture your voice.

  4. Wenn Ihr Headset über ein integriertes Mikrofon verfügt, stellen Sie sicher, dass die Option "Wenn ich mein Headset verwende, zu Headset mic wechseln" in den Einstellungen für das gemischte Reality-Portal aktiviert ist.If your headset has a built-in microphone, make sure the option “When I wear my headset, switch to headset mic” is turned on in the Mixed Reality Portal settings.

    Einrichten des immersiven Headsets

Kapitel 1 – Einrichten des Azure-PortalsChapter 1 – Setup Azure Portal

Wenn Sie den Language Understanding -Dienst in Azure verwenden möchten, müssen Sie eine Instanz des-Dienstanbieter konfigurieren, die für die Anwendung verfügbar gemacht wird.To use the Language Understanding service in Azure, you will need to configure an instance of the service to be made available to your application.

  1. Melden Sie sich beim Azure-Portal an.Log in to the Azure Portal.

    Hinweis

    Wenn Sie noch nicht über ein Azure-Konto verfügen, müssen Sie eines erstellen.If you do not already have an Azure account, you will need to create one. Wenn Sie dieses Tutorial in einer Classroom-oder Lab-Situation befolgen, bitten Sie Ihren Dozenten oder einen der Proctors, Hilfe beim Einrichten Ihres neuen Kontos zu erhalten.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. Wenn Sie angemeldet sind, klicken Sie in der oberen linken Ecke auf neu , suchen Sie nach Language Understanding, und drücken Sie die Eingabe Taste.Once you are logged in, click on New in the top left corner, and search for Language Understanding, and click Enter.

    Erstellen einer LUIS-Ressource

    Hinweis

    Das Wort New wurde möglicherweise durch Create a Resource in neueren Portalen ersetzt.The word New may have been replaced with Create a resource, in newer portals.

  3. Die neue Seite auf der rechten Seite enthält eine Beschreibung des Language Understanding Dienstanbieter.The new page to the right will provide a description of the Language Understanding service. Klicken Sie unten links auf dieser Seite auf die Schaltfläche Erstellen , um eine Instanz dieses Dienstanbieter zu erstellen.At the bottom left of this page, select the Create button, to create an instance of this service.

    Luis-Dienst Erstellung-rechtliche Hinweise

  4. Nachdem Sie auf erstellen geklickt haben, klicken Sie auf:Once you have clicked on Create:

    1. Fügen Sie den gewünschten Namen für diese Dienst Instanz ein.Insert your desired Name for this service instance.

    2. Wählen Sie ein Abonnement aus.Select a Subscription.

    3. Wählen Sie den für Sie geeigneten Tarif aus. Wenn Sie zum ersten Mal einen Luis-Dienst erstellen, sollte Ihnen ein Free-Tarif (mit dem Namen "F0") zur Verfügung stehen.Select the Pricing Tier appropriate for you, if this is the first time creating a LUIS Service, a free tier (named F0) should be available to you. Die kostenlose Zuweisung sollte für diesen Kurs mehr als ausreichend sein.The free allocation should be more than sufficient for this course.

    4. Wählen Sie eine Ressourcengruppe aus, oder erstellen Sie eine neue Ressourcengruppe .Choose a Resource Group or create a new one. Eine Ressourcengruppe bietet eine Möglichkeit zum überwachen, Steuern des Zugriffs, bereitstellen und Verwalten der Abrechnung für eine Sammlung von Azure-Ressourcen.A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. Es wird empfohlen, alle Azure-Dienste, die einem einzelnen Projekt (z. b. diesen Kursen) zugeordnet sind, in einer gemeinsamen Ressourcengruppe zu speichern.It is recommended to keep all the Azure services associated with a single project (e.g. such as these courses) under a common resource group).

      Weitere Informationen zu Azure-Ressourcengruppen finden Sie im Artikel Ressourcengruppe.If you wish to read more about Azure Resource Groups, please visit the resource group article.

    5. Bestimmen Sie den Speicherort für Ihre Ressourcengruppe (wenn Sie eine neue Ressourcengruppe erstellen).Determine the Location for your resource group (if you are creating a new Resource Group). Der Speicherort wäre idealerweise in der Region, in der die Anwendung ausgeführt wird.The location would ideally be in the region where the application would run. Einige Azure-Ressourcen sind nur in bestimmten Regionen verfügbar.Some Azure assets are only available in certain regions.

    6. Außerdem müssen Sie bestätigen, dass Sie die auf diesen Dienst angewendeten Geschäftsbedingungen verstanden haben.You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    7. Klicken Sie auf Erstellen.Select Create.

      Erstellen eines Luis-Dienstanbieter-Benutzereingabe

  5. Nachdem Sie auf Erstellen geklickt haben, müssen Sie warten, bis der Dienst erstellt wurde. dieser Vorgang kann einige Minuten in Anspruch nehmen.Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  6. Nachdem die Dienst Instanz erstellt wurde, wird im Portal eine Benachrichtigung angezeigt.A notification will appear in the portal once the Service instance is created.

    Neues Azure-Benachrichtigungs Image

  7. Klicken Sie auf die Benachrichtigung, um die neue Dienst Instanz zu untersuchen.Click on the notification to explore your new Service instance.

    Benachrichtigung bei erfolgreicher Ressourcen Erstellung

  8. Klicken Sie in der Benachrichtigung auf die Schaltfläche Gehe zu Ressource , um die neue Dienst Instanz zu untersuchen.Click the Go to resource button in the notification to explore your new Service instance. Sie gelangen zu ihrer neuen Luis-Dienst Instanz.You will be taken to your new LUIS service instance.

    Zugriff auf Luis-Schlüssel

  9. In diesem Lernprogramm muss Ihre Anwendung Aufrufe an Ihren Dienst durchführen. Dies erfolgt über den Abonnement Schlüssel Ihres dienstanzschlüssels.Within this tutorial, your application will need to make calls to your service, which is done through using your service’s Subscription Key.

  10. Navigieren Sie auf der Seite " Schnellstart " Ihres Luis-API -Diensts zum ersten Schritt, rufen Sie Ihre Schlüssel ab, und klicken Sie auf " Schlüssel " (Sie können dies auch erreichen, indem Sie auf die blauen Hyperlink-Schlüssel klicken, die sich im Navigationsmenü der Dienste befinden und durch das Schlüsselsymbol gekennzeichnet sind).From the Quick start page, of your LUIS API 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). Dadurch werden die Dienst Schlüssel angezeigt.This will reveal your service Keys.

  11. Erstellen Sie eine Kopie von einem der angezeigten Schlüssel, da Sie dies später in Ihrem Projekt benötigen.Take a copy of one of the displayed keys, as you will need this later in your project.

  12. Klicken Sie auf der Seite Dienst auf Language Understanding Portal , um zu der Webseite umgeleitet zu werden, die Sie zum Erstellen des neuen Dienstanbieter in der Luis-App verwenden.In the Service page, click on Language Understanding Portal to be redirected to the webpage which you will use to create your new Service, within the LUIS App.

Kapitel 2 – das Language Understanding-PortalChapter 2 – The Language Understanding Portal

In diesem Abschnitt erfahren Sie, wie Sie eine Luis-App im Luis-Portal erstellen.In this section you will learn how to make a LUIS App on the LUIS Portal.

Wichtig

Beachten Sie, dass das Einrichten von Entitäten, Intents und Äußerungen in diesem Kapitel nur der erste Schritt beim Erstellen eines Luis-diengs ist: Sie müssen den Dienst auch mehrmals neu trainieren, um ihn genauer zu gestalten.Please be aware, that setting up the Entities, Intents, and Utterances within this chapter is only the first step in building your LUIS service: you will also need to retrain the service, several times, so to make it more accurate. Das erneute Trainieren Ihres Dienstanbieter wird im letzten Kapitel dieses Kurses behandelt. Stellen Sie also sicher, dass Sie den Dienst fertiggestellt haben.Retraining your service is covered in the last Chapter of this course, so ensure that you complete it.

  1. Wenn Sie das Language Understanding-Portal erreicht haben, müssen Sie sich ggf. mit denselben Anmelde Informationen wie Ihre Azure-Portal anmelden, falls Sie dies noch nicht getan haben.Upon reaching the Language Understanding Portal, you may need to login, if you are not already, with the same credentials as your Azure portal.

    Luis-Anmeldeseite

  2. Wenn Sie zum ersten Mal Luis verwenden, müssen Sie zum unteren Rand der Willkommensseite Scrollen, um die Schaltfläche " Luis-app erstellen " zu suchen und darauf zu klicken.If this is your first time using LUIS, you will need to scroll down to the bottom of the welcome page, to find and click on the Create LUIS app button.

    Seite "Luis-app erstellen"

  3. Klicken Sie nach der Anmeldung auf " meine apps " (wenn Sie sich derzeit nicht in diesem Abschnitt befinden).Once logged in, click My apps (if you are not in that section currently). Klicken Sie dann auf neue APP erstellen.You can then click on Create new app.

    Luis-my Apps-Image

  4. Benennen Sie Ihre APP.Give your app a Name.

  5. Wenn Ihre APP eine andere Sprache als Englisch verstehen soll, sollten Sie die Kultur in die entsprechende Sprache ändern.If your app is supposed to understand a language different from English, you should change the Culture to the appropriate language.

  6. Hier können Sie auch eine Beschreibung ihrer neuen Luis-app hinzufügen.Here you can also add a Description of your new LUIS app.

    Luis: Erstellen einer neuen App

  7. Wenn Sie auf " done" klicken, geben Sie die buildseite ihrer neuen Luis -Anwendung ein.Once you press Done, you will enter the Build page of your new LUIS application.

  8. Es gibt einige wichtige Konzepte, die Sie kennen sollten:There are a few important concepts to understand here:

    • Intent stellt die Methode dar, die nach einer Abfrage des Benutzers aufgerufen wird.Intent, represents the method that will be called following a query from the user. Eine Absicht kann über eine oder mehrere Entitäten verfügen.An INTENT may have one or more ENTITIES.
    • Die Entität ist eine Komponente der Abfrage, die die für die Absicht relevanten Informationen beschreibt.Entity, is a component of the query that describes information relevant to the INTENT.
    • Äußerungen sind Beispiele für Abfragen, die vom Entwickler bereitgestellt werden, mit denen Luis sich selbst trainiert.Utterances, are examples of queries provided by the developer, that LUIS will use to train itself.

Wenn diese Konzepte nicht ganz klar sind, machen Sie sich keine Sorgen, da dieser Kurs Sie in diesem Kapitel näher erläutern wird.If these concepts are not perfectly clear, do not worry, as this course will clarify them further in this chapter.

Zunächst erstellen Sie die Entitäten , die zum Erstellen dieses Kurses benötigt werden.You will begin by creating the Entities needed to build this course.

  1. Klicken Sie auf der linken Seite der Seite auf Entitäten, und klicken Sie dann auf neue Entität erstellen.On the left side of the page, click on Entities, then click on Create new entity.

    Neue Entität erstellen

  2. Nennen Sie die neue Entitäts Farbe, legen Sie den Typ auf Simple fest, und drücken Sie dann auf done.Call the new Entity color, set its type to Simple, then press Done.

    Einfache Entitäts Farbe erstellen

  3. Wiederholen Sie diesen Vorgang, um drei (3) weitere einfache Entitäten namens zu erstellen:Repeat this process to create three (3) more Simple Entities named:

    • Upsizingupsize
    • Verkleinerndownsize
    • Zieltarget

Das Ergebnis sollte wie in der folgenden Abbildung aussehen:The result should look like the image below:

Ergebnis der Entitäts Erstellung

An dieser Stelle können Sie mit dem Erstellen von Intents beginnen.At this point you can begin creating Intents.

Warnung

Löschen Sie nicht die Absicht " keine ".Do not delete the None intent.

  1. Klicken Sie auf der linken Seite der Seite auf Intents, und klicken Sie dann auf Create New Intent.On the left side of the page, click on Intents, then click on Create new intent.

    Neue Intents erstellen

  2. Nennen Sie die neue Intent changeobjectcolor.Call the new Intent ChangeObjectColor.

    Wichtig

    Dieser beabsichtigte Name wird im Code weiter unten in diesem Kurs verwendet. verwenden Sie daher für optimale Ergebnisse den Namen genau wie angegeben.This Intent name is used within the code later in this course, so for best results, use this name exactly as provided.

Nachdem Sie den Namen bestätigt haben, werden Sie zur Intents-Seite weitergeleitet.Once you confirm the name you will be directed to the Intents Page.

Seite "Luis-Intents"

Sie werden feststellen, dass es ein Textfeld gibt, in dem Sie aufgefordert werden, 5 oder mehr unterschiedliche Äußerungen einzugeben.You will notice that there is a textbox asking you to type 5 or more different Utterances.

Hinweis

Luis konvertiert alle Äußerungen in Kleinbuchstaben.LUIS converts all Utterances to lower case.

  1. Fügen Sie die folgende Äußerung in das Textfeld Top ein (aktuell mit dem Texttyp etwa 5 Beispiele...Insert the following Utterance in the top textbox (currently with the text Type about 5 examples… ), und drücken Sie die Eingabe Taste:), and press Enter:
The color of the cylinder must be red

Sie werden feststellen, dass die neue Äußerung in einer Liste unterhalb von angezeigt wird.You will notice that the new Utterance will appear in a list underneath.

Fügen Sie im Anschluss an denselben Prozess die folgenden sechs (6) Äußerungen ein:Following the same process, insert the following six (6) Utterances:

make the cube black

make the cylinder color white

change the sphere to red

change it to green

make this yellow

change the color of this object to blue

Für jede Äußerung, die Sie erstellt haben, müssen Sie identifizieren, welche Wörter von Luis als Entitäten verwendet werden sollen.For each Utterance you have created, you must identify which words should be used by LUIS as Entities. In diesem Beispiel müssen Sie alle Farben als Farb Entität und den gesamten möglichen Verweis auf ein Ziel als Ziel Entität bezeichnen.In this example you need to label all the colors as a color Entity, and all the possible reference to a target as a target Entity.

  1. Klicken Sie hierzu in der ersten Äußerung auf den Word- Zylinder , und wählen Sie Ziel aus.To do so, try clicking on the word cylinder in the first Utterance and select target.

    Erkennen von Ausdrucks Zielen

  2. Klicken Sie nun auf das Rote Wort in der ersten Äußerung, und wählen Sie Farbe aus.Now click on the word red in the first Utterance and select color.

    Identifizieren von Ausdrucks Entitäten

  3. Bezeichnen Sie auch die nächste Zeile, wobei Cube ein Ziel sein sollte und schwarz eine Farbe sein sollte.Label the next line also, where cube should be a target, and black should be a color. Beachten Sie auch die Verwendung der Wörter ' this ', ' it ' und ' This Object ', die wir bereitstellen, damit auch nicht spezifische Zieltypen verfügbar sind.Notice also the use of the words ‘this’, ‘it’, and ‘this object’, which we are providing, so to have non-specific target types available also.

  4. Wiederholen Sie den obigen Prozess, bis alle Äußerungen über die gekennzeichneten Entitäten verfügen.Repeat the process above until all the Utterances have the Entities labelled. Wenn Sie Hilfe benötigen, sehen Sie sich das folgende Bild an.See the below image if you need help.

    Tipp

    Wenn Sie Wörter auswählen, um sie als Entitäten zu beschriften, gelten folgende Regeln:When selecting words to label them as entities:

    • Klicken Sie einfach auf die einzelnen Wörter.For single words just click them.
    • Für einen Satz von zwei oder mehr Wörtern klicken Sie am Anfang und dann am Ende der Menge.For a set of two or more words, click at the beginning and then at the end of the set.

    Hinweis

    Sie können die UMSCHALT Fläche Tokens anzeigen verwenden, um zwischen Entitäten/Tokens anzuzeigen.You can use the Tokens View toggle button to switch between Entities / Tokens View!

  5. Die Ergebnisse sollten wie in den folgenden Abbildungen dargestellt werden, die die Entitäten/Tokens anzeigen:The results should be as seen in the images below, showing the Entities / Tokens View:

    Token & Entitäts Sichten

  6. Klicken Sie an dieser Stelle oben rechts auf der Seite auf die Schaltfläche trainieren , und warten Sie, bis der kleine Round-Indikator darauf Grün zeigt.At this point press the Train button at the top-right of the page and wait for the small round indicator on it to turn green. Dies deutet darauf hin, dass Luis erfolgreich trainiert wurde, um diese Absicht zu erkennen.This indicates that LUIS has been successfully trained to recognize this Intent.

    Train Luis

  7. Erstellen Sie als Übung eine neue Absicht namens changeobjectsize, indem Sie die Entitäten target, Upsizing und verkleinern verwenden.As an exercise for you, create a new Intent called ChangeObjectSize, using the Entities target, upsize, and downsize.

  8. Fügen Sie nach dem gleichen Prozess wie die vorherige Absicht die folgenden acht (8) Äußerungen für die Größen Änderung ein:Following the same process as the previous Intent, insert the following eight (8) Utterances for Size change:

    increase the dimensions of that
    
    reduce the size of this
    
    i want the sphere smaller
    
    make the cylinder bigger
    
    size down the sphere
    
    size up the cube
    
    decrease the size of that object
    
    increase the size of this object
    
  9. Das Ergebnis sollte wie in der folgenden Abbildung aussehen:The result should be like the one in the image below:

    Einrichten der changeobjectsize-Token/-Entitäten

  10. Nachdem beide Intents, changeobjectcolor und changeobjectsize erstellt und trainiert wurden, klicken Sie oben auf der Seite auf die Schaltfläche veröffentlichen .Once both Intents, ChangeObjectColor and ChangeObjectSize, have been created and trained, click on the PUBLISH button on top of the page.

    Luis-Dienst veröffentlichen

  11. Auf der Veröffentlichungs Seite beenden und veröffentlichen Sie Ihre Luis-APP, damit Sie von Ihrem Code aus darauf zugreifen können.On the Publish page you will finalize and publish your LUIS App so that it can be accessed by your code.

    1. Legen Sie die Dropdown- Veröffentlichung auf Production fest.Set the drop down Publish To as Production.

    2. Legen Sie die Zeitzone auf die Zeitzone fest.Set the Timezone to your time zone.

    3. Aktivieren Sie das Kontrollkästchen alle vorhergesagten Intent-Ergebnisse einschließen.Check the box Include all predicted intent scores.

    4. Klicken Sie auf in Produktions Slot veröffentlichen.Click on Publish to Production Slot.

      Veröffentlichungseinstellungen

  12. Im Abschnitt Ressourcen und Schlüssel:In the section Resources and Keys:

    1. Wählen Sie die Region aus, die Sie für die Dienst Instanz im Azure-Portal festlegen.Select the region you set for service instance in the Azure Portal.
    2. Sie werden feststellen, dass ein Starter_Key -Element unten angezeigt wird.You will notice a Starter_Key element below, ignore it.
    3. Klicken Sie auf Schlüssel hinzufügen , und fügen Sie den Schlüssel ein, den Sie beim Erstellen Ihrer Dienst Instanz im Azure-Portal abgerufen haben.Click on Add Key and insert the Key that you obtained in the Azure Portal when you created your Service instance. Wenn Ihr Azure-und das Luis-Portal beim gleichen Benutzer angemeldet sind, erhalten Sie Dropdown Menüs für den Mandanten Namen, den Abonnement Namen und den Schlüssel , den Sie verwenden möchten (hat denselben Namen wie zuvor im Azure-Portal angegeben).If your Azure and the LUIS portal are logged into the same user, you will be provided drop-down menus for Tenant name, Subscription Name, and the Key you wish to use (will have the same name as you provided previously in the Azure Portal.

    Wichtig

    Nehmen Sie unter Endpunkt eine Kopie des Endpunkts an, der dem von Ihnen eingefügten Schlüssel entspricht, und verwenden Sie ihn bald in Ihrem Code.Underneath Endpoint, take a copy of the endpoint corresponding to the Key you have inserted, you will soon use it in your code.

Kapitel 3 – Einrichten des Unity-ProjektsChapter 3 – Set up the Unity project

Im folgenden finden Sie eine typische Einrichtung für die Entwicklung mit gemischter Realität und eine gute Vorlage für andere Projekte.The following is a typical set up for developing with the mixed reality, and as such, is a good template for other projects.

  1. Öffnen Sie Unity , und klicken Sie auf neu.Open Unity and click New.

    Starten Sie ein neues Unity-Projekt.

  2. Sie müssen nun einen Unity-Projektnamen angeben und MR_LUIS einfügen.You will now need to provide a Unity Project name, insert MR_LUIS. Stellen Sie sicher, dass Projekttyp auf 3D festgelegt ist.Make sure the project type is set to 3D. Legen Sie den Speicherort auf einen geeigneten Speicherort fest (denken Sie daran, dass die Stamm Verzeichnisse besser sind).Set the Location to somewhere appropriate for you (remember, closer to root directories is better). Klicken Sie dann auf Projekt erstellen.Then, click Create project.

    Geben Sie Details für ein neues Unity-Projekt an.

  3. Wenn Unity geöffnet ist, sollten Sie überprüfen, dass der Standard Skript-Editor auf Visual Studio festgelegt ist.With Unity open, it is worth checking the default Script Editor is set to Visual Studio. Wechseln Sie zu Edit > Preferences (Einstellungen bearbeiten), und navigieren Sie dann im neuen Fenster zu externe Tools.Go to Edit > Preferences and then from the new window, navigate to External Tools. Ändern Sie den Editor für externe Skripts in Visual Studio 2017.Change External Script Editor to Visual Studio 2017. Schließen Sie das Fenster " Einstellungen ".Close the Preferences window.

    Skript-Editor-Einstellung aktualisieren.

  4. Navigieren Sie als nächstes zu Datei > Buildeinstellungen , und schalten Sie die Plattform auf universelle Windows-Plattform, indem Sie auf die Schaltfläche Plattform wechseln klicken.Next, go to File > Build Settings and switch the platform to Universal Windows Platform, by clicking on the Switch Platform button.

    Fenster "Buildeinstellungen", Plattform zu UWP wechseln.

  5. Wechseln Sie zu Datei > Build-Einstellungen , und stellen Sie Folgendes sicher:Go to File > Build Settings and make sure that:

    1. Das Zielgerät ist auf ein beliebiges Gerät festgelegt.Target Device is set to Any Device

      Legen Sie für Microsoft hololens das Zielgerät auf hololens fest.For the Microsoft HoloLens, set Target Device to HoloLens.

    2. Der Buildtyp ist auf D3D festgelegt.Build Type is set to D3D

    3. SDK ist auf neueste installierte Version festgelegt.SDK is set to Latest installed

    4. Visual Studio-Version ist auf neueste installierte Version festgelegt.Visual Studio Version is set to Latest installed

    5. Build und Run sind auf lokaler Computer festgelegt.Build and Run is set to Local Machine

    6. Speichern Sie die Szene, und fügen Sie Sie dem Build hinzu.Save the scene and add it to the build.

      1. Wählen Sie hierzu die Option geöffnete Szenen hinzufügen aus.Do this by selecting Add Open Scenes. Ein Fenster zum Speichern wird angezeigt.A save window will appear.

        Klicken Sie auf Schaltfläche "Open Szenen

      2. Erstellen Sie einen neuen Ordner für dieses und jede zukünftige Szene, und wählen Sie dann die Schaltfläche neuer Ordner aus, um einen neuen Ordner zu erstellen.Create a new folder for this, and any future, scene, then select the New folder button, to create a new folder, name it Scenes.

        Neuen Ordner "Skripts" erstellen

      3. Öffnen Sie den neu erstellten Ordner Szenen , geben Sie im Feld Dateiname: Text MR_LuisScene ein, und klicken Sie dann auf Speichern.Open your newly created Scenes folder, and then in the File name: text field, type MR_LuisScene, then press Save.

        Benennen Sie neue Szene.

    7. Die restlichen Einstellungen in den Buildeinstellungen sollten vorerst als Standard belassen werden.The remaining settings, in Build Settings, should be left as default for now.

  6. Klicken Sie im Fenster Buildeinstellungen auf die Schaltfläche Player Einstellungen . Dadurch wird der entsprechende Bereich in dem Bereich geöffnet, in dem sich der Inspektor befindet.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.

    Öffnen Sie die Player-Einstellungen.

  7. In diesem Bereich müssen einige Einstellungen überprüft werden:In this panel, a few settings need to be verified:

    1. Auf der Registerkarte andere Einstellungen :In the Other Settings tab:

      1. Die Lauf Zeit Version der Skript Erstellung muss stabil sein (.NET 3,5-Entsprechung).Scripting Runtime Version should be Stable (.NET 3.5 Equivalent).

      2. Skript -Back-End sollte .net seinScripting Backend should be .NET

      3. API-Kompatibilitäts Grad sollte .NET 4,6 lautenAPI Compatibility Level should be .NET 4.6

        Aktualisieren Sie andere Einstellungen.

    2. Überprüfen Sie auf der Registerkarte Veröffentlichungs Einstellungen unter Funktionen Folgendes:Within the Publishing Settings tab, under Capabilities, check:

      1. InternetClientInternetClient

      2. MikrofonMicrophone

        Veröffentlichungs Einstellungen werden aktualisiert.

    3. Weiter unten im Bereich in den XR-Einstellungen (siehe Veröffentlichungs Einstellungen), unterstützt Tick Virtual Reality, stellen Sie sicher, dass das Windows Mixed Reality SDK hinzugefügt wurde.Further down the panel, in XR Settings (found below Publish Settings), tick Virtual Reality Supported, make sure the Windows Mixed Reality SDK is added.

      Aktualisieren Sie die X R-Einstellungen.

  8. Zurück in Buildeinstellungen : Unity-c# -Projekte sind nicht mehr abgeblendet. Aktivieren Sie das Kontrollkästchen neben this.Back in Build Settings Unity C# Projects is no longer greyed out; tick the checkbox next to this.

  9. Schließen Sie das Fenster „Build Settings“ (Buildeinstellungen).Close the Build Settings window.

  10. Speichern Sie Ihre Szene und Ihr Projekt (Datei > speichern Sie Szenen/Dateien > speichern Sie das Projekt).Save your Scene and Project (FILE > SAVE SCENE / FILE > SAVE PROJECT).

Kapitel 4 – Erstellen der SzeneChapter 4 – Create the scene

Wichtig

Wenn Sie die Unity-Setup Komponente dieses Kurses überspringen und direkt mit dem Code fortfahren möchten, können Sie dieses . unitypackageherunterladen, es als benutzerdefiniertes Paketin Ihr Projekt importieren und dann aus Kapitel 5fortfahren.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.

  1. Klicken Sie mit der rechten Maustaste in einen leeren Bereich des Bereichs Hierarchie, und fügen Sie unter 3D-Objekt eine Ebene hinzu.Right-click in an empty area of the Hierarchy Panel, under 3D Object, add a Plane.

    Erstellen Sie eine Ebene.

  2. Wenn Sie erneut mit der rechten Maustaste in der Hierarchie klicken, um weitere Objekte zu erstellen, ist das ausgewählte Objekt das übergeordnete Objekt des neuen Objekts, wenn Sie noch das letzte Objekt ausgewählt haben.Be aware that when you right-click within the Hierarchy again to create more objects, if you still have the last object selected, the selected object will be the parent of your new object. Vermeiden Sie dieses Problem, indem Sie auf einen leeren Bereich innerhalb der Hierarchie klicken und dann mit der rechten Maustaste klicken.Avoid this left-clicking in an empty space within the Hierarchy, and then right-clicking.

  3. Wiederholen Sie das oben beschriebene Verfahren, um die folgenden Objekte hinzuzufügen:Repeat the above procedure to add the following objects:

    1. SphereSphere
    2. ZylinderCylinder
    3. CubeCube
    4. 3D-Text3D Text
  4. Die resultierende Szenen Hierarchie sollte wie in der folgenden Abbildung aussehen:The resulting scene Hierarchy should be like the one in the image below:

    Einrichtung der Szenen Hierarchie.

  5. Klicken Sie mit der linken Maustaste auf die Hauptkamera , um Sie auszuwählen. im Inspektor-Panel sehen Sie das Kamera Objekt mit allen zugehörigen Komponenten.Left click on the Main Camera to select it, look at the Inspector Panel you will see the Camera object with all the its components.

  6. Klicken Sie auf die Schaltfläche Komponente hinzufügen , die sich am unteren Rand des inspektorbereichs befindet.Click on the Add Component button located at the very bottom of the Inspector Panel.

    Audioquelle hinzufügen

  7. Suchen Sie nach der Komponente namens Audioquelle, wie oben gezeigt.Search for the component called Audio Source, as shown above.

  8. Stellen Sie außerdem sicher, dass die Transformations Komponente der Hauptkamera auf (0, 0, 0) festgelegt ist. Klicken Sie hierzu auf das Zahnrad Symbol neben der Transformations Komponente der Kamera und dann auf Zurücksetzen.Also make sure that the Transform component of the Main Camera is set to (0,0,0), this can be done by pressing the Gear icon next to the Camera’s Transform component and selecting Reset. Die Transformations Komponente sollte dann wie folgt aussehen:The Transform component should then look like:

    1. Die Position ist auf 0, 0, 0(null) festgelegt.Position is set to 0, 0, 0.
    2. Drehung ist auf 0, 0, 0 festgelegt.Rotation is set to 0, 0, 0.

    Hinweis

    Für Microsoft hololens müssen Sie auch Folgendes ändern, das Teil der Kamera Komponente ist, die sich auf der Hauptkamera befindet:For the Microsoft HoloLens, you will need to also change the following, which are part of the Camera component, which is on your Main Camera:

    • Flags löschen: Voll Tonfarbe.Clear Flags: Solid Color.
    • Hintergrund ' Black, Alpha 0 ' – hexadezimal Farbe: #00000000.Background ‘Black, Alpha 0’ – Hex color: #00000000.
  9. Klicken Sie mit der linken Maustaste auf die Ebene , um Sie auszuwählen.Left click on the Plane to select it. Legen Sie im Inspektor-Panel die Transformations Komponente mit den folgenden Werten fest:In the Inspector Panel set the Transform component with the following values:

    X-AchseX Axis Y-AchseY Axis Z-AchseZ Axis
    00 -1-1 00
  10. Klicken Sie mit der linken Maustaste auf die Kugel , um Sie auszuwählen.Left click on the Sphere to select it. Legen Sie im Inspektor-Panel die Transformations Komponente mit den folgenden Werten fest:In the Inspector Panel set the Transform component with the following values:

    X-AchseX Axis Y-AchseY Axis Z-AchseZ Axis
    22 11 22
  11. Klicken Sie mit der linken Maustaste auf den Zylinder , um ihn auszuwählen.Left click on the Cylinder to select it. Legen Sie im Inspektor-Panel die Transformations Komponente mit den folgenden Werten fest:In the Inspector Panel set the Transform component with the following values:

    X-AchseX Axis Y-AchseY Axis Z-AchseZ Axis
    -2-2 11 22
  12. Klicken Sie mit der linken Maustaste auf den Cube , um ihn auszuwählen.Left click on the Cube to select it. Legen Sie im Inspektor-Panel die Transformations Komponente mit den folgenden Werten fest:In the Inspector Panel set the Transform component with the following values:

    Transformation- PositionTransform - Position | Transformation- DrehungTransform - Rotation
    XX JY ZZ | XX JY ZZ
    00 11 44 | 4545 4545 00
  13. Klicken Sie mit der linken Maustaste auf das neue Text Objekt, um es auszuwählen.Left click on the New Text object to select it. Legen Sie im Inspektor-Panel die Transformations Komponente mit den folgenden Werten fest:In the Inspector Panel set the Transform component with the following values:

    Transformation- PositionTransform - Position | Transformieren: skalierenTransform - Scale
    XX JY ZZ | XX JY ZZ
    -2-2 66 99 | 0,10.1 0,10.1 0,10.1
  14. Ändern Sie den Schrift Grad in der texmesh -Komponente in 50.Change Font Size in the Text Mesh component to 50.

  15. Ändern Sie den Namen des textmesh -Objekts in den Diktat Text.Change the name of the Text Mesh object to Dictation Text.

    3D-Text Objekt erstellen

  16. Ihre Hierarchie Panel-Struktur sollte nun wie folgt aussehen:Your Hierarchy Panel structure should now look like this:

    textmesh in der Szene Ansicht

  17. Die endgültige Szene sollte wie in der folgenden Abbildung aussehen:The final scene should look like the image below:

    Die Szenen Ansicht.

Kapitel 5 – Erstellen der Klasse "mikrophonemanager"Chapter 5 – Create the MicrophoneManager class

Das erste Skript, das Sie erstellen, ist die Klasse " mikrophonemanager ".The first Script you are going to create is the MicrophoneManager class. Danach erstellen Sie den luismanager , die Behaviour -Klasse und schließlich die Klasse " Blick " (Sie können all diese jetzt erstellen, obwohl Sie in jedem Kapitel behandelt wird).Following this, you will create the LuisManager, the Behaviours class, and lastly the Gaze class (feel free to create all these now, though it will be covered as you reach each Chapter).

Die Klasse " mikrophonemanager " ist für Folgendes zuständig:The MicrophoneManager class is responsible for:

  • Erkennen des Aufzeichnungs Geräts, das an das Headset oder den Computer angefügt ist (je nachdem, welches der Standard ist).Detecting the recording device attached to the headset or machine (whichever is the default one).
  • Erfassen Sie das Audiomaterial (Voice), und speichern Sie es als Zeichenfolge.Capture the audio (voice) and use dictation to store it as a string.
  • Nachdem die Stimme angehalten wurde, senden Sie die Diktat an die luismanager -Klasse.Once the voice has paused, submit the dictation to the LuisManager class.

So erstellen Sie diese Klasse:To create this class:

  1. Klicken Sie im Projekt Panel mit der rechten Maustaste, und Erstellen Sie > Ordner.Right-click in the Project Panel, Create > Folder. Nennen Sie die Ordner Skripts.Call the folder Scripts.

    Erstellen Sie den Ordner Skripts.

  2. Wenn Sie den Ordner Skripts erstellt haben, doppelklicken Sie darauf, um zu öffnen.With the Scripts folder created, double click it, to open. Klicken Sie dann in diesem Ordner mit der rechten Maustaste auf, > c#-Skript zu erstellen.Then, within that folder, right-click, Create > C# Script. Nennen Sie das Skript " mikrophonemanager".Name the script MicrophoneManager.

  3. Doppelklicken Sie auf " mikrophonemanager ", um die Datei mit Visual Studio zu öffnen.Double click on MicrophoneManager to open it with Visual Studio.

  4. Fügen Sie am Anfang der Datei die folgenden Namespaces hinzu:Add the following namespaces to the top of the file:

        using UnityEngine;
        using UnityEngine.Windows.Speech;
    
  5. Fügen Sie dann die folgenden Variablen in der Klasse " mikrophonemanager " hinzu:Then add the following variables inside the MicrophoneManager class:

        public static MicrophoneManager instance; //help to access instance of this object
        private DictationRecognizer dictationRecognizer;  //Component converting speech to text
        public TextMesh dictationText; //a UI object used to debug dictation result
    
  6. Der Code für die Methoden " Awake () " und " Start () " muss nun hinzugefügt werden.Code for Awake() and Start() methods now needs to be added. Diese werden aufgerufen, wenn die-Klasse initialisiert:These will be called when the class initializes:

        private void Awake()
        {
            // allows this class instance to behave like a singleton
            instance = this;
        }
    
        void Start()
        {
            if (Microphone.devices.Length > 0)
            {
                StartCapturingAudio();
                Debug.Log("Mic Detected");
            }
        }
    
  7. Nun benötigen Sie die Methode, die die APP verwendet, um die sprach Erfassung zu starten und anzuhalten, und Sie an die luismanager -Klasse weiterzuleiten, die Sie bald erstellen werden.Now you need the method that the App uses to start and stop the voice capture, and pass it to the LuisManager class, that you will build soon.

        /// <summary>
        /// Start microphone capture, by providing the microphone as a continual audio source (looping),
        /// then initialise the DictationRecognizer, which will capture spoken words
        /// </summary>
        public void StartCapturingAudio()
        {
            if (dictationRecognizer == null)
            {
                dictationRecognizer = new DictationRecognizer
                {
                    InitialSilenceTimeoutSeconds = 60,
                    AutoSilenceTimeoutSeconds = 5
                };
    
                dictationRecognizer.DictationResult += DictationRecognizer_DictationResult;
                dictationRecognizer.DictationError += DictationRecognizer_DictationError;
            }
            dictationRecognizer.Start();
            Debug.Log("Capturing Audio...");
        }
    
        /// <summary>
        /// Stop microphone capture
        /// </summary>
        public void StopCapturingAudio()
        {
            dictationRecognizer.Stop();
            Debug.Log("Stop Capturing Audio...");
        }
    
  8. Fügen Sie einen Diktat Handler hinzu, der aufgerufen wird, wenn die Stimme angehalten wird.Add a Dictation Handler that will be invoked when the voice pauses. Diese Methode übergibt den Diktat Text an die luismanager -Klasse.This method will pass the dictation text to the LuisManager class.

        /// <summary>
        /// This handler is called every time the Dictation detects a pause in the speech. 
        /// This method will stop listening for audio, send a request to the LUIS service 
        /// and then start listening again.
        /// </summary>
        private void DictationRecognizer_DictationResult(string dictationCaptured, ConfidenceLevel confidence)
        {
            StopCapturingAudio();
            StartCoroutine(LuisManager.instance.SubmitRequestToLuis(dictationCaptured, StartCapturingAudio));
            Debug.Log("Dictation: " + dictationCaptured);
            dictationText.text = dictationCaptured;
        }
    
        private void DictationRecognizer_DictationError(string error, int hresult)
        {
            Debug.Log("Dictation exception: " + error);
        }
    

    Wichtig

    Löschen Sie die Update () -Methode, da Sie von dieser Klasse nicht verwendet wird.Delete the Update() method since this class will not use it.

  9. Stellen Sie sicher, dass Sie die Änderungen in Visual Studio speichern, bevor Sie zu Unity zurückkehren.Be sure to save your changes in Visual Studio before returning to Unity.

    Hinweis

    An dieser Stelle bemerken Sie einen Fehler, der im Konsolen Panel des Unity-Editors angezeigt wird.At this point you will notice an error appearing in the Unity Editor Console Panel. Dies liegt daran, dass der Code auf die luismanager -Klasse verweist, die Sie im nächsten Kapitel erstellen werden.This is because the code references the LuisManager class which you will create in the next Chapter.

Kapitel 6 – Erstellen der luismanager-KlasseChapter 6 – Create the LUISManager class

Es ist an der Zeit, die luismanager -Klasse zu erstellen, die den Aufruf an den Azure Luis-Dienst durchführt.It is time for you to create the LuisManager class, which will make the call to the Azure LUIS service.

Der Zweck dieser Klasse besteht darin, den Diktat Text von der Klasse " mikrophonemanager " zu empfangen und an die zu analysierende Azure-Language Understanding-API zu senden.The purpose of this class is to receive the dictation text from the MicrophoneManager class and send it to the Azure Language Understanding API to be analyzed.

Diese Klasse deserialisiert die JSON -Antwort und ruft die entsprechenden Methoden der Behaviour-Klasse auf , um eine Aktion zu initiieren.This class will deserialize the JSON response and call the appropriate methods of the Behaviours class to trigger an action.

So erstellen Sie diese Klasse:To create this class:

  1. Doppelklicken Sie auf den Ordner " Scripts ", um ihn zu öffnen.Double click on the Scripts folder, to open it.

  2. Klicken Sie mit der rechten Maustaste in den Ordner Scripts , und klicken Sie auf Create > c#-Skript.Right-click inside the Scripts folder, click Create > C# Script. Benennen Sie das Skript mit " luismanager".Name the script LuisManager.

  3. Doppelklicken Sie auf das Skript, um es in Visual Studio zu öffnen.Double click on the script to open it with Visual Studio.

  4. Fügen Sie am Anfang der Datei die folgenden Namespaces hinzu:Add the following namespaces to the top of the file:

        using System;
        using System.Collections;
        using System.Collections.Generic;
        using System.IO;
        using UnityEngine;
        using UnityEngine.Networking;
    
  5. Beginnen Sie mit dem Erstellen von drei Klassen innerhalb der Klasse " luismanager " (innerhalb derselben Skriptdatei oberhalb der Methode " Start () "), die die deserialisierte JSON-Antwort von Azure darstellt.You will begin by creating three classes inside the LuisManager class (within the same script file, above the Start() method) that will represent the deserialized JSON response from Azure.

        [Serializable] //this class represents the LUIS response
        public class AnalysedQuery
        {
            public TopScoringIntentData topScoringIntent;
            public EntityData[] entities;
            public string query;
        }
    
        // This class contains the Intent LUIS determines 
        // to be the most likely
        [Serializable]
        public class TopScoringIntentData
        {
            public string intent;
            public float score;
        }
    
        // This class contains data for an Entity
        [Serializable]
        public class EntityData
        {
            public string entity;
            public string type;
            public int startIndex;
            public int endIndex;
            public float score;
        }
    
  6. Fügen Sie als nächstes die folgenden Variablen in der Klasse " luismanager " hinzu:Next, add the following variables inside the LuisManager class:

        public static LuisManager instance;
    
        //Substitute the value of luis Endpoint with your own End Point
        string luisEndpoint = "https://westus.api.cognitive... add your endpoint from the Luis Portal";
    
  7. Stellen Sie sicher, dass Sie Ihren Luis-Endpunkt jetzt platzieren (über Ihr Luis-Portal).Make sure to place your LUIS endpoint in now (which you will have from your LUIS portal).

  8. Code für die Awa() -Methode muss nun hinzugefügt werden.Code for the Awake() method now needs to be added. Diese Methode wird aufgerufen, wenn die-Klasse initialisiert:This method will be called when the class initializes:

        private void Awake()
        {
            // allows this class instance to behave like a singleton
            instance = this;
        }
    
  9. Nun benötigen Sie die Methoden, die von dieser Anwendung verwendet werden, um die von der Klasse " -Klasse" empfangene Diktat an Luis zu senden und die Antwort zu empfangen und zu deserialisieren.Now you need the methods this application uses to send the dictation received from the MicrophoneManager class to LUIS, and then receive and deserialize the response.

  10. Nachdem der Wert der Absicht und der zugeordneten Entitäten ermittelt wurden, werden Sie an die Instanz der Behaviour-Klasse über mittelt, um die beabsichtigte Aktion zu initiieren.Once the value of the Intent, and associated Entities, have been determined, they are passed to the instance of the Behaviours class to trigger the intended action.

        /// <summary>
        /// Call LUIS to submit a dictation result.
        /// The done Action is called at the completion of the method.
        /// </summary>
        public IEnumerator SubmitRequestToLuis(string dictationResult, Action done)
        {
            string queryString = string.Concat(Uri.EscapeDataString(dictationResult));
    
            using (UnityWebRequest unityWebRequest = UnityWebRequest.Get(luisEndpoint + queryString))
            {
                yield return unityWebRequest.SendWebRequest();
    
                if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
                {
                    Debug.Log(unityWebRequest.error);
                }
                else
                {
                    try
                    {
                        AnalysedQuery analysedQuery = JsonUtility.FromJson<AnalysedQuery>(unityWebRequest.downloadHandler.text);
    
                        //analyse the elements of the response 
                        AnalyseResponseElements(analysedQuery);
                    }
                    catch (Exception exception)
                    {
                        Debug.Log("Luis Request Exception Message: " + exception.Message);
                    }
                }
    
                done();
                yield return null;
            }
        }
    
  11. Erstellen Sie eine neue Methode mit dem Namen analyseresponcelements () , mit der die resultierende analysedquery gelesen und die Entitäten bestimmt werden.Create a new method called AnalyseResponseElements() that will read the resulting AnalysedQuery and determine the Entities. Nachdem diese Entitäten ermittelt wurden, werden Sie an die Instanz der Behaviour-Klasse zur Verwendung in den Aktionen übermittelt.Once those Entities are determined, they will be passed to the instance of the Behaviours class to use in the actions.

        private void AnalyseResponseElements(AnalysedQuery aQuery)
        {
            string topIntent = aQuery.topScoringIntent.intent;
    
            // Create a dictionary of entities associated with their type
            Dictionary<string, string> entityDic = new Dictionary<string, string>();
    
            foreach (EntityData ed in aQuery.entities)
            {
                entityDic.Add(ed.type, ed.entity);
            }
    
            // Depending on the topmost recognized intent, read the entities name
            switch (aQuery.topScoringIntent.intent)
            {
                case "ChangeObjectColor":
                    string targetForColor = null;
                    string color = null;
    
                    foreach (var pair in entityDic)
                    {
                        if (pair.Key == "target")
                        {
                            targetForColor = pair.Value;
                        }
                        else if (pair.Key == "color")
                        {
                            color = pair.Value;
                        }
                    }
    
                    Behaviours.instance.ChangeTargetColor(targetForColor, color);
                    break;
    
                case "ChangeObjectSize":
                    string targetForSize = null;
                    foreach (var pair in entityDic)
                    {
                        if (pair.Key == "target")
                        {
                            targetForSize = pair.Value;
                        }
                    }
    
                    if (entityDic.ContainsKey("upsize") == true)
                    {
                        Behaviours.instance.UpSizeTarget(targetForSize);
                    }
                    else if (entityDic.ContainsKey("downsize") == true)
                    {
                        Behaviours.instance.DownSizeTarget(targetForSize);
                    }
                    break;
            }
        }
    

    Wichtig

    Löschen Sie die Methoden " Start () " und " Update () ", da Sie von dieser Klasse nicht verwendet werden.Delete the Start() and Update() methods since this class will not use them.

  12. Stellen Sie sicher, dass Sie die Änderungen in Visual Studio speichern, bevor Sie zu Unity zurückkehren.Be sure to save your changes in Visual Studio before returning to Unity.

Hinweis

An diesem Punkt sehen Sie mehrere Fehler, die im Konsolen Panel des Unity-Editors angezeigt werden.At this point you will notice several errors appearing in the Unity Editor Console Panel. Dies liegt daran, dass der Code auf die Verhaltens Klasse verweist, die Sie im nächsten Kapitel erstellen werden.This is because the code references the Behaviours class which you will create in the next Chapter.

Kapitel 7 – Erstellen der Verhaltens KlasseChapter 7 – Create the Behaviours class

Die Verhaltens Klasse löst die Aktionen mithilfe der von der luismanager -Klasse bereitgestellten Entitäten aus.The Behaviours class will trigger the actions using the Entities provided by the LuisManager class.

So erstellen Sie diese Klasse:To create this class:

  1. Doppelklicken Sie auf den Ordner " Scripts ", um ihn zu öffnen.Double click on the Scripts folder, to open it.

  2. Klicken Sie mit der rechten Maustaste in den Ordner Scripts , und klicken Sie auf Create > c#-Skript.Right-click inside the Scripts folder, click Create > C# Script. Benennen Sie das Skript Verhalten.Name the script Behaviours.

  3. Doppelklicken Sie auf das Skript, um es in Visual Studio zu öffnen.Double click on the script to open it with Visual Studio.

  4. Fügen Sie dann die folgenden Variablen in der Verhaltens Klasse hinzu:Then add the following variables inside the Behaviours class:

        public static Behaviours instance;
    
        // the following variables are references to possible targets
        public GameObject sphere;
        public GameObject cylinder;
        public GameObject cube;
        internal GameObject gazedTarget;
    
  5. Fügen Sie den Awa() -Methoden Code hinzu.Add the Awake() method code. Diese Methode wird aufgerufen, wenn die-Klasse initialisiert:This method will be called when the class initializes:

        void Awake()
        {
            // allows this class instance to behave like a singleton
            instance = this;
        }
    
  6. Die folgenden Methoden werden von der luismanager -Klasse aufgerufen (die Sie zuvor erstellt haben), um zu bestimmen, welches Objekt das Ziel der Abfrage ist, und dann die entsprechende Aktion auslöst.The following methods are called by the LuisManager class (which you have created previously) to determine which object is the target of the query and then trigger the appropriate action.

        /// <summary>
        /// Changes the color of the target GameObject by providing the name of the object
        /// and the name of the color
        /// </summary>
        public void ChangeTargetColor(string targetName, string colorName)
        {
            GameObject foundTarget = FindTarget(targetName);
            if (foundTarget != null)
            {
                Debug.Log("Changing color " + colorName + " to target: " + foundTarget.name);
    
                switch (colorName)
                {
                    case "blue":
                        foundTarget.GetComponent<Renderer>().material.color = Color.blue;
                        break;
    
                    case "red":
                        foundTarget.GetComponent<Renderer>().material.color = Color.red;
                        break;
    
                    case "yellow":
                        foundTarget.GetComponent<Renderer>().material.color = Color.yellow;
                        break;
    
                    case "green":
                        foundTarget.GetComponent<Renderer>().material.color = Color.green;
                        break;
    
                    case "white":
                        foundTarget.GetComponent<Renderer>().material.color = Color.white;
                        break;
    
                    case "black":
                        foundTarget.GetComponent<Renderer>().material.color = Color.black;
                        break;
                }          
            }
        }
    
        /// <summary>
        /// Reduces the size of the target GameObject by providing its name
        /// </summary>
        public void DownSizeTarget(string targetName)
        {
            GameObject foundTarget = FindTarget(targetName);
            foundTarget.transform.localScale -= new Vector3(0.5F, 0.5F, 0.5F);
        }
    
        /// <summary>
        /// Increases the size of the target GameObject by providing its name
        /// </summary>
        public void UpSizeTarget(string targetName)
        {
            GameObject foundTarget = FindTarget(targetName);
            foundTarget.transform.localScale += new Vector3(0.5F, 0.5F, 0.5F);
        }
    
  7. Fügen Sie die findtarget () -Methode hinzu, um zu bestimmen, welches der gameobjects das Ziel der aktuellen Absicht ist.Add the FindTarget() method to determine which of the GameObjects is the target of the current Intent. Diese Methode verwendet standardmäßig das als Ziel festgelegte gameobject , wenn in den Entitäten kein explizites Ziel definiert ist.This method defaults the target to the GameObject being “gazed” if no explicit target is defined in the Entities.

        /// <summary>
        /// Determines which object reference is the target GameObject by providing its name
        /// </summary>
        private GameObject FindTarget(string name)
        {
            GameObject targetAsGO = null;
    
            switch (name)
            {
                case "sphere":
                    targetAsGO = sphere;
                    break;
    
                case "cylinder":
                    targetAsGO = cylinder;
                    break;
    
                case "cube":
                    targetAsGO = cube;
                    break;
    
                case "this": // as an example of target words that the user may use when looking at an object
                case "it":  // as this is the default, these are not actually needed in this example
                case "that":
                default: // if the target name is none of those above, check if the user is looking at something
                    if (gazedTarget != null) 
                    {
                        targetAsGO = gazedTarget;
                    }
                    break;
            }
            return targetAsGO;
        }
    

    Wichtig

    Löschen Sie die Methoden " Start () " und " Update () ", da Sie von dieser Klasse nicht verwendet werden.Delete the Start() and Update() methods since this class will not use them.

  8. Stellen Sie sicher, dass Sie die Änderungen in Visual Studio speichern, bevor Sie zu Unity zurückkehren.Be sure to save your changes in Visual Studio before returning to Unity.

Kapitel 8 – Erstellen der "Blick"-KlasseChapter 8 – Create the Gaze Class

Die letzte Klasse, die Sie zum Durchführen dieser APP benötigen, ist die " Gaze "-Klasse.The last class that you will need to complete this app is the Gaze class. Diese Klasse aktualisiert den Verweis auf das gameobject-Objekt , das sich derzeit im visuellen Fokus des Benutzers befindet.This class updates the reference to the GameObject currently in the user’s visual focus.

So erstellen Sie diese Klasse:To create this Class:

  1. Doppelklicken Sie auf den Ordner " Scripts ", um ihn zu öffnen.Double click on the Scripts folder, to open it.

  2. Klicken Sie mit der rechten Maustaste in den Ordner Scripts , und klicken Sie auf Create > c#-Skript.Right-click inside the Scripts folder, click Create > C# Script. Benennen Sie das Skript mit dem Namen.Name the script Gaze.

  3. Doppelklicken Sie auf das Skript, um es in Visual Studio zu öffnen.Double click on the script to open it with Visual Studio.

  4. Fügen Sie den folgenden Code für diese Klasse ein:Insert the following code for this class:

        using UnityEngine;
    
        public class Gaze : MonoBehaviour
        {        
            internal GameObject gazedObject;
            public float gazeMaxDistance = 300;
    
            void Update()
            {
                // Uses a raycast from the Main Camera to determine which object is gazed upon.
                Vector3 fwd = gameObject.transform.TransformDirection(Vector3.forward);
                Ray ray = new Ray(Camera.main.transform.position, fwd);
                RaycastHit hit;
                Debug.DrawRay(Camera.main.transform.position, fwd);
    
                if (Physics.Raycast(ray, out hit, gazeMaxDistance) && hit.collider != null)
                {
                    if (gazedObject == null)
                    {
                        gazedObject = hit.transform.gameObject;
    
                        // Set the gazedTarget in the Behaviours class
                        Behaviours.instance.gazedTarget = gazedObject;
                    }
                }
                else
                {
                    ResetGaze();
                }         
            }
    
            // Turn the gaze off, reset the gazeObject in the Behaviours class.
            public void ResetGaze()
            {
                if (gazedObject != null)
                {
                    Behaviours.instance.gazedTarget = null;
                    gazedObject = null;
                }
            }
        }
    
  5. Stellen Sie sicher, dass Sie die Änderungen in Visual Studio speichern, bevor Sie zu Unity zurückkehren.Be sure to save your changes in Visual Studio before returning to Unity.

Kapitel 9 – Abschließen der Szenen EinrichtungChapter 9 – Completing the scene setup

  1. Um die Einrichtung der Szene abzuschließen, ziehen Sie jedes Skript, das Sie erstellt haben, aus dem Ordner Scripts auf das Hauptkamera Objekt im Bereich Hierarchie.To complete the setup of the scene, drag each script that you have created from the Scripts Folder to the Main Camera object in the Hierarchy Panel.

  2. Wählen Sie die Hauptkamera aus, und sehen Sie sich im Inspektor-Panel an, dass jedes angefügte Skript angezeigt werden sollte. Sie werden feststellen, dass für jedes Skript Parameter vorhanden sind, die noch festgelegt werden müssen.Select the Main Camera and look at the Inspector Panel, you should be able to see each script that you have attached, and you will notice that there are parameters on each script that are yet to be set.

    Die Kamera Verweis Ziele werden festgelegt.

  3. Um diese Parameter korrekt festzulegen, befolgen Sie die folgenden Anweisungen:To set these parameters correctly, follow these instructions:

    1. " Mikrophonemanager":MicrophoneManager:

      • Ziehen Sie das Diktat Text Objekt aus dem Bereich Hierarchie in das Feld Diktat Text Parameter value.From the Hierarchy Panel, drag the Dictation Text object into the Dictation Text parameter value box.
    2. Verhalten im Hierarchie Panel:Behaviours, from the Hierarchy Panel:

      • Ziehen Sie das Sphere -Objekt in das Feld Kugel Verweis Ziel.Drag the Sphere object into the Sphere reference target box.
      • Ziehen Sie den Zylinder in das Feld Zylinder Verweis Ziel.Drag the Cylinder into the Cylinder reference target box.
      • Ziehen Sie den Cube in das Feld Cube Reference Target.Drag the Cube into the Cube reference target box.
    3. Blick:Gaze:

      • Legen Sie die Maximale Länge des Blicks auf 300 fest (sofern nicht bereits geschehen).Set the Gaze Max Distance to 300 (if it is not already).
  4. Das Ergebnis sollte wie in der folgenden Abbildung aussehen:The result should look like the image below:

    Die angezeigte Kamera Verweis Ziele werden angezeigt.

Kapitel 10 – Testen im Unity-EditorChapter 10 – Test in the Unity Editor

Testen Sie, ob die Szenen Einrichtung ordnungsgemäß implementiert ist.Test that the Scene setup is properly implemented.

Stellen Sie Folgendes sicher:Ensure that:

  • Alle Skripts werden an das Hauptkamera Objekt angefügt.All the scripts are attached to the Main Camera object.
  • Alle Felder im Hauptbereich der Kamera Inspektor sind ordnungsgemäß zugewiesen.All the fields in the Main Camera Inspector Panel are assigned properly.
  1. Klicken Sie im Unity-Editor auf die Schaltfläche wieder Gabe .Press the Play button in the Unity Editor. Die APP sollte innerhalb des angefügten immersiven Headsets ausgeführt werden.The App should be running within the attached immersive headset.

  2. Probieren Sie einige Äußerungen aus, z. b.:Try a few utterances, such as:

    make the cylinder red
    
    change the cube to yellow
    
    I want the sphere blue
    
    make this to green
    
    change it to white
    

    Hinweis

    Wenn in der Unity-Konsole eine Fehlermeldung angezeigt wird, dass das Standardaudiogerät geändert wird, funktioniert die Szene möglicherweise nicht wie erwartet.If you see an error in the Unity console about the default audio device changing, the scene may not function as expected. Der Grund hierfür ist die Art und Weise, wie das Mixed Reality-Portal mit integrierten Mikrofonen für Headsets umgeht, auf denen es sich befindet.This is due to the way the mixed reality portal deals with built-in microphones for headsets that have them. Wenn dieser Fehler angezeigt wird, halten Sie die Szene einfach an, und starten Sie Sie erneut, und die Dinge sollten erwartungsgemäß funktionieren.If you see this error, simply stop the scene and start it again and things should work as expected.

Kapitel 11 – erstellen und querladen der UWP-LösungChapter 11 – Build and sideload the UWP Solution

Nachdem Sie sichergestellt haben, dass die Anwendung im Unity-Editor funktioniert, können Sie erstellen und bereitstellen.Once you have ensured that the application is working in the Unity Editor, you are ready to Build and Deploy.

So erstellen Sie Folgendes:To Build:

  1. Speichern Sie die aktuelle Szene, indem Sie auf Datei > speichern klicken.Save the current scene by clicking on File > Save.

  2. Wechseln Sie zu Datei > Buildeinstellungen.Go to File > Build Settings.

  3. Aktivieren Sie das Feld mit dem Namen Unity c#-Projekte (nützlich zum Anzeigen und Debuggen des Codes, nachdem das UWP-Projekt erstellt wurde.Tick the box called Unity C# Projects (useful for seeing and debugging your code once the UWP project is created.

  4. Klicken Sie auf offene Szenen hinzufügen, und klicken Sie dann auf Erstellen.Click on Add Open Scenes, then click Build.

    Fenster mit Buildeinstellungen

  5. Sie werden aufgefordert, den Ordner auszuwählen, in dem Sie die Projekt Mappe erstellen möchten.You will be prompted to select the folder where you want to build the Solution.

  6. Erstellen Sie einen Ordner BUILDS , und erstellen Sie in diesem Ordner einen anderen Ordner mit einem entsprechenden Namen Ihrer Wahl.Create a BUILDS folder and within that folder create another folder with an appropriate name of your choice.

  7. Klicken Sie auf Ordner auswählen , um den Build an diesem Speicherort zu starten.Click Select Folder to begin the build at that location.

    Ordner Create Builds  Select Builds FolderCreate Builds Folder Select Builds Folder

  8. Nachdem die Erstellung von Unity abgeschlossen ist (Dies kann einige Zeit in Anspruch nehmen), sollte ein Datei-Explorer -Fenster am Speicherort des Builds geöffnet werden.Once Unity has finished building (it might take some time), it should open a File Explorer window at the location of your build.

Zum Bereitstellen auf dem lokalen Computer:To Deploy on Local Machine:

  1. Öffnen Sie in Visual Studio die Projektmappendatei, die im vorherigen Kapitelerstellt wurde.In Visual Studio, open the solution file that has been created in the previous Chapter.

  2. Wählen Sie auf der Projektmappenplattform die Option x86, lokaler Computer aus. In the Solution Platform, select x86, Local Machine.

  3. Wählen Sie in der Projektmappenkonfiguration Debuggen.In the Solution Configuration select Debug.

    Für Microsoft hololens ist es möglicherweise einfacher, dies auf den Remote Computer festzulegen, damit Sie nicht auf Ihren Computer über das Team verfügen.For the Microsoft HoloLens, you may find it easier to set this to Remote Machine, so that you are not tethered to your computer. Allerdings müssen Sie auch die folgenden Schritte ausführen:Though, you will need to also do the following:

    • Informieren Sie sich über die IP-Adresse ihrer hololens, die Sie in den Einstellungen > Netzwerk & Internet > Wi-Fi > erweiterten Optionen finden. die IPv4-Adresse ist die Adresse, die Sie verwenden sollten.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.
    • Stellen Sie sicher, dass der Entwicklermodus auf dem in den Einstellungen > Update & Sicherheits > für Entwickler gefunden.Ensure Developer Mode is On; found in Settings > Update & Security > For developers.

    Bereitstellen der App

  4. Wechseln Sie zum Menü Erstellen , und klicken Sie auf Lösung bereitstellen, um die Anwendung auf Ihren Computer zu übertragen.Go to the Build menu and click on Deploy Solution to sideload the application to your machine.

  5. Ihre APP sollte nun in der Liste der installierten apps angezeigt werden, damit Sie gestartet werden können.Your App should now appear in the list of installed apps, ready to be launched!

  6. Nach dem Start werden Sie von der APP aufgefordert, den Zugriff auf das Mikrofon zu autorisieren.Once launched, the App will prompt you to authorize access to the Microphone. Verwenden Sie die Bewegungs Controller, die Spracheingabe oder die Tastatur , um die Schaltfläche Ja zu drücken.Use the Motion Controllers, or Voice Input, or the Keyboard to press the YES button.

Kapitel 12 – verbessern Ihres Luis-DienstanbieterChapter 12 – Improving your LUIS service

Wichtig

Dieses Kapitel ist äußerst wichtig und muss möglicherweise mehrmals durchlaufen werden, da es zur Verbesserung der Genauigkeit ihres Luis-Dienstanbieter beiträgt: Stellen Sie sicher, dass Sie dies durchführen.This chapter is incredibly important, and may need to be iterated upon several times, as it will help improve the accuracy of your LUIS service: ensure you complete this.

Um das von Luis bereitgestellte Maß an Verständnis zu verbessern, müssen Sie neue Äußerungen erfassen und diese zum erneuten trainieren ihrer Luis-App verwenden.To improve the level of understanding provided by LUIS you need to capture new utterances and use them to re-train your LUIS App.

Beispielsweise haben Sie Luis trainiert, um "Zunahme" und "Upsize" zu verstehen, aber möchten Sie nicht, dass Ihre APP auch Wörter wie "vergrößern" versteht?For example, you might have trained LUIS to understand “Increase” and “Upsize”, but wouldn’t you want your app to also understand words like “Enlarge”?

Nachdem Sie die Anwendung mehrmals verwendet haben, wird alles, was Sie bereits erwähnt haben, von Luis gesammelt und im Luis-Portal verfügbar sein.Once you have used your application a few times, everything you have said will be collected by LUIS and available in the LUIS PORTAL.

  1. Wechseln Sie nach diesem Linkzu ihrer Portal Anwendung, und melden Sie sich an.Go to your portal application following this LINK, and Log In.

  2. Wenn Sie mit ihren MS-Anmelde Informationen angemeldet sind, klicken Sie auf den Namen Ihrer APP.Once you are logged in with your MS Credentials, click on your App name.

  3. Klicken Sie Links auf der Seite auf die Schaltfläche Endpunkt Äußerungen überprüfen .Click the Review endpoint utterances button on the left of the page.

    Überprüfen von Äußerungen

  4. Ihnen wird eine Liste der Äußerungen angezeigt, die von ihrer gemischten Reality-Anwendung an Luis gesendet wurden.You will be shown a list of the Utterances that have been sent to LUIS by your mixed reality Application.

    Liste der Äußerungen

Sie werden einige hervorgehobene Entitäten bemerken.You will notice some highlighted Entities.

Wenn Sie mit dem Mauszeiger auf jedes markierte Wort zeigen, können Sie jede Äußerung überprüfen und bestimmen, welche Entität korrekt erkannt wurde, welche Entitäten falsch sind und welche Entitäten übersehen werden.By hovering over each highlighted word, you can review each Utterance and determine which Entity has been recognized correctly, which Entities are wrong and which Entities are missed.

Im obigen Beispiel wurde festgestellt, dass das Wort "Spear" als Ziel hervorgehoben wurde. es ist daher notwendig, den Fehler zu korrigieren, indem Sie mit der Maus auf das Wort zeigen und auf " Bezeichnung entfernen" klicken.In the example above, it was found that the word “spear” had been highlighted as a target, so it necessary to correct the mistake, which is done by hovering over the word with the mouse and clicking Remove Label.

Überprüfen, ob das Bezeichnungs Bild "Ausdrucks Check utterances Remove Label Image

  1. Wenn Sie Äußerungen gefunden haben, die vollständig falsch sind, können Sie Sie mithilfe der Schaltfläche Löschen auf der rechten Seite des Bildschirms löschen.If you find Utterances that are completely wrong, you can delete them using the Delete button on the right side of the screen.

    Falsche Äußerungen löschen

  2. Wenn Sie der Meinung sind, dass Luis die Äußerung ordnungsgemäß interpretiert hat, können Sie das Verständnis überprüfen, indem Sie die Schaltfläche zur ausgerichteten Absicht hinzufügen verwenden.Or if you feel that LUIS has interpreted the Utterance correctly, you can validate its understanding by using the Add To Aligned Intent button.

    Zu ausgerichtete Absicht hinzufügen

  3. Nachdem Sie alle angezeigten Äußerungen sortiert haben, versuchen Sie, die Seite erneut zu laden, um festzustellen, ob weitere Informationen verfügbar sind.Once you have sorted all the displayed Utterances, try and reload the page to see if more are available.

  4. Es ist sehr wichtig, diesen Prozess so oft wie möglich zu wiederholen, um das Verständnis Ihrer Anwendungen zu verbessern.It is very important to repeat this process as many times as possible to improve your application understanding.

Viel Spaß!Have fun!

Ihre beendete Luis-integrierte AnwendungYour finished LUIS Integrated application

Herzlichen Glückwunsch, Sie haben eine Mixed Reality-App erstellt, die den Azure Language Understanding Intelligence-Dienst nutzt, um zu verstehen, was ein Benutzer sagt und welche Informationen Sie tun.Congratulations, you built a mixed reality app that leverages the Azure Language Understanding Intelligence Service, to understand what a user says, and act on that information.

Lab-Ergebnis

ZusatzübungenBonus exercises

Übung 1Exercise 1

Wenn Sie diese Anwendung verwenden, werden Sie möglicherweise bemerken, dass Sie bei der Betrachtung des Floor-Objekts sehen, dass die Farbe geändert wird.While using this application you might notice that if you gaze at the Floor object and ask to change its color, it will do so. Können Sie herausfinden, wie Sie Ihre Anwendung daran hindern, die Bodenfarbe zu ändern?Can you work out how to stop your application from changing the Floor color?

Übung 2Exercise 2

Erweitern Sie die Luis-und App-Funktionen, und fügen Sie zusätzliche Funktionen für Objekte in der Szene hinzu. Erstellen Sie z. b. neue Objekte auf dem Blickpunkt, je nachdem, was der Benutzer sagt, und können Sie diese Objekte mit den vorhandenen Befehlen neben den aktuellen Szenen Objekten verwenden.Try extending the LUIS and App capabilities, adding additional functionality for objects in scene; as an example, create new objects at the Gaze hit point, depending on what the user says, and then be able to use those objects alongside current scene objects, with the existing commands.