9. Verwenden von Sprachbefehlen9. Using speech commands

In diesem Tutorial erfahren Sie, wie Sie Sprachbefehle erstellen und diese global steuern.In this tutorial, you will learn how to create speech commands and how to control them globally. Außerdem erfahren Sie, wie Sie lokale Sprachbefehle steuern, die es erfordern, dass der Benutzer das Objekt ansieht, das den Sprachbefehl steuert.You will also learn how to control local speech commands that require the user to look at the object that controls the speech command.

ZieleObjectives

  • Erfahren, wie Sprachbefehle erstellt werdenLearn how to create speech commands
  • Erfahren, wie Sie Sprachbefehle global und lokal gesteuert werdenLearn how to control speech commands globally and locally

Sicherstellen, dass die Mikrofonfunktion aktiviert istEnsuring the Microphone capability is enabled

Wählen Sie im Unity-Menü „Mixed Reality Toolkit > Utilities > Configure Unity Project“ (Mixed Reality Toolkit > Hilfsprogramme > Unity-Projekt konfigurieren) aus, um das Fenster MRTK Project Configurator (MRTK-Projektkonfigurator) zu öffnen, und überprüfen Sie dann im Abschnitt UWP Capabilities (UWP-Funktionen), ob die Funktion Enable Microphone Capability (Mikrofonfunktion aktivieren) grau dargestellt wird:In the Unity menu, select Mixed Reality Toolkit > Utilities > Configure Unity Project to open the MRTK Project Configurator window, then in the UWP Capabilities section, verify that Enable Microphone Capability is greyed out:

Aktivieren der Mikrofonfunktion

Hinweis

Die Mikrofonfunktion hätte im Rahmen der Anweisungen zum Übernehmen der Einstellungen des MRTK-Projektkonfigurators aktiviert werden sollen, während der ursprünglichen Konfiguration des Unity-Projekts zu Beginn dieser Tutorialreihe.The Microphone capability should have been enabled during the Apply the MRTK Project Configurator settings instructions when you configured the Unity project at the beginning of this tutorial series. Sollte sie nicht aktiviert sein, achten Sie darauf, sie jetzt zu aktivieren.However, if it is not enabled, make sure you enable it now.

Erstellen von SprachbefehlenCreating speech commands

Wählen Sie im Hierarchiefenster das MixedRealityToolkit-Objekt und dann im Inspektorfenster die Registerkarte „MixedRealityToolkit > Input“ (MixedRealityToolkit > Eingabe) aus. Führen Sie dann die folgenden Schritte aus:In the Hierarchy window, select the MixedRealityToolkit object, then in the Inspector window, select the MixedRealityToolkit > Input tab and take the following steps:

  • Klappen Sie den Abschnitt Speech (Sprache) aufExpand the Speech section
  • Klonen Sie das Profil DefaultMixedRealitySpeechCommandsProfile, und geben Sie ihm einen passenden Namen, beispielsweise GettingStarted_MixedRealitySpeechCommandsProfileClone the DefaultMixedRealitySpeechCommandsProfile and give it a suitable name, for example, GettingStarted_MixedRealitySpeechCommandsProfile
  • Vergewissern Sie sich, dass Start Behaviour (Startverhalten) auf Auto Start (Automatischer Start) festgelegt istVerify that Start Behaviour is set to Auto Start

Erstellen von Sprachbefehlen

Tipp

Wenn Sie eine Auffrischung zum Klonen von MRTK-Profilen benötigen, lesen Sie die Anweisungen in Konfigurieren der MRTK-Profile.For a reminder on how to clone MRTK profiles, you can refer to the Configuring the MRTK profiles instructions.

Klicken Sie im Abschnitt „Speech > Speech Commands“ (Sprache > Sprachbefehle) vier Mal auf die Schaltfläche + Add a New Speech Command (Neuen Sprachbefehl hinzufügen), um unten in der Liste der vorhandenen Sprachbefehle einen neuen Sprachbefehl hinzuzufügen, und geben Sie dann in den Keyword-Feldern (Schlüsselwort) die folgenden Ausdrücke ein:In the Speech > Speech Commands section, click the + Add a New Speech Command button four times to add four new speech commands to the list of the existing speech commands, then in the Keyword fields enter the following phrases:

  • Enable Indicator (Indikator aktivieren)Enable Indicator
  • Enable Tap to Place (Zum Platzieren tippen aktivieren)Enable Tap to Place
  • Enable Bounding Box (Begrenzungsrahmen aktivieren)Enable Bounding Box
  • Disable Bounding Box (Begrenzungsrahmen deaktivieren)Disable Bounding Box

