4. Configuration des intentions et compréhension du langage naturel4. Setting up intent and natural language understanding

Dans ce tutoriel, vous allez découvrir la reconnaissance de l’intention du service Azure Speech.In this tutorial, you will explore the Azure Speech Service's intent recognition. La reconnaissance de l’intention vous permet d’équiper notre application de commandes vocales optimisées par l’IA (intelligence artificielle). Ainsi, si les utilisateurs énoncent des commandes vocales imprécises, le système peut quand même comprendre leur intention.The intent recognition allows you to equip our application with AI-powered speech commands, where users can say non-specific speech commands and still have their intent understood by the system.

ObjectifsObjectives

  • Découvrir comment configurer l’intention, les entités et les énoncés dans le portail LUISLearn how to set up intent, entities, and utterances in the LUIS portal
  • Apprendre à implémenter la compréhension de l’intention et du langage naturel dans notre applicationLearn how to implement intent and natural language understanding in our application

Préparation de la scènePreparing the scene

Dans la fenêtre Hierachy, sélectionnez l’objet Lunarcom puis, dans la fenêtre Inspector, utilisez le bouton Add Component pour ajouter le composant Lunarcom Intent Recognizer (Script) à l’objet Lunarcom :In the Hierarchy window, select the Lunarcom object, then in the Inspector window, use the Add Component button to add the Lunarcom Intent Recognizer (Script) component to the Lunarcom object:

mrlearning-speech

Dans la fenêtre Project, accédez au dossier Assets > MRTK.Tutorials.GettingStarted > Prefabs > RocketLauncher, faites glisser le préfabriqué RocketLauncher_Complete dans la fenêtre Hierarchy et placez-le à un emplacement approprié devant la caméra, par exemple :In the Project window, navigate to the Assets > MRTK.Tutorials.GettingStarted > Prefabs > RocketLauncher folder, drag the RocketLauncher_Complete prefab into your Hierarchy window, and place it at a suitable location in front of the camera, for example:

  • Transform Position X = 0, Y = -0.4, Z = 1Transform Position X = 0, Y = -0.4, Z = 1
  • Transform Rotation X = 0, Y = 90, Z = 0Transform Rotation X = 0, Y = 90, Z = 0

mrlearning-speech

Dans la fenêtre Hierachy, re-sélectionnez l’objet Lunarcom, puis développez l’objet RocketLauncher_Complete > Button et affectez à chaque objet enfant de l’objet Buttons le champ Lunar Launcher Buttons correspondant :In the Hierarchy window, select the Lunarcom object again, then expand the RocketLauncher_Complete > Button object and assign each of the Buttons object's child objects to the corresponding Lunar Launcher Buttons field:

mrlearning-speech

Création de la ressource Azure Language UnderstandingCreating the Azure Language Understanding resource

Dans cette section, vous allez créer une ressource de prédiction Azure pour l’application LUIS (Language Understanding Intelligent Service) que vous allez créer dans la section suivante.In this section, you will create an Azure prediction resource for the Language Understanding Intelligent Service (LUIS) app you will create in the next section.

Connectez-vous à Azure, puis cliquez sur Créer une ressource.Sign in to Azure and click Create a resource. Ensuite, recherchez et sélectionnez Language Understanding :Then search for and select Language Understanding:

mrlearning-speech

Cliquez sur le bouton Créer pour créer une instance de ce service :Click the Create button to create an instance of this service:

mrlearning-speech

Dans la page Créer, cliquez sur l’option Prédiction et entrez les valeurs suivantes :On the Create page, click the Prediction option and enter the following values:

  • Pour Abonnement, sélectionnez Essai gratuit si vous disposez d’un abonnement à l’essai, sinon, sélectionnez l’un de vos autres abonnements.For Subscription, select Free Trail if you have a trial subscription, otherwise, select one of your other subscriptions
  • Pour Groupe de ressource, cliquez sur le lien Créer nouveau, entrez un nom approprié, par exemple MRKT-Tutorials, puis cliquez sur OK.For the Resource group, click the Create new link, enter a suitable name, for example, MRKT-Tutorials, and then click the OK

mrlearning-speech

Notes

Au moment de la rédaction de cet article, vous n’avez pas besoin de créer une ressource de création, car une clé d’essai de création est automatiquement générée dans LUIS quand vous créez l’application LUIS (Language Understanding Intelligent Service) dans la section suivante.As of the time of this writing, you do not need to create an authoring resource because an authoring trial key will automatically be generated within LUIS when you create the Language Understanding Intelligent Service (LUIS) in the next section.

Conseil

Si vous avez déjà un autre groupe de ressources approprié dans votre compte Azure, par exemple, si vous avez suivi le tutoriel Azure Spatial Anchors, vous pouvez utiliser ce groupe de ressources au lieu d’en créer un.If you already have another suitable resource group in your Azure account, for example, if you completed the Azure Spatial Anchors tutorial, you may use this resource group instead of creating a new one.

Toujours dans la page Créer, entrez les valeurs suivantes :While still on the Create page, enter the following values:

  • Pour Nom, entrez un nom approprié pour le service, par exemple, MRTK-Tutorials-AzureSpeechServices.For Name, enter a suitable name for the service, for example, MRTK-Tutorials-AzureSpeechServices
  • Pour Emplacement de prédiction, choisissez un emplacement proche de l’emplacement physique des utilisateurs de votre application, par exemple, USA Ouest.For Prediction location, choose a location close to your app users' physical location, for example, (US) West US
  • Pour Niveau tarifaire de prédiction, dans le cadre de ce tutoriel, sélectionnez F0 (5 appels par seconde, 10 000 appels par mois)For Prediction pricing tier, for the purpose of this tutorial, select F0 (5 Calls per second, 10K Calls per month)

mrlearning-speech

Accédez ensuite à l’onglet Vérifier + créer, passez en revue les détails, puis cliquez sur le bouton Créer, situé au bas de la page, pour créer la ressource, ainsi que le nouveau groupe de ressources si vous en avez créé un :Next, go to the Review + create tab, review the details, and then click the Create button, located at the bottom of the page, to create the resource, as well as, the new resource group if you configured one to be created:

mrlearning-speech

Notes

Après avoir cliqué sur le bouton Créer, vous devez attendre que le service soit créé, ce qui peut prendre quelques minutes.After you click the Create button, you will have to wait for the service to be created, which might take a few minutes.

Une fois le processus de création de la ressource terminé, le message Votre déploiement a été effectué s’affiche :Once the resource creation process is completed, you will see the message Your deployment is complete:

mrlearning-speech

Création de l’application LUIS (Language Understanding Intelligent Service)Creating the Language Understanding Intelligent Service (LUIS)

Dans cette section, vous allez créer une application LUIS, configurer et entraîner son modèle de prédiction, puis la connecter à la ressource de prédiction Azure que vous avez créée à l’étape précédente.In this section, you will create a LUIS app, configure and train its prediction model, and connect it to the Azure prediction resource you created in the previous step.

Plus précisément, vous allez créer une intention qui veut que, si l’utilisateur déclare qu’une action doit être effectuée, l’application déclenche l’événement Interactable.OnClick() sur l’un des trois boutons rouges de la scène, en fonction de celui auquel l’utilisateur fait référence.Specifically, you will create an intent that if the user says an action should be taken, the app will trigger the Interactable.OnClick() event on one of the three red buttons in the scene, depending on which button the user references.

Par exemple, si l’utilisateur dit procéder au lancement de la fusée, l’application va prédire que procéder implique une action à effectuer, et que l’événement Interactable.OnClick() à cibler se trouve sur le bouton de lancement.For example, if the user says go ahead and launch the rocket, the app will predict that go ahead means some action should be taken, and that the Interactable.OnClick() event to target is on the launch button.

Voici les principales étapes à suivre pour y parvenir :The main steps you will take to achieve this are:

  1. Créer une application LUISCreate a LUIS app
  2. Créer des intentionsCreate intents
  3. Créer des exemples d’énoncésCreate example utterances
  4. Créer des entitésCreate entities
  5. Attribuer des entités aux exemples d’énoncésAssign entities to the example utterances
  6. Entraîner, tester et publier l’applicationTrain, test, and publish the app
  7. Attribuer une ressource de prédiction Azure à l’applicationAssign an Azure prediction resource to the app

1. Créer une application LUIS1. Create a LUIS app

À l’aide du même compte d’utilisateur que celui que vous avez utilisé pour créer la ressource Azure dans la section précédente, connectez-vous à LUIS, sélectionnez votre pays et acceptez les conditions d’utilisation.Using the same user account you used when creating the Azure resource in the previous section, sign in to LUIS, select your country, and agree to the terms of use. À l’étape suivante, lorsque vous êtes invité à lier votre compte Azure, choisissez Continuer à utiliser votre clé d’essai, pour utiliser une ressource de création Azure à la place.In the next step, when asked to Link your Azure account, choose Continue using your trial key, to use an Azure authoring resource instead.

Notes

Si vous êtes déjà inscrit à LUIS et que votre clé d’essai de création a expiré, vous pouvez consulter la documentation Migrer vers une clé de création de ressource Azure pour basculer votre ressource de création LUIS vers Azure.If you have already signed up for LUIS and your authoring trial key has expired, you can refer to the Migrate to an Azure resource authoring key documentation to switch your LUIS authoring resource to Azure.

Une fois connecté, accédez à la page Mes applications, puis cliquez sur Créer une application et entrez les valeurs suivantes dans la fenêtre contextuelle Créer une application :Once signed in, navigate to the My apps page, then click Create new app and enter the following values in the Create new app popup window:

  • Pour Nom, entrez un nom approprié, par exemple, MRTK Tutorials - AzureSpeechServices.For Name, enter a suitable name, for example, MRTK Tutorials - AzureSpeechServices
  • Pour Culture, sélectionnez Anglais.For Culture, select English
  • Pour Description, entrez éventuellement une description appropriée.For Description, optionally enter a suitable description

Cliquez ensuite sur le bouton Terminé pour créer l’application :Then click the Done button to create the new app:

mrlearning-speech

Une fois l’application créée, vous êtes dirigé vers sa page Tableau de bord :When the new app has been created, you will be taken to that app's Dashboard page:

mrlearning-speech

2. Créer des intentions2. Create intents

À partir de la page Tableau de bord, accédez à la page Générer > Ressources d’application > Intentions, puis cliquez sur Créer une intention et entrez la valeur suivante dans la fenêtre contextuelle Créer une intention :From the Dashboard page, navigate to the Build > App Assets > Intents page, then click Create new intent and enter the following value in the Create new intent popup window:

  • Pour Nom de l’intention, entrez PressButton.For Intent name, enter PressButton

Cliquez ensuite sur le bouton Terminé pour créer l’intention :Then click the Done button to create the new intent:

mrlearning-speech

Attention

Dans le cadre de ce tutoriel, votre projet Unity va référencer cette intention par son nom, c.-à-d. « PressButton ».For the purpose of this tutorial, your Unity project will reference this intent by its name, i.e. 'PressButton'. Il est donc extrêmement important de nommer votre intention de manière strictement identique.Consequently, it is extremely important that you name your intent exactly the same.

Une fois l’intention créée, vous êtes dirigé vers sa page :When the new intent has been created, you will be taken to that intent's page:

mrlearning-speech

3. Créer des exemples d’énoncés3. Create example utterances

À la liste des exemples d’énoncés de l’intention PressButton, ajoutez les exemples d’énoncés suivants :To the PressButton intent's Example utterance list, add the following example utterances:

  • activer la séquence de lancementactivate launch sequence
  • me montrer un indicateur de placementshow me a placement hint
  • démarrer la séquence de lancementinitiate the launch sequence
  • appuyer sur le bouton des indicateurs de placementpress placement hints button
  • me donner un indicateurgive me a hint
  • appuyer sur le bouton de lancementpush the launch button
  • j’ai besoin d’un indicateuri need a hint
  • appuyer sur le bouton de réinitialisationpress the reset button
  • délai de réinitialisation de l’expériencetime to reset the experience
  • procéder au lancement de la fuséego ahead and launch the rocket

Une fois que tous les exemples d’énoncés ont été ajoutés, la page de l’intention PressButton doit ressembler à ceci :When all the example utterances have been added, your PressButton intent page should look similar to this:

mrlearning-speech

Attention

Dans le cadre de ce tutoriel, votre projet Unity va référencer les mots « indicateur », « indicateurs » « réinitialisation » et « lancement ».For the purpose of this tutorial, your Unity project will reference the words 'hint', 'hints', 'reset', and 'launch'. Il est donc extrêmement important de prononcer ces mots exactement de la même façon.Consequently, it is extremely important that you spell these words in the exact same way.

4. Créer des entités4. Create entities

À partir de la page de l’intention PressButton, accédez à la page Générer > Ressources d’application > Entités, puis cliquez sur Créer une entité et entrez les valeurs suivantes dans la fenêtre contextuelle Créer une entité :From the PressButton intent page, navigate to the Build > App Assets > Entities page, then click Create new entity and enter the following values in the Create new entity popup window:

  • Pour Nom de l’entité, entrez Action.For Entity name, enter Action
  • Pour Type d’entité, sélectionnez Simple.For Entity type, select Simple

Cliquez ensuite sur le bouton Terminé pour créer l’entité :Then click the Done button to create the new entity:

mrlearning-speech

Répétez l’étape précédente pour créer une autre entité nommée Cible. Vous avez donc deux entités nommées Action et Cible :Repeat the previous step to create another entity named Target, so you have two entities named Action and Target:

mrlearning-speech

Attention

Dans le cadre de ce tutoriel, votre projet Unity va référencer ces entités par leurs noms, c.-à-d. « Action » et « Cible ».For the purpose of this tutorial, your Unity project will reference these entities by their names, i.e. 'Action' and 'Target'. Il est donc extrêmement important de nommer vos entités de manière strictement identique.Consequently, it is extremely important that you name your entities exactly the same.

5. Attribuer des entités aux exemples d’énoncés5. Assign entities to the example utterances

À partir de la page Entités, revenez à la page de l’intention PressButton.From the Entities page, navigate back to the PressButton intent page.

Dans cette page, cliquez sur le mot procéder et sur le mot au, puis sélectionnez Action (Simple) dans le menu contextuel pour étiqueter procéder au comme valeur d’entité Action :Once back on the the PressButton intent page, click on the word go and then on the word ahead, and then select Action (Simple) from the contextual popup menu to label go ahead as an Action entity value:

mrlearning-speech

La locution procéder au est maintenant définie en tant que valeur d’entité Action.The go ahead phrase is now defined as an Action entity value. Si vous placez le curseur de la souris au-dessus du nom de l’entité Action, vous pouvez voir la valeur d’entité Action associée :If you hover your mouse cursor above the Action entity name, you can see the associated Action entity value:

mrlearning-speech

Notes

La ligne rouge qui apparaît sous l’étiquette dans l’image ci-dessus indique que la valeur d’entité n’a pas été prédite, ce que vous allez résoudre quand vous entraînerez le modèle dans la section suivante.The red line you see under the label in the image above indicates that the entity value has not been predicted, this will be resolved when you train the model in the next section.

Ensuite, cliquez sur le mot lancement, puis sélectionnez Cible (Simple) dans le menu contextuel pour étiqueter lancement comme valeur d’entité Cible :Next, click on the word launch, and then select Target (Simple) from the contextual popup menu to label launch as a Target entity value:

mrlearning-speech

Le mot lancement est maintenant défini en tant que valeur d’entité Cible.The launch word is now defined as a Target entity value. Si vous placez le curseur de la souris au-dessus du nom de l’entité Cible, vous pouvez voir la valeur d’entité Cible associée :If you hover your mouse cursor above the Target entity name, you can see the associated Target entity value:

mrlearning-speech

L’exemple d’énoncé de l’intention PressButton « procéder au lancement de la fusée » est maintenant configuré pour être prédit ainsi :The PressButton intent example utterance 'go ahead and launch the rocket' is now configured to be predicted as follows:

  • Intention : PressButtonIntent: PressButton
  • Entité Action : procéder auAction entity: go ahead
  • Entité Cible : lancementTarget entity: launch

Répétez le processus en deux étapes précédent pour attribuer une étiquette d’entité Action et Cible à chacun des exemples d’énoncés, en gardant à l’esprit que les mots suivants doivent être étiquetés comme des entités Cible :Repeat the previous two-step process to assign an Action and a Target entity label to each of the example utterances, keeping in mind that the following words should be labeled as Target entities:

  • indicateur (Cible HintsButton dans le projet Unity.)hint (targets the HintsButton in the Unity project)
  • indicateurs (Cible HintsButton dans le projet Unity.)hints (targets HintsButton in the Unity project)
  • réinitialisation (Cible ResetButton dans le projet Unity.)reset (targets the ResetButton in the Unity project)
  • lancement (Cible LaunchButton dans le projet Unity.)launch (targets the LaunchButton in the Unity project)

Une fois que tous les exemples d’énoncés ont été étiquetés, la page de l’intention PressButton doit ressembler à ceci :When all the example utterances have been labeled, your PressButton intent page should look similar to this:

mrlearning-speech

Pour revérifier que vous avez attribué les entités appropriées, cliquez sur le menu Options d’affichage et basculez l’affichage en mode Afficher les valeurs d’entité :For an alternative way to double-check that you have assigned the correct entities, click the View options menu and switch the view to Show entity values:

mrlearning-speech

Maintenant, avec l’affichage défini de sorte à montrer les valeurs d’entité, vous pouvez placer le pointeur de la souris sur les mots et locutions étiquetés pour vérifier rapidement le nom de l’entité affectée :Now, with the view set to show entity values, you can hover the mouse courser over the labeled words and phrases to quickly verify the assigned entity name:

mrlearning-speech

6. Entraîner, tester et publier l’application6. Train, test, and publish the app

Pour entraîner l’application, cliquez sur le bouton Entraîner et attendez que le processus d’entraînement se termine :To train the app, click the Train button and wait for the training process to complete:

mrlearning-speech

Notes

Comme vous pouvez le voir dans l’image ci-dessus, les lignes rouges situées sous toutes les étiquettes ont été supprimées, ce qui indique que toutes les valeurs d’entité ont été prédites.As you can see in the image above, the red lines under all the labels have been removed, indicating that all the entity values have been predicted. Remarquez également que l’icône d’état à gauche du bouton Entraîner est passée du rouge au vert.Also notice that the status icon to the left of the Train button has changed color from red to green.

Une fois le processus d’entraînement terminé, cliquez sur le bouton Tester, puis tapez procéder au lancement de la fusée et appuyez sur la touche Entrée :When the training is finished processing, click the Test button, then type in go ahead and launch the rocket and press the Enter key:

mrlearning-speech

Une fois l’énoncé de test traité, cliquez sur Inspecter pour voir le résultat du test :When the test utterance has been processed, click Inspect to see the test result:

  • Intention : PressButton (avec une certitude de 98,5 %)Intent: PressButton (with a 98.5% certainty)
  • Entité Action : procéder auAction entity: go ahead
  • Entité Cible : lancementTarget entity: launch

mrlearning-speech

Pour publier l’application, cliquez sur le bouton Publier situé en haut à droite, puis dans la fenêtre contextuelle Choisir l’emplacement et les paramètres de publication, sélectionnez Production et cliquez sur le bouton Publier :To publish the app, click the Publish button in the top right, then in the Choose your publishing slot and settings popup window, select Production and click the Publish button:

mrlearning-speech

Attendez que le processus de publication se termine :Wait for the publishing process to complete:

mrlearning-speech

7. Attribuer une ressource de prédiction Azure à l’application7. Assign an Azure prediction resource to the app

Accédez à la page Gérer > Paramètres d’application > Ressources Azure :Navigate to the Manage > Application Settings > Azure Resources page:

mrlearning-speech

Dans la page Ressources Azure, cliquez sur le bouton Ajouter une ressource de prédiction et sélectionnez les valeurs suivantes dans la fenêtre contextuelle Attribuer une ressource à votre application :On the Azure Resources page, click the Add prediction resource button and select the following values in the Assign a resource to your app popup window:

Cliquez ensuite sur le bouton Attribuer la ressource pour attribuer la ressource de prédiction Azure à votre application :Then click the Assign resource button to assign the Azure prediction resource to your app:

mrlearning-speech

Une fois la ressource attribuée, votre page Ressources Azure doit ressembler à ceci :When the resource has been assigned, your Azure Resources page should look similar to this:

mrlearning-speech

Connexion du projet Unity à l’application LUISConnecting the Unity project to the LUIS app

Dans la page Gérer > Paramètres d’application > Ressources Azure, cliquez sur l’icône Copier pour copier l’exemple de requête :On the Manage > Application Settings > Azure Resources page, click the copy icon to copy the Example Query:

mrlearning-speech

De retour dans votre projet Unity, dans la fenêtre Hierarchy, sélectionnez l’objet Lunarcom, puis dans la fenêtre Inspector, localisez le composant Lunarcom Intent Recognizer (Script) et configurez-le de la façon suivante :Back in your Unity project, in the Hierarchy window, select the Lunarcom object, then in the Inspector window, locate the Lunarcom Intent Recognizer (Script) component and configure it as follows:

  • Dans le champ LUIS Endpoint, collez l’exemple de requête que vous avez copié à l’étape précédente :In the LUIS Endpoint field, past the Example Query you copied in the previous step:

mrlearning-speech

Test et amélioration de la reconnaissance de l’intentionTesting and improving the intent recognition

Pour utiliser la reconnaissance de l’intention directement dans l’éditeur Unity, vous devez autoriser votre ordinateur de développement à utiliser la dictée.To use intent recognition directly in the Unity editor, you must allow your development computer to use dictation. Pour vérifier ce paramètre, ouvrez Paramètres Windows, puis choisissez Confidentialité > Voix et vérifiez que l’option Reconnaissance vocale en ligne est activée :To verify this setting, open Windows Settings then choose Privacy > Speech and ensure Online speech recognition is turned on:

mrlearning-speech

Si vous entrez maintenant en mode Game, vous pouvez tester la reconnaissance de l’intention en commençant par appuyer sur le bouton de la fusée.If you now enter Game mode, you can test the intent recognition by first pressing the rocket button. Ensuite, en supposant que votre ordinateur est doté d’un microphone, quand vous prononcez le premier exemple d’énoncé, procéder au lancement de la fusée, vous pouvez voir le lancement du module lunaire dans l’espace :Then, assuming your computer has a microphone, when you say the first example utterance, go ahead and launch the rocket, you will see the LunarModule launch into space:

mrlearning-speech

Testez tous les exemples d’énoncés, puis quelques variations des exemples d’énoncés, ainsi que quelques énoncés aléatoires.Try all the example utterances, then some variation of the example utterances, as well as, a few random utterances.

Ensuite, revenez à LUIS et accédez à la page Générer > Améliorer les performances de l’application > Vérifier les énoncés de point de terminaison, utilisez le bouton bascule pour passer de l’affichage des entités par défaut à celui des jetons, puis vérifiez les énoncés :Next, return to LUIS and navigate to Build > Improve app performance > Review endpoint utterances page, use the toggle button to switch from the default Entities View to Tokens View, and then review the utterances:

  • Dans la colonne Énoncé, modifiez et supprimez les étiquettes attribuées en fonction des besoins pour les adapter à votre intention.In the Utterance column, change and remove the assigned labels as needed so they align with your intent
  • Dans la colonne Intention alignée, vérifiez que l’intention est correcte.In the Aligned intent column, verify that the intent is correct
  • Dans la colonne Ajouter/Supprimer, cliquez sur la coche verte pour ajouter l’énoncé ou sur le x rouge pour le supprimer.In the Add/Delete column, click the green check mark button to add the utterance or the red x button to delete it

Quand vous avez vérifié autant d’énoncés que vous le voulez, cliquez sur le bouton Entraîner pour entraîner de nouveau le modèle, puis sur le bouton Publier pour republier l’application mise à jour :When you have reviewed as many utterances as you like, click the Train button to retrain the model, then the Publish button to republish the updated app:

mrlearning-speech

Notes

Si un énoncé de point de terminaison ne correspond pas à l’intention PressButton, mais que vous voulez que votre modèle sache que cet énoncé n’a aucune intention, vous pouvez définir l’option Intention alignée sur Aucune.If an endpoint utterance does not align with the PressButton intent, but you would like your model to know that the utterance has no intent, you can change the Aligned intent to None.

Répétez ce processus autant de fois que vous le souhaitez pour améliorer votre modèle d’application.Repeat this process as many times as you like to improve your app model.

FélicitationsCongratulations

Votre projet comporte désormais des commandes vocales optimisées par l’IA, ce qui permet à votre application de reconnaître l’intention des utilisateurs même s’ils ne prononcent pas des commandes précises.Your project now have AI-powered speech commands, allowing your application to recognize the users' intent even if they do not utter precise commands. Exécutez l’application sur votre appareil pour vérifier que tout fonctionne bien.Run the application on your device to ensure the feature is working properly.