Reconnaissance vocale avec les MsAgent

Les MsAgent

Préambule

Voici un tutoriel sur programmation des MsAgent pour les utiliser dans une application de reconnaissance vocale.

A propos des MsAgent

Vous vous rappelez des MsAgent? Ces petits personnages qui vous aident et vous guident dans les application Microsoft Office?

Ces agents proposent plusieurs autres possibilités, comme notamment les commandes vocales. Avec ceci, il est possible de les utiliser de manière ludique et interactive.

Dans une application compatible avec les commandes vocales, ces agents pourraient servir de pont entre l'utilisateur et l'ordinateur: vous lui dites quelque chose et l'ordinateur réagit en conséquence.

L'Agent est en fait un personnage puissant plein de capacités essentielles pour interagir avec l'utilisateur.

Allons-y, regardons comment faire pour que votre Agent réagisse à vos commandes vocales et comparons avec le SDK Microsoft Speech

Implémentation et code d'exemple

La reconnaissance vocale permet d'associer un ou plusieurs mots à une commande: quand un mot est reconnu, un événement sera généré.

Dans un premier temps, vous devrez déclarer les différentes références qui correspondent à la mise en oeuvre de l'Agent et déclarer les objets AxAgent et IAgentCtlCharacterEx.

using AgentObjects;
...
private AxAgentObjects.AxAgent agent;
private IAgentCtlCharacterEx myCharacter;

Quand ceci est fait, nous allons initialiser notre agent de cette manière :

agent = new AxAgentObjects.AxAgent();
this.agent.BeginInit();
this.form.Controls.Add(agent);
agent.EndInit();
agent.Characters.Load("Peedy", (object)"C:/Windows/Msagent/chars/Peedy.acs");
myCharacter = agent.Characters["Peedy"];

Vous voyez que vous avez à "initialiser l'initialisation": il suffit d'ajouter l'Agent à la Form avec laquelle vous voulez qu'il interagisse.

Ensuite, vous devez charger un personnage, celui que vous avez installé, en indiquant son chemin et son nom.

Regardons maintenant comment créer quelques commandes reconnues par l'Agent.

Associer une commande à un ou plusieurs mots

Dans cette section, nous allons voir comment créer une commande pouvant être reconnue par votre Agent.

L'exemple suivant illustre la création d'une commande pour un menu:

myCharacter.Commands.Caption = "Test";
myCharacter.Commands.Add("Say Hello", // Command name
                        (object)"Hello", // Display name
                        (object)"Hello", // SR Name
                        (object)true, // Enabled
                        (object)true); // Visible
myCharacter.Listen(true);

Pour ajouter une commande, il suffit de définir un titre, par exemple ici "Test", et définir les paramètres de votre commande: son nom, son nom affiché dans la configuration de l'agent, le ou les mots déclencheurs et une option permet de l'activer ou de la désactiver. Enfin, n'oubliez pas d'activer le listener sur votre personnage.

Maintenant que nous avons créé notre première commande, regardons comment elle peut être reconnue.

Implémentation de la commande

L'implémentation se trouve dans la méthode OnCommand. Regardons en détails:

private void OnCommand(object sender, AxAgentObjects._AgentEvents_CommandEvent e)
{
    IAgentCtlUserInput ui;
    ui = (IAgentCtlUserInput)e.userInput;
    if (ui.Name.Equals("Say Hello"))
    {
        myCharacter.Speak((object)"Hello", null);
    }
    ...
}

Nous récupérons l'input utilisateur grâce à l'objet IAgentCtlUserInput et nous sommes capables de comparer le nom de la commande rentrée avec celles que connait l'agent (cf. implémentation précédente)

Vous pouvez maintenant implémenter ce que vous voulez dans le if. Dans l'exemple, nous avons juste fait parler l'Agent.

NDLR: Vous pouvez trouver le tutoriel originel ici: http://en.kioskea.net/faq/32390-c-vocal-commands-with-the-msagent

Ce document intitulé « Reconnaissance vocale avec les MsAgent » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous