9. Uso dei comandi vocali9. Using speech commands

In questa esercitazione verrà spiegato come creare comandi vocali e come controllarli a livello globale.In this tutorial, you will learn how to create speech commands and how to control them globally. Si imparerà anche a controllare i comandi vocali locali che richiedono che l'utente guardi l'oggetto che controlla il comando vocale.You will also learn how to control local speech commands that require the user to look at the object that controls the speech command.

ObiettiviObjectives

  • Imparare a creare comandi vocaliLearn how to create speech commands
  • Imparare a controllare i comandi vocali a livello globale e localeLearn how to control speech commands globally and locally

Verificare che la funzionalità Microfono sia abilitataEnsuring the Microphone capability is enabled

Nel menu di Unity selezionare Mixed Reality Toolkit > Utilities > Configure Unity Project (Mixed Reality Toolkit > Utilità > Configura progetto Unity) per aprire la finestra MRTK Project Configurator (Configuratore del progetto MRTK) e quindi, nella sezione UWP Capabilities (Funzionalità UWP), verificare che l'opzione Enable Microphone Capability (Abilita la funzionalità Microfono) sia disattivata: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:

Abilitare la funzionalità microfono

Nota

La funzionalità Microfono dovrebbe essere stata abilitata durante la procedura illustrata in Applicare le impostazioni di MRTK Project Configurator (Configuratore del progetto MRTK) quando è stato configurato il progetto Unity all'inizio di questa serie di esercitazioni.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. Se, tuttavia, non è abilitata, assicurarsi di farlo ora.However, if it is not enabled, make sure you enable it now.

Creazione di comandi vocaliCreating speech commands

Nella finestra Hierarchy (Gerarchia) selezionare l'oggetto MixedRealityToolkit e quindi nella finestra Inspector (Controllo) selezionare la scheda MixedRealityToolkit > Input e seguire questa procedura:In the Hierarchy window, select the MixedRealityToolkit object, then in the Inspector window, select the MixedRealityToolkit > Input tab and take the following steps:

  • Espandere la Speech (Voce)Expand the Speech section
  • Clonare il profilo DefaultMixedRealitySpeechCommandsProfile e assegnargli un nome appropriato, ad esempio GettingStarted_MixedRealitySpeechCommandsProfileClone the DefaultMixedRealitySpeechCommandsProfile and give it a suitable name, for example, GettingStarted_MixedRealitySpeechCommandsProfile
  • Verificare che Start Behaviour (Comportamento di avvio) sia impostato su Auto Start (Avvio automatico)Verify that Start Behaviour is set to Auto Start

Creazione di comandi vocali

Suggerimento

Per rivedere la procedura di clonazione dei profili MRTK, fare riferimento alle istruzioni contenute in Configurazione dei profili di Mixed Reality Toolkit.For a reminder on how to clone MRTK profiles, you can refer to the Configuring the MRTK profiles instructions.

Nella sezione Speech Commands (Comandi vocali) fare clic sul pulsante + Add a New Speech Command (+ Aggiungi un nuovo comando vocale) per aggiungere quattro nuovi comandi vocali all'elenco dei comandi vocali esistenti e quindi nei campi Keyword (Parola chiave) immettere quanto segue: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:

  • Abilita indicatoreEnable Indicator
  • Abilita tocco per posizionareEnable Tap to Place
  • Abilita rettangolo di selezioneEnable Bounding Box
  • Disabilita rettangolo di selezioneDisable Bounding Box

Aggiunta di nuovi comandi vocali

Suggerimento

Se il computer non dispone di un microfono, è possibile assegnare un KeyCode ai comandi vocali, che consente di attivarli quando viene premuto il tasto corrispondente.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.

Controllo dei comandi vocaliControlling speech commands

Nella finestra Project (Progetto) passare alla cartella Assets (Asset) > MRTK > SDK > Features (Funzionalità) > UX > Prefabs (Prefab) > ToolTip (Descrizione comando) per individuare i prefab relativi alle descrizioni comando:In the Project window, navigate to the Assets > MRTK > SDK > Features > UX > Prefabs > ToolTip folder to locate the tooltip prefabs:

Apertura della cartella delle descrizioni comando

Nella finestra Hierarchy (Gerarchia) fare clic con il pulsante destro del mouse su un'area vuota e scegliere Create Empty (Crea vuoto) per aggiungere un oggetto vuoto alla scena.In the Hierarchy window, right-click on an empty spot and select Create Empty to add an empty object to your scene.

Denominare l'oggetto SpeechInputHandler_Global, quindi nella finestra Inspector (Controllo) usare il pulsante Add Component (Aggiungi componente) per aggiungere il componente SpeechInputHandler e configurarlo nel modo seguente: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:

  • Deselezionare la casella di controllo Is Focus Required (È necessario lo stato attivo) in modo che l'utente non debba guardare l'oggetto con il componente SpeechInputHandler per attivare il comando vocaleUncheck 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
  • Dalla finestra Project (Progetto) assegnare il prefeb SpeechConfirmation Tooltip al campo Speech Confirmation Tooltip Prefab, in modo che venga visualizzato questo prefab quando viene riconosciuto un comando vocaleFrom 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

Configurazione del componente di gestione dell'input vocale

Nel componente SpeechInputHandler component fare clic tre volte sulla piccola icona + per aggiungere tre elementi di parola chiave:On the SpeechInputHandler component, click the small + icon three times to add three keyword elements:

Aggiunta di elementi parola chiave al gestore di input vocale

Espandere Element 0 e configurarlo come segue:Expand Element 0 and configure it as follows:

  • Nel campo Keyword (Parola chiave) immettere Abilita indicatore per fare riferimento al comando vocale Abilita indicatore creato nella sezione precedenteIn the Keyword field, enter Enable Indicator, to reference the Enable Indicator speech command you created in the previous section
  • Fare clic sulla piccola icona + per aggiungere un eventoClick the small + icon to add an event
  • Nella finestra Hierarchy (Gerarchia) assegnare l'oggetto Indicator al campo None (Object) (Nessuno - Oggetto)From the Hierarchy window, assign the Indicator object to the None (Object) field
  • Nell'elenco a discesa No Function (Nessuna funzione) selezionare GameObject > SetActive (bool) per impostare questa funzione come l'azione da eseguire quando viene attivato l'eventoFrom the No Function dropdown, select GameObject > SetActive (bool) to set this function as the action to be executed when the event is triggered
  • Assicurarsi che la casella di controllo dell'argomento sia selezionataCheck the argument checkbox, so it is checked

Configurare l'elemento parola chiave 0

Espandere Element 1 e configurarlo come segue:Expand Element 1 and configure it as follows:

  • Nel campo Keyword (Parola chiave) immettere Abilita rettangolo di selezione per fare riferimento al comando vocale Abilita rettangolo di selezione creato nella sezione precedenteIn the Keyword field, enter Enable Bounding Box, to reference the Enable Bounding Box command you created in the previous section
  • Fare clic sulla piccola icona + per aggiungere un eventoClick the small + icon to add an event
  • Nella finestra Hierarchy (Gerarchia) assegnare l'oggetto RoverExplorer al campo None (Object) (Nessuno - Oggetto)From the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • Nell'elenco a discesa No Function (Nessuna funzione) selezionare BoundingBox > bool enabled per aggiornare il valore di questa proprietà quando viene attivato l'eventoFrom the No Function dropdown, select BoundingBox > bool enabled to update this property value when the event is triggered
  • Assicurarsi che la casella di controllo dell'argomento sia selezionataCheck the argument checkbox, so it is checked
  • Fai clic sulla piccola icona + per aggiungere un altro eventoClick the small + icon to add another event
  • Nella finestra Hierarchy (Gerarchia) assegnare l'oggetto RoverExplorer al campo None (Object) (Nessuno - Oggetto)From the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • Nell'elenco a discesa No Function (Nessuna funzione) selezionare ObjectManipulator > bool enabled per aggiornare il valore di questa proprietà quando viene attivato l'eventoFrom the No Function dropdown, select ObjectManipulator > bool enabled to update this property value when the event is triggered
  • Assicurarsi che la casella di controllo dell'argomento sia selezionataCheck the argument checkbox, so it is checked

Configurare l'elemento parola chiave 1

Espandere Element 2 e configurarlo come segue:Expand Element 2 and configure it as follows:

  • Nel campo Keyword (Parola chiave) immettere Disabilita rettangolo di selezione per fare riferimento al comando vocale Disabilita rettangolo di selezione creato nella sezione precedenteIn the Keyword field, enter Disable Bounding Box, to reference the Disable Bounding Box command you created in the previous section
  • Fare clic sulla piccola icona + per aggiungere un eventoClick the small + icon to add an event
  • Nella finestra Hierarchy (Gerarchia) assegnare l'oggetto RoverExplorer al campo None (Object) (Nessuno - Oggetto)From the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • Nell'elenco a discesa No Function (Nessuna funzione) selezionare BoundingBox > bool enabled per aggiornare il valore di questa proprietà quando viene attivato l'eventoFrom the No Function dropdown, select BoundingBox > bool enabled to update this property value when the event is triggered
  • Verificare che la casella di controllo dell'argomento sia deselezionataVerify that the argument checkbox is unchecked
  • Fai clic sulla piccola icona + per aggiungere un altro eventoClick the small + icon to add another event
  • Nella finestra Hierarchy (Gerarchia) assegnare l'oggetto RoverExplorer al campo None (Object) (Nessuno - Oggetto)From the Hierarchy window, assign the RoverExplorer object to the None (Object) field
  • Nell'elenco a discesa No Function (Nessuna funzione) selezionare ObjectManipulator > bool enabled per aggiornare il valore di questa proprietà quando viene attivato l'eventoFrom the No Function dropdown, select ObjectManipulator > bool enabled to update this property value when the event is triggered
  • Verificare che la casella di controllo dell'argomento sia deselezionataVerify that the argument checkbox is unchecked

Configurare l'elemento parola chiave 2

Nella finestra Hierarchy (Gerarchia) selezionare l'oggetto RoverExplorer > RoverAssembly e quindi nella finestra Inspector (Controllo) usare il pulsante Add Component (Aggiungi componente) per aggiungere il componente SpeechInputHandler e configuralo nel modo seguente: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:

  • Verificare che la casella di controllo Is Focus Required (È necessario lo stato attivo) sia selezionata, in modo che l'utente debba guardare l'oggetto con il componente SpeechInputHandler, ovvero RoverAssembly, per attivare il comando vocaleVerify 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
  • Dalla finestra Project (Progetto) assegnare il prefeb SpeechConfirmation Tooltip al campo Speech Confirmation Tooltip Prefab, in modo che venga visualizzato questo prefab quando viene riconosciuto un comando vocaleFrom 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

Aggiungere un gestore di input vocale all'assembly Rover

Nel componente SpeechInputHandler fare clic sulla piccola icona + per aggiungere un elemento parola chiave, espandere l'elemento appena creato, quindi configurarlo come segue:On the SpeechInputHandler component, click the small + icon to add a keyword element, expand the newly created element, then configure it as follows:

  • Nel campo Keyword (Parola chiave) immettere Abilita tocco per posizionare per fare riferimento al comando vocale Abilita tocco per posizionare creato nella sezione precedenteIn the Keyword field, enter Enable Tap to Place, to reference the Enable Tap to Place command you created in the previous section
  • Fare clic sulla piccola icona + per aggiungere un eventoClick the small + icon to add an event
  • Nella finestra Hierarchy (Gerarchia) assegnare l'oggetto stesso, ovvero lo stesso oggetto RoverAssembly, al campo None (Object) (Nessuno - Oggetto)From the Hierarchy window, assign the object itself, i.e., the same RoverAssembly object, to the None (Object) field
  • Nell'elenco a discesa No Function (Nessuna funzione) selezionare TapToPlace > bool enabled per aggiornare il valore di questa proprietà quando viene attivato l'eventoFrom the No Function dropdown, select TapToPlace > bool enabled to update this property value when the event is triggered
  • Assicurarsi che la casella di controllo dell'argomento sia selezionataCheck the argument checkbox, so it is checked

Configurare il gestore di input vocale nell'assembly Rover

Lezione completataCongratulations

In questa esercitazione è stato spiegato come creare comandi vocali e come controllarli a livello globale.In this tutorial, you learned how to create speech commands and how to control them globally. Si è anche imparato a controllare i comandi vocali locali che richiedono che l'utente guardi l'oggetto che controlla il comando vocale.You also learned how to control local speech commands that require the user to look at the object that controls the speech command.

A questo punto si conclude la serie Esercitazioni introduttive.This also concludes the Getting started tutorials series. In queste esercitazioni è stata creata da zero un'esperienza di realtà mista completa tramite MRTK.Through these tutorials, you have successfully built a complete mixed reality experience from scratch using the MRTK.

Nelle prossime due serie di esercitazioni, Esercitazioni su Ancoraggi nello spazio di Azure e Esercitazioni sulle funzionalità multiutente, verrà spiegato prima di tutto come integrare Ancoraggi nello spazio di Azure in un progetto per ancorare l'esperienza Rover Explorer creata nel mondo reale.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. Quindi, verrà illustrato come aggiungere funzionalità multiutente al progetto per condividere i movimenti di utenti e oggetti in tempo reale.Then, you will learn how to add multi-user capabilities to your project to share user and object movements in real-time.

Successivo checkpoint di sviluppoNext Development Checkpoint

Se si sta seguendo il percorso di checkpoint per lo sviluppo con Unity che abbiamo delineato, il passaggio successivo consiste nell'acquisire familiarità con i blocchi predefiniti fondamentali delle app di realtà mista.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.

È sempre possibile tornare ai checkpoint per lo sviluppo con Unity in qualsiasi momento.You can always go back to the Unity development checkpoints at any time.