Microsoft Agents avec Delphi

Benoit Vermersch

Ce tutoriel vous apprend comment inclure dans vos applications des Microsoft Agents, les petits personnages que vous pouvez voir dans Office.

Commentez

- Titre : Microsoft Agents avec Delphi

- Auteur : Benoit Vermersch

- Parution : 1 janvier 2002

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2019 Benoît Vermersch. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Installation

- III. Afficher le personnage

- IV. Animation

- IV-A. Demander au personnage de s'animer

- IV-B. Demander au personnage de se déplacer

- V. Faire parler votre agent

- V-A. L'utilisateur écoute seulement

- V-B. L'utilisateur peut choisir le texte à écouter

I - Introduction

Bienvenue dans le monde des Microsoft Agents. Eh oui les petits personnages que vous pouvez voir dans Office, ça vous dirait de pouvoir en mettre dans vos applications ? En plus, vous pourrez donner à votre agent la possibilité de parler et d'utiliser la reconnaissance vocale. N'est-ce pas formidable ? Seul petit hic : les composants sont peut-être un peu gros à télécharger. Mais cet obstacle va probablement disparaître par l'arrivée en masse du haut débit plus accessible.

II - Installation

Pour pouvoir utiliser les composants agents, vous devez télécharger pas mal de composants :

- un personnage : dans ce tutoriel, nous allons utiliser Claude. Cliquez ici pour le télécharger (3,6 Mo) ;

- Microsoft Agent 2.0 (392 Ko) ;

- Text-to-Speech fr (5,4 Mo) : voix du personnage ;

- SpeechAPI.

Une fois que tous les composants sont installés, il nous ne reste plus qu'à installer Microsoft Agent dans Delphi :

- Composants (components) / Importer un contrôle ActiveX (import an ActiveX control) ;

- sélectionner dans la liste : Microsoft Agent 2.0 puis cliquer sur Installer.

Un nouveau composant nommé TAgent se trouve maintenant dans la palette ActiveX.

III - Afficher le personnage

Premièrement, déposer un composant TAgent sur la form.

Déclarer une variable :

Var
Form1: TForm1;
Claude:IAgentCtlCharacterEX;

Maintenant, il faut tout simplement insérer un code dans l'événement OnShow (ou OnCreate) de votre form :

Agent1.Connected:=True;
Agent1.Characters.Load('Claude', 'Claude.acs');// on charge Claude
Claude:=IAgentCtlCharacterEX(Agent1.Characters.Character('Claude'));//Claude est désigné comme agent de l'application
Claude.Show(False); // Pour le faire apparaître.
Claude.LanguageID:=$40C;//Pour indiquer que Claude doit parler en français

Enregistrez votre projet puis exécutez-le. Normalement, le personnage apparaît en haut à gauche de votre écran. Si cela ne fonctionne pas, vous avez peut-être mal installé les composants ou copié le code.

IV - Animation

IV-A - Demander au personnage de s'animer

Faire apparaître un personnage, c'est bien beau, l'animer c'est encore mieux.

D'abord voici la liste des actions que peuvent réaliser les agents :

'Acknowledge'
'Alert'
'Announce'
'Blink'
'Confused'
'Congratulate'
'Decline'
'DoMagic1'
'DoMagic2'
'DontRecognize'
Caption = 'Explain'
'GestureDown'
'GestureLeft'
'GestureRight'
'GestureUp'
'GetAttention'
'GetAttentionContinued'
'GetAttentionReturn'
'Greet'
'Hearing_1'
'Hearing_2'
'Hearing_3'

'Hide'
'Idle1_1'
'Idle2_1'
'Idle1_4'
'Idle1_3'
'Idle1_2'
'Idle2_2'
'Idle3_1'
'Idle3_2'
'LookDown'
'LookDownBlink'
'LookDownReturn'
'LookDownLeft'
'LookDownLeftBlink'
'LookDownLeftReturn'
'LookRight'
'LookRightBlink'
'LookRightReturn'
'LookUp'
'LookUpBlink'
'LookUpReturn'
'LookUpLeft'

'LookUpLeftBlink'
'LookUpReturn'
'LookUpRight'
'LookUpRightBlink'
'LookUpRightReturn'
'MoveDown'
'MoveLeft'
'MoveRight'
'MoveUp'
'Pleased'
'Process'
'Processing'
'ReadContinued'
'Read'
'ReadReturn'
'Reading'
'RestPose'
'Sad'
'Search'
'Show'
'Searching'
'StartListening'

'StopListening'
'Surprised'
'Suggest'
'Think'
Thinking'
'Uncertain'
'Wave'
'Write'
'WriteReturn'
'WriteContinued'
'Writing'

Tout d'abord, placez un composant TButton sur la form et mettez son Caption à « Bonjour ». Par exemple, pour que Claude vous salue, mettez le code suivant dans l'événement OnClick de Button1 :

Claude.Play('Wave'); // la structure de base est
// NomduPerso.play('nomdelaction')

Enregistrez puis testez votre application, vous verrez que Claude vous fait un signe de la main :

IV-B - Demander au personnage de se déplacer

Placez un autre bouton sur la form et mettez son Caption sur « Bouge ». Nous allons maintenant demander à Claude de se déplacer avec une commande presque aussi simple que pour l'animation :

Claude.MoveTo(24,68,1000); // 24 et 68 sont des valeurs en pixels,
// 1000 désigne la vitesse de déplacement de l'agent

Voilà, maintenant vous savez animer et déplacer un agent, c'est déjà pas mal.

Maintenant, nous allons ordonner à l'agent de parler.

V - Faire parler votre agent

V-A - L'utilisateur écoute seulement

Posez un 4e bouton sur votre fiche en mettant son Caption à « Parle », puis collez le code suivant dans son événement OnClick :

Claude.Speak('Bonjour, je m''appelle Claude, et vous ?','');
//structure de base = NomduPerso.Speak('texte','');

Enregistrez puis testez votre projet et admirez le résultat, moi je trouve ça cool :

V-B - L'utilisateur peut choisir le texte à écouter

Placez un Edit sur votre form. Placez un Bouton sur votre form avec son Caption sur « Parle 2 ». Ensuite, insérez le code suivant dans l'événement Onclick de ce bouton :

Claude.Speak(Edit1.Text,''); //voilà c'est encore plus simple

Maintenant, nous allons faire la même chose, mais avec un RichEdit :

- placez un composant RichEdit sur votre form ;

- placez un autre bouton avec pour Caption « Parle 3 » ;

- mettez dans l'événement OnClick de ce bouton le code suivant :

procedure TForm1.Button5Click(Sender: TObject);
var i:integer;
S:string;
begin
for i:=0 to RichEdit1.Lines.Count-1 do
begin
S:=RichEdit1.Lines[i];
if S<>'' then Claude.Speak(S,'');
end;
end;

Voilà, vous savez faire parler Claude et utiliser ses fonctionnalités. Je vous souhaite une bonne continuation avec les agents Microsoft.

Source du programme

Benoit Vermersch, Math Sup Lycée Ste Geneviève (Versailles)