ATTENTION : Les informations contenues dans cette fiche sont obsolètes mais peuvent être interressantes dans le cadre de l'étude de sites internet anciens, Microsft n'assurant plus la gestion des agents.
Tout le monde connaît les assistants office comme le petit trombone animé qui nous donne des conseils sous Word, Excel ... Il existe maintenant des figurines animées (Merlin dans le cas de ce site) qui rendent les applications beaucoup plus attractives et interactives. Le personnage parle, se déplace et peut aussi optionnellement reconnaître et répondre à des commandes vocales en associant un mot à une action : lorsque le mot sera prononcé dans le microphone alors le
programme exécutera l'action demandée.
Test de la configuration de l'utilisateur
Attention Ne fonctionne que dans un monde Microsoft Windows : Navigateur Internet Explorer et Windows XP, 2000, ME, 98, NT
Cliquez sur le petit personnage
pour faire un test rapide en local
Si vous obtenez une erreur du genre de celle ci :
Ou si rien ne se passe : pas d'affichage d'erreur, pas d'apparition d'un personnage en bas à droite de l'écran.
Ou si un personnage apparaît mais il ne bouge pas.
Ou un personnage apparaît, il bouge mais ne parle pas.
c'est que tous les composants ne sont pas installés sur votre poste de travail.
Pré requis utilisateur
Par défaut, sur certains systèmes d'exploitation comme Windows 2000, Windows XP, ou bien avec certains produits comme Microsoft Office 2000, MS Agent est déjà installé.
On considère que votre poste de travail est équipé d'une carte son en fonctionnement et éventuellement d'un microphone.
Vérifier que vous possédez bien les droits administrateur avant de commencer l'installation.
Installation des composants sur l'ordinateur de l'utilisateur
Méthode 1 : Télécharger d'un coup l'ensemble des composants nécessaires au bon fonctionnement .
Étape 1 :
Créez sur votre poste de travail un dossier temporaire appelé par exemple Agent?.
Étape 2 :
Téléchargez le fichier "MSA_Pack_Merlin.zip" (environ 11 M)et enregistrez le dans le dossier Agent.
Étape 3 :
Décompressez le fichier Zip
Étape 4 :
Dans le dossier Agent exécuter les différents fichiers .exe que vous venez de télécharger (les droits administrateur sont requis pour une installation correcte). Faites attention de ne pas en oublier.
Installer le logiciel de base
Exécutez le fichier MSagent.exe.
Cette action installe le logiciel de base de l'Agent Microsoft. Notez que vous n'avez pas à télécharger ce fichier si vous utilisez l'un des systèmes d'exploitation suivants : Microsoft Windows XP, Windows 2000 ou Windows Me. Ce composant est déjà installé sur votre ordinateur.
Installer la bibliothèque pour la langue française
Exécutez le fichier AgtX040C.exe(environ 128 K).
Les composants de langue sont des bibliothèques (DLL) qui sont utilisées par le logiciel de base pour les dialogues, les fenêtres, tooltips et les textes des 'bulles' dans une langue supplémentaire à l'anglais par défaut. Cette librairie ne suffit pas par elle même pour faire parler le personnage distinctement, il faudra rajouter le module text-to-speech.
Installer les personnages
Exécutez le fichier Merlin.exe(environ 1,8 M).
Lorsque vous serez familiarisé avec cette application vous pourrez installer et utiliser d'autres personnages comme par exemple : le génie ( Genie.exe environ 1,6 M), l'oiseau (peedy.exe environ 3,2 M), le chien (max.exe environ 700k) ou le majordome (james.exe environ 3,1 M).
Installer le moteur texte parole (Text to Speech) pour la langue française.
Exécutez le fichier lhttsfrf.exe(environ 2,24 M).
Le moteur Text to Speech permet la synthèse vocale des textes dits par le personnage.
Notez que pour fonctionner correctement la bibliothèque de langue doit être elle aussi téléchargée.
L'utilisation des moteurs Text to Speech est uniquement autorisée avec l'application Microsoft Agent. Pour son utilisation sur des pages web le concepteur doit préciser visiblement que la technologie Microsoft Agent character est utilisée.
Installer SAPI 4.0 runtime support
Exécutez le fichier spchapi.exe (environ 830 K).
SAPI 4.0 runtime support doit être installé si votre système d'exploitation est Windows XP et que vous désiriez utiliser d'autres moteurs de conversion text to speech avec l'application Microsoft Agent.
SAPI 4.0 runtime support doit aussi être installé lorsque l'on utilise le moteur L&H TTS3000 avec les personnages de Microsoft Agent Genie, Merlin, Peedy and Robby. Ces personnages sont construits pour utiliser le moteur L&H TruVoice par défaut comme générateur de sons et SAPI 4.0a runtime est obligatoire pour l'initialisation de ces personnages (TTSModeID).
Installer Speech recognition engines
Exécutez le fichier actcnc.exe (environ 6 M).
Speech recognition engines permet sur reconnaissance vocale de commander le personnage. Attention cette reconnaissance n'est disponible que pour des ordres en anglais.
Étape 5 : Fin de procédure
Quittez le site, quitter le navigateur. Puis retenter votre chance, et cela devrait marcher.
Méthode 2 : Télécharger les composants à partir du Site Microsoft de référence.
Programmer Microsoft Agent sur votre site internet
Méthode de programmation
Déclaration des objets.
Appel de fonctions javascript
A partir d'un bouton ou d'une image ou autre élément HTML
onclick= "javascript: if (LoadLocalChar('Merlin',PersonnageTTSLangueFr,PersonnageTTSModeFrFemelle)) { Animation_MSA_Test(); return false; }"
Si le chargement du personnage à réussi ( fonction LoadLocalChar avec comme paramètres le nom du personnage, la langue et le timbre à utiliser), on lance une animation (Animation_MSA_Test() dans cet exemple).
Initialisation générale du personnage
Déclaration des objets et Agent Microsoft dans la partie <head></head>
<!-- Lite des objets à inclure dans votre page HTML
si vous voulez que l'internaute dispose de mises à jour automatiques. -->
<!-- SAPI 4.0a runtime Speech Recognition Engine . A utiliser en association Lernout & Hauspie TTS3000 -->
<object
classid="CLSID:161FA781-A52C-11d0-8D7C-00A0C9034A7E"
codebase="#VERSION=4,0,0,0">
</object>
<!-- Lernout & Hauspie TTS3000 Text-To-Speech Engines en français -->
<object
classid="CLSID:1D87F5B4-05F1-11D2-AD7C-0000F8799342"
codebase="#VERSION=1,0,0,0">></object>
<!-- Microsoft Agent language component français. Doit être chargé avant le control Agent Object -->
<object
classid="CLSID:C348040C-A7F8-11D1-AA75-00C04FA34D72"
codebase="#VERSION=2,0,0,0">
</object>
<!-- Agent Microsoft -->
<object id="AgentControl"
classid="CLSID:D45FD31B-5C6E-11D1-9EC1-00C04FD7081F"
codebase="#VERSION=2,0,0,0">
</object>
Les variables et fonctions javascript utilitaires
Commentaires
La fonction LoadLocalChar(CharID,CharACS,Langue,Timbre) attend le paramètre CharID comme nom du personnage, le paramètre CharACS comme nom de fichier du personnage, le paramètre Langue qui va définir la langue du moteur texte-parole, et le paramètre Timbre qui va définir le type de voix (homme, femme etc). La fonction retourne true si le personnage est correctement chargé et initialisé ou false si ce n'est pas le cas.
AgentControl.Characters.Load(paramètres) charge le personnage et rend le résultat dans la variable LoadReq.
AgentControl.RaiseRequestErrors à true permet l'affichage des erreurs qui
peuvent survenir lors de l'initialisation.
LoadReq.Status donne la valeur du status initié avec AgentControl.Characters.Load(CharID, CharACS). Si différent de 1 le personnage est correctement chargé.
Pour toute la suite du programme on initialise la variable Personnage comme AgentControl.Characters.Character(PersonnageID).
Personnage.LanguageID = Langue va permettre d'utiliser le moteur texte-parole (TTS) correspondant au langage des personnages. On utilise les
variables générales.
var PersonnageTTSLangueFr=0x40C; // Langue française pour le tts
var PersonnageTTSLangueUs=0x409; // Langue anglaise pour le tts
Personnage.TTSModeID=Timbre va permettre de sélectionner un timbre pour la voix. On utilise les variables générales :
var PersonnageTTSModeFrMale= "\{0879A4E1-A92C-11d1-B17B-0020AFED142E\}" /*voix française homme*/
var PersonnageTTSModeFrFemelle= "\{0879A4E0-A92C-11D1-B17B-0020AFED142E\}" /*voix française femme*/
var PersonnageTTSModeUSMale= "\{CA141FD0-AC7F-11D1-97A3-006008273008\}" /*voix Anglais US male*/
Les variables générales PersonnageCenterX, PersonnageRightX, PersonnageCenterY et PersonnageBottomY sont initialisées en fonction de la taille de l'écran de l'utilisateur. Ces variables sont utilisées pour positionner facilement le personnage.
Personnage.Commands.Add() permet l'initialisation des commandes du menu click droit.
La fonction GestionErreur(NoErr) permet d'afficher le résultat en cas d'erreur d'initialisation.
Utiliser un personnage particulier
On peut installer divers personnages fournis par Microsoft mais aussi d'autres personnages disponibles sur Internet. On les sélectionnera en indiquant leur identificateur à la fonction LoadLocalChar(CharID,Langue,Timbre) lors de l'initialisation. En voici quelques exemples.
Exemple de personnages
Personnages
Identificateurs (CharID)
Aperçus
Tests
Merlin le magicien
Merlin
Sélectionnez un personnage
Note : pour faire disparaître un personnage faire click droit sur le personnage puis cliquez sur 'Masquer'
Genie le génie
Genie
James le majordome
James
Max le chien
Max
Peedy l'oiseau
Peedy
Faire Apparaître / Disparaître le personnage
Les propriétés Show et Hide référencées sur la variable Personnage[] initialisée lors de l'appel de la fonction LoadLocalChar() permettent de faire apparaître ou disparaître le personnage.
Personnage['Merlin'].Show (apparition du personnage Merlin)
Personnage['Merlin'].Hide (disparition du personnage Merlin)
Animer le personnage
Généralités
La propriété Play() associée aux paramètres ci dessous et référencée sur la variable Personnage[] initialisée lors de l'appel de la fonction LoadLocalChar() permet d'animer le personnage.
Nota : Certains noms des paramètres ainsi que les animations correspondantes sont spécifiques au personnage. Les animations ci dessous (à la suite du tableau) sont données pour le personnage Merlin.
Syntaxe : Personnage[].Play("Paramètre")
Paramètres d'animation des personnages
Paramètres
Animations
Merlin
Génie
James
Max
Peddy
Acknowledge
hoche la tête en signe d'approbation
X
X
X
X
X
Alert
se tient en alerte
X
X
X
X
X
AlertReturn
cesse de se tenir en alerte
X
Announce
fait une annonce
X
X
X
Blink
ferme et ouvre les yeux
X
X
X
X
X
Confused
prend une allure confuse
X
X
X
X
Congratulate
présente ses congratulations
X
X
X
X
Congratulate_2
2eme façon de présenter ses congratulations
X
X
Decline
prend une attitude de refus
X
X
X
X
DoMagic1
effet magique
X
X
X
X
DoMagic2
effet magique
X
X
X
X
DontRecognize
pardon, je n'ai pas entendu
X
X
X
X
Explain
explique
X
X
X
X
GestureDown
mouvement bras droit vers le bas
X
X
X
X
GestureLeft
mouvement bras droit vers la gauche
X
X
X
X
GestureRight
mouvement bras droit vers la droite
X
X
X
X
GestureUp
mouvement des deux bras vers le haut
X
X
X
X
GetAttention
attire votre attention
X
X
X
X
GetAttentionContinued
continue à attirer votre attention
X
X
X
X
GetAttentionReturn
fin attirer l'attention
X
X
X
X
GlanceDown
penche la tête vers le bas
X
GlanceDownReturn
cesse de pencher la tête vers le bas
X
GlanceRight
tourne la tête vers la droite
X
GlanceRightReturn
cesse de tourner la tête vers la droite
X
Greet
salut courbé
X
X
X
X
Hearing_1
écoute : oreilles agrandies(1)
X
X
X
X
Hearing_2
écoute : tête vers la droite(1)
X
X
X
X
Hearing_3
écoute : tête vers la gauche oreille agrandie(1)
X
X
X
Hearing_4
écoute : tête vers la droite oreille agrandie(1)
X
X
Hide
disparaît
X
X
X
X
X
Idle1_1
hoche légèrement la tête
X
X
X
X
Idle1_2
se tourne légèrement sur la gauche
X
X
X
X
Idle1_3
se tourne légèrement sur la droite
X
X
X
X
Idle1_4
lève les yeux vers la droite
X
X
X
X
Idle1_5
?
X
X
Idle1_6
?
X
Idle2_1
tend sa baguette
X
X
X
X
Idle2_2
croise les mains
X
X
X
X
Idle2_3
?
X
X
Idle3_1
baille
X
X
X
X
Idle3_2
s'endort
X
X
X
Idle3_3
?
X
LookDown
s'incline légèrement
X
X
X
X
LookDownBlink
s'incline légèrement et cligne des yeux
X
X
X
X
LookDownLeft
?
X
LookDownLeftBlink
?
X
LookDownLeftReturn
?
X
LookDownReturn
s'incline légèrement, cligne des yeux et revient à sa position initiale
X
X
X
X
LookDownRight
?
X
LookDownRightBlink
?
X
LookDownRightReturn
?
X
LookLeft
regarde sur la gauche
X
X
X
X
LookLeftBlink
regarde sur la gauche et cligne des yeux
X
X
X
X
LookLeftReturn
regarde sur la gauche et revient à sa position initiale
X
X
X
X
LookRight
regarde sur la droite
X
X
X
X
LookRightBlink
regarde sur la droite et cligne des yeux
X
X
X
X
LookRightReturn
regarde sur la droite et revient à sa position initiale
X
X
X
X
LookUp
regarde vers le haut
X
X
X
X
LookUpBlink
regarde vers le haut et cligne des yeux
X
X
X
X
LookUpLeft
?
X
LookUpLeftBlink
?
X
LookUpLeftReturn
?
X
LookUpReturn
regarde vers le haut et revient à sa position initiale
X
X
X
X
LookUpRight
?
X
LookUpRightBlink
?
X
LookUpRightReturn
?
X
MoveDown
se met en position pour se déplacer vers le bas
X
X
X
X
X
MoveDownReturn
revient à la position initiale avant MoveDown
X
MoveLeft
se met en position pour se déplacer vers la gauche
X
X
X
X
X
MoveLeftReturn
revient à la position initiale avant MoveLeft
X
MoveRight
se met en position pour se déplacer vers la droite
X
X
X
X
X
MoveRightReturn
revient à la position initiale avant MoveRight
X
MoveUp
se met en position pour se déplacer vers le haut
X
X
X
X
X
MoveUpReturn
revient à la position initiale avant MoveUp
X
Pleased
croise les mains
X
X
X
X
Process
prépare une mixture magique
X
X
X
X
Processing
prépare une mixture magique (1)
X
X
X
X
Read
lit
X
X
X
X
Reading
lit(1)
X
X
X
X
ReadContinued
continue de lire
X
X
X
X
ReadReturn
cesse de lire
X
X
X
X
RestPose
conserve sa pose
X
X
X
X
X
Sad
triste
X
X
X
X
Search
cherche dans sa boule de cristal
X
X
X
X
Searching
cherche dans sa boule de cristal (1)
X
X
X
X
Show
apparaît
X
X
X
X
X
StartListening
tend l'oreille
X
X
X
X
StopListening
se bouche les oreilles
X
X
X
X
Suggest
a une idée
X
X
X
X
Surprised
prend l'air surpris
X
X
X
X
Think
pense
X
X
X
X
Thinking
pense (1)
X
X
X
X
Uncertain
ne sait pas!
X
X
X
X
Wave
dit bonjour ou au revoir avec la main
X
X
X
X
X
Write
écrit
X
X
X
X
Writing
écrit (1)
X
X
X
X
WriteContinued
continue d'écrire
X
X
X
X
WriteReturn
cesse d'écrire
X
X
X
X
Note(1) : Animations en boucle.
Testez les animations relatives au personnage Merlin
Testez les animations relatives au personnage Max
Testez les animations relatives au personnage Génie
Testez les animations relatives au personnage Peedy
Testez les animations relatives au personnage James
Code générique utilisé
Déplacer le personnage
La propriété MoveTo()
La propriété MoveTo (PositionX, PositionY) référencée sur la variables Personnage[] initialisée lors de l'appel de la fonction LoadLocalChar() permet le déplacement du personnage sur l'écran de sa position initiale vers une nouvelle position de coordonnées X,Y. Les coordonnées sont référencées à partir du coin haut gauche de l'écran (0,0). X et Y sont des valeurs numériques.
Syntaxe MoveTo (X, Y). Exemple Personnage[].MoveTo (0, 0) positionne le personnage en haut à gauche de l'écran.
Rappelons que les variables PersonnagePosLeftX[], PersonnagePosRightX[] , PersonnagePosTopY[], PersonnagePosBottomY[], PersonnagePosCenterX[], PersonnagePosCenterY[] et sont à disposition pour positionner facilement le personnage. Ces variables sont automatiquement initialisées dans la fonction LoadLocalChar(),en fonction des dimensions de l'écran de l'internaute.
Exemples de déplacements à l'aide de variables prédéfinies
La propriété Speak ("Texte à dire", "URL fichier wave") référencée sur la variables Personnage[] initialisée lors de l'appel de la fonction LoadLocalChar() permet de faire parler le personnage.
"Texte à dire" spécifie le texte que le personnage doit dire et "URL fichier wave", indique l'emplacement absolu ou relatif du fichier wav à utiliser à la place de la synthèse vocale (facultatif). Ces deux paramètres sont de type chaîne.
Si on utilise uniquement la synthèse vocale le paramètre "URL" peut être omis.
Syntaxe : Personnage[].Speak ("Texte à dire", "URL fichier sonore).
Exemples
sans fichier sonore : Personnage[].Speak ("Bonjour et bienvenue","").
avec fichier sonore : Personnage[].Speak ("Coucou", "Media/good2.wav").
Paramètres de la voix
Pour faire varier la voix de l'agent ou pour différentes choses, Microsoft à conçu une série de balises (avec leurs propriétés) à inclure dans le texte du personnage.
Les balises sont à mettre entre des "\", sous la forme :
\Balise=valeur\
Attention à la syntaxe lors de l'écriture de vos scénarios dans description des balises : '\Chr="Whisper"\blabla..'. Chaque \ rencontré devra être précédé d'un autre \ pour signaler qu'il ne s'agit pas d'un caractère de commande : '\\Chr="Whisper"\\blabla..'.
Attention aussi aux imbrications des quottes ' et ".
Balises de texte pour effet de son
Balises
Actions sur ...
Valeurs et Syntaxes
Test
\Chr="Modes"\
Mode de prononciation du texte
"Normal" : Prononciation normalement.
"Whisper" : Prononciation chuchotée.
"Monotone" : Prononciation monotone.
Personnage['Merlin'].Speak('\\Chr="Whisper"\\Bonjour je suis un agent Microsoft. Comment allez vous?');
\Ctx="Modes"\
Prononciation spécifique pour une adresse mail ou une adresse simple
"Unknown" : Texte par défaut : pas de changement.
"E-Mail" : Prépare l'agent à prononcer une adresse Mail.
"Address" : Prépare l'agent à prononcer une adresse ou un numéro de téléphone.
Personnage['Merlin'].Speak('Connectez vous à \\Ctx="E-Mail"\\monwebfacile@free.fr');
Personnage['Merlin'].Speak('Je réside au \\Ctx="Adress"\\2, rue Musset 34561 Cucugnan');
\Emp\
Prononciation accentuée
Pas de valeurs additionnelles
Personnage['Merlin'].Speak('Bonjour je suis un agent \\Emp\\Microsoft. Comment allez vous?');
\Spd=X\
Nombre de mots dits par minute
140 est une bonne valeur moyenne pour un débit acceptable
Personnage['Merlin'].Speak('\\Spd=140\\Bonjour je suis un agent Microsoft. Comment allez vous?');
\Pit=k\
Fréquence de la voix
k peut prendre des valeurs comprises entre 50 et 400. Valeur par défaut 50hz.
Personnage['Merlin'].Speak('\\Pit=50\\Bonjour je suis un agent Microsoft. Comment allez vous?');
\Vol=Y\
Niveau sonore de la voix du personnage
Varie de 0 (silence) jusqu'à 65535 (max)
Personnage['Merlin'].Speak('je suis un agent Microsoft. \\Vol=30000\\Comment allez vous?'):
\Pau=Z\
Introduit une pose dans la diction
Z est la valeur de la pause en millisecondes
Personnage['Merlin'].Speak('Bonjour,\\Pau=2000\\ je suis un agent Microsoft. Comment allez vous?');
\Map="Texte Parlé"="Texte Bulle"\
Le personnage dit quelque chose différent du contenu de la bulle
Personnage['Merlin'].Speak("\\Map=\"Ma bulle n\'affiche pas ce que je dis !\"=\"Écoutez bien\"\\");
\Mrk=xxxxxxx\
Ajoute un marque-page (BookMark), dans le texte. Cela ne change rien à la voix mais génère un événement OnBookMark associé au personnage et permet d'associer une action externe.(1)
0 < x x x x x x x x Pas de valeurs additionnelles
Personnage['Merlin'].Speak('\\Mrk=1\\');
\Lst\
Répétition du dernier texte (y compris les balises)
Pas de texte suivant cette balise
Personnage.Speak('Bonjour je suis un agent \\Emp\\Microsoft. Comment allez vous?'). Personnage['Merlin'].Speak('\\Lst\\');
\Rst\
Remet toutes les balises aux valeurs par défaut.
Pas de valeurs additionnelles
Personnage['Merlin'].Speak('\\Rst\\','');
Note (1)
Dans la partie <head></head> on défini le script pour gérer les marque-pages (Bookmark).
<script type="text/javascript" for="AgentControl" event="Bookmark(BookmarkID)">
<!--
// Utilisation des Marque Pages
switch(BookmarkID) {
case 1:
alert("Je suis le résultat d'un évènement déclenché par le Marque-Page de valeur 1");
break;
}
//-->
</script>
Remplacer les voix de synthèse par un fichier son
Le fichier son au format .wav doit se trouver sur l'ordinateur de l'internaute. Si vous n'avez pas de fichier faisant l'affaire vous pouvez télécharger celui-ci (Merlin.wav) et le sauvegarder ou bon vous semble.
Décrivez le chemin complet pour accéder à votre fichier :
Exp : c:\Merlin.wav
Testez le résultat avec ce fichier
Si le personnage apparaît et disparaît très rapidement sans parler c'est que le fichier .wav, ou(et) le chemin d'accès, ou(et) la syntaxe sont incorrects.
Attention à la syntaxe lors de l'écriture de vos scénarios dans description du chemin : 'xxxxx\yyyy\yyyy\aaa.wav'. Chaque \ rencontré devra être précédé d'un autre \ pour signaler qu'il ne s'agit pas d'un caractère de commande : 'xxxxx\\yyyy\\yyyy\\aaa.wav'
Afficher une bulle
Style général de la bulle
Le style de la bulle est défini par une valeur hexadécimale codée sur 4 octets
Le premier octet agit sur la visibilité de la bulle (bit 0), son adaptation automatique (bit 1), la fermeture automatique en fin de texte (bit 2), l'affichage immédiat ou au fil de l'animation(bit 3).
Le deuxième octet ne nous concerne pas
Le troisième octet bits (16-23) gère le nombre de caractères par ligne dans la bulle (avec bit 1 d'adaptation automatique à 0).
Le quatrième octet (bits 24-31) gère le nombre de ligne dans la bulle (avec bit 1 d'adaptation automatique à 0).
Exemple : Personnage[].Balloon.Style=0x330000F;
Style du texte
Personnage[].Balloon.FontName = "Comic Sans MS"
Personnage[].Balloon.FontSize = 14
Taille du personnage
Par défaut la taille de Merlin est de 128px par 128px mais on peut la modifier
Actuellement JavaScript ne dispose pas de syntaxe d'évènement pour des objets non-HTML. Uniquement pour le navigateur Internet Explorer on peut utiliser la syntaxe suivante :