Hinzufügen neuer Sprachbefehle

Tipp

Wenn Ihr Computer nicht über ein Mikrofon verfügt, können Sie den Sprachbefehlen einen Tastencode zuweisen, sodass Sie sie durch Drücken der entsprechenden Taste auslösen können.If your computer does not have a microphone you can assign a KeyCode to the speech commands, which will let you trigger them when the corresponding key is pressed.

Steuern von SprachbefehlenControlling speech commands

Navigieren Sie im Projektfenster zum Ordner Assets > MRTK > SDK > Features > UX > Prefabs > ToolTip (Medienobjekte > MRTK > SDK > Features > UX > Prefabs > QuickInfo), um die QuickInfo-Prefabs zu suchen:In the Project window, navigate to the Assets > MRTK > SDK > Features > UX > Prefabs > ToolTip folder to locate the tooltip prefabs:

Öffnen des QuickInfo-Ordners

Klicken Sie im Hierarchiefenster mit der rechten Maustaste auf eine leere Stelle, und wählen Sie Create Empty (Leer erstellen) aus, um Ihrer Szene ein leeres Objekt hinzuzufügen.In the Hierarchy window, right-click on an empty spot and select Create Empty to add an empty object to your scene.

Benennen Sie das Objekt SpeechInputHandler_Global, verwenden Sie dann im Inspektorfenster die Schaltfläche Add Component (Komponente hinzufügen), um die SpeechInputHandler-Komponente hinzuzufügen, und konfigurieren Sie sie dann wie folgt:Name the object SpeechInputHandler_Global, then in the Inspector window, use the Add Component button to add the SpeechInputHandler component and configure it as follows:

  • Deaktivieren Sie das Kontrollkästchen Is Focus Required (Ist Fokus erforderlich), damit der Benutzer das Objekt nicht anblicken muss, um den Sprachbefehl mit der SpeechInputHandler-Komponente auszulösenUncheck the Is Focus Required checkbox, so the user is not required to look at the object with the SpeechInputHandler component to trigger the speech command
  • Weisen Sie im Projektfenster das Prefab SpeechConfirmation Tooltip dem Feld Speech Confirmation Tooltip Prefab zu, damit dieses Prefab angezeigt wird, wenn ein Sprachbefehl erkannt wirdFrom the Project window, assign the SpeechConfirmation Tooltip prefab to the Speech Confirmation Tooltip Prefab field, to have this prefab appear when a speech command is recognized

Konfigurieren der Spracheingabe-Handlerkomponente

Klicken Sie in der SpeechInputHandler-Komponente drei Mal auf das kleine + -Symbol, um drei Schlüsselwortelemente hinzuzufügen:On the SpeechInputHandler component, click the small + icon three times to add three keyword elements:

Hinzufügen von Schlüsselwortelementen zum Spracheingabehandler

Klappen Sie Element 0 auf, und konfigurieren Sie es wie folgt:Expand Element 0 and configure it as follows:

  • Geben Sie im Feld Keyword (Schlüsselwort) Enable Indicator (Indikator aktivieren) ein, um auf den Sprachbefehl „Enable Indicator“ (Indikator aktivieren) zu verweisen, den Sie im vorherigen Abschnitt erstellt habenIn the Keyword field, enter Enable Indicator, to reference the Enable Indicator speech command you created in the previous section
  • Klicken Sie auf das kleine + -Symbol, um ein Ereignis hinzuzufügenClick the small + icon to add an event
  • Weisen Sie im Hierarchiefenster das Indicator-Objekt (Indikator) dem Feld None (Object) (Ohne (Objekt)) zuFrom the Hierarchy window, assign the Indicator object to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Keine Funktion) GameObject > SetActive (bool) aus, um diese Funktion als die beim Auslösen des Ereignisses auszuführende Aktion festzulegenFrom the No Function dropdown, select GameObject > SetActive (bool) to set this function as the action to be executed when the event is triggered
  • Aktivieren Sie das Argumentkontrollkästchen, so dass es aktiviert istCheck the argument checkbox, so it is checked

Konfigurieren von Schlüsselwortelement 0

Klappen Sie Element 1 auf, und konfigurieren Sie es wie folgt:Expand Element 1 and configure it as follows:

  • Geben Sie im Feld Keyword (Schlüsselwort) Enable Bounding Box (Begrenzungsrahmen aktivieren) ein, um auf den Sprachbefehl „Enable Bounding Box“ (Begrenzungsrahmen aktivieren) zu verweisen, den Sie im vorherigen Abschnitt erstellt habenIn the Keyword field, enter Enable Bounding Box, to reference the Enable Bounding Box command you created in the previous section
  • Klicken Sie auf das kleine + -Symbol, um ein Ereignis hinzuzufügenClick the small + icon to add an event
  • Weisen Sie im Hierarchiefenster das RoverExplorer-Objekt dem Feld None (Object) (Ohne (Objekt)) zuFrom the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Ohne Funktion) BoundingBox > bool Enabled aus, um diesen Eigenschaftswert zu aktualisieren, wenn das Ereignis ausgelöst wirdFrom the No Function dropdown, select BoundingBox > bool enabled to update this property value when the event is triggered
  • Aktivieren Sie das Argumentkontrollkästchen, so dass es aktiviert istCheck the argument checkbox, so it is checked
  • Klicken Sie auf das kleine + -Symbol, um ein weiteres Ereignis hinzuzufügenClick the small + icon to add another event
  • Weisen Sie im Hierarchiefenster das RoverExplorer-Objekt dem Feld None (Object) (Ohne (Objekt)) zuFrom the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Ohne Funktion) ObjectManipulator > bool Enabled aus, um diesen Eigenschaftswert zu aktualisieren, wenn das Ereignis ausgelöst wirdFrom the No Function dropdown, select ObjectManipulator > bool enabled to update this property value when the event is triggered
  • Aktivieren Sie das Argumentkontrollkästchen, so dass es aktiviert istCheck the argument checkbox, so it is checked

Konfigurieren von Schlüsselwortelement 1

Klappen Sie Element 2 auf, und konfigurieren Sie es wie folgt:Expand Element 2 and configure it as follows:

  • Geben Sie im Feld Keyword (Schlüsselwort) Disable Bounding Box (Begrenzungsrahmen deaktivieren) ein, um auf den Sprachbefehl „Disable Bounding Box“ (Begrenzungsrahmen deaktivieren) zu verweisen, den Sie im vorherigen Abschnitt erstellt habenIn the Keyword field, enter Disable Bounding Box, to reference the Disable Bounding Box command you created in the previous section
  • Klicken Sie auf das kleine + -Symbol, um ein Ereignis hinzuzufügenClick the small + icon to add an event
  • Weisen Sie im Hierarchiefenster das RoverExplorer-Objekt dem Feld None (Object) (Ohne (Objekt)) zuFrom the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Ohne Funktion) BoundingBox > bool Enabled aus, um diesen Eigenschaftswert zu aktualisieren, wenn das Ereignis ausgelöst wirdFrom the No Function dropdown, select BoundingBox > bool enabled to update this property value when the event is triggered
  • Vergewissern Sie sich, dass das Argumentkontrollkästchen deaktiviert istVerify that the argument checkbox is unchecked
  • Klicken Sie auf das kleine + -Symbol, um ein weiteres Ereignis hinzuzufügenClick the small + icon to add another event
  • Weisen Sie im Hierarchiefenster das RoverExplorer-Objekt dem Feld None (Object) (Ohne (Objekt)) zuFrom the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Ohne Funktion) ObjectManipulator > bool Enabled aus, um diesen Eigenschaftswert zu aktualisieren, wenn das Ereignis ausgelöst wirdFrom the No Function dropdown, select ObjectManipulator > bool enabled to update this property value when the event is triggered
  • Vergewissern Sie sich, dass das Argumentkontrollkästchen deaktiviert istVerify that the argument checkbox is unchecked

Konfigurieren von Schlüsselwortelement 2

Wählen Sie im Hierarchiefenster das Objekt RoverExplorer > RoverAssembly aus, verwenden Sie dann im Inspektorfenster die Schaltfläche Add Component (Komponente hinzufügen), um die Komponente SpeechInputHandler hinzuzufügen, und konfigurieren Sie sie wie folgt:In the Hierarchy window, select the RoverExplorer > RoverAssembly object, then in the Inspector window, use the Add Component button to add the SpeechInputHandler component and configure it as follows:

  • Vergewissern Sie sich, dass das Kontrollkästchen Is Focus Required (Ist Fokus erforderlich) aktiviert ist, damit der Benutzer das Objekt nicht anblicken muss, um den Sprachbefehl mit der SpeechInputHandler-Komponente, d. h. der RoverAssembly, auszulösenVerify that the Is Focus Required checkbox is check, so the user is required to look at the object with the SpeechInputHandler component, i.e., the RoverAssembly, to trigger the speech command
  • Weisen Sie im Projektfenster das Prefab SpeechConfirmation Tooltip dem Feld Speech Confirmation Tooltip Prefab zu, damit dieses Prefab angezeigt wird, wenn ein Sprachbefehl erkannt wirdFrom the Project window, assign the SpeechConfirmation Tooltip prefab to the Speech Confirmation Tooltip Prefab field, to have this prefab appear when a speech command is recognized

Hinzufügen des Spracheingabehandlers zur Rover-Baugruppe

Klicken Sie in der SpeechInputHandler-Komponente auf das kleine + -Symbol, um ein Stichwortelement hinzuzufügen, klappen Sie das neu erstellte Element auf, und konfigurieren Sie es wie folgt:On the SpeechInputHandler component, click the small + icon to add a keyword element, expand the newly created element, then configure it as follows:

  • Geben Sie im Feld Keyword (Schlüsselwort) Enable Tap to Place (Zum Platzieren tippen aktivieren) ein, um auf den Sprachbefehl „Enable Tap to Place“ (Zum Platzieren tippen aktivieren) zu verweisen, den Sie im vorherigen Abschnitt erstellt habenIn the Keyword field, enter Enable Tap to Place, to reference the Enable Tap to Place command you created in the previous section
  • Klicken Sie auf das kleine + -Symbol, um ein Ereignis hinzuzufügenClick the small + icon to add an event
  • Weisen Sie im Hierarchiefenster das Objekt selbst, d. h. das gleiche RoverAssembly-Objekt, dem Feld None (Object) (Ohne (Objekt)) zuFrom the Hierarchy window, assign the object itself, i.e., the same RoverAssembly object, to the None (Object) field
  • Wählen Sie in der Dropdownliste No Function (Ohne Funktion) TapToPlace > bool Enabled aus, um diesen Eigenschaftswert zu aktualisieren, wenn das Ereignis ausgelöst wirdFrom the No Function dropdown, select TapToPlace > bool enabled to update this property value when the event is triggered
  • Aktivieren Sie das Argumentkontrollkästchen, so dass es aktiviert istCheck the argument checkbox, so it is checked

Konfigurieren des Spracheingabehandlers in der Rover-Baugruppe

Herzlichen Glückwunsch!Congratulations

In diesem Tutorial haben Sie erfahren, wie Sie Sprachbefehle erstellen und diese global steuern.In this tutorial, you learned how to create speech commands and how to control them globally. Außerdem haben Sie erfahren, wie Sie lokale Sprachbefehle steuern, die es erfordern, dass der Benutzer das Objekt ansieht, das den Sprachbefehl steuert.You also learned how to control local speech commands that require the user to look at the object that controls the speech command.

Damit ist die Reihe der Tutorials zu den ersten Schritten zugleich abgeschlossen.This also concludes the Getting started tutorials series. Im Lauf dieser Tutorials haben Sie erfolgreich von Grund auf ein vollständiges Mixed Reality-Erlebnis mithilfe des MRTK erstellt.Through these tutorials, you have successfully built a complete mixed reality experience from scratch using the MRTK.

In den beiden nächsten Tutorialreihen, den Azure Spatial Anchors-Tutorials und den Tutorials zu den Mehrbenutzerfunktionen, erfahren Sie zunächst, wie Sie Azure Spatial Anchors in Ihr Projekt integrieren, um das von Ihnen erstellte Rover Explorer-Erlebnis in der realen Welt zu verankern.In the next two tutorial series, Azure Spatial Anchors tutorials and Multi-user capabilities tutorials, you will first learn how to integrate Azure Spatial Anchors into your project to anchor the Rover Explorer experience you created in the real world. Anschließend erfahren Sie, wie Sie Ihrem Projekt Mehrbenutzerfunktionen hinzufügen, um Benutzer- und Objektbewegungen in Echtzeit zu teilen.Then, you will learn how to add multi-user capabilities to your project to share user and object movements in real-time.

Nächster EntwicklungsprüfpunktNext Development Checkpoint

Wenn Sie dem Weg der Unity-Entwicklungsprüfpunkte folgen, den wir entworfen haben, besteht Ihre nächste Aufgabe darin, sich mit den Grundbausteinen von Mixed Reality-Anwendungen vertraut zu machen.If you're following the Unity development checkpoint journey we've laid out, your next task is to familiarize yourself with core building blocks of Mixed Reality apps.

Sie können jederzeit zu den Prüfpunkten für die Unity-Entwicklung zurückkehren.You can always go back to the Unity development checkpoints at any time.