Comate et les Agents windows !!

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Comate et les Agents windows !!

Message par Backup »

Comate est une lib a récuperer ici :
http://www.purebasic.fr/english/viewtop ... ght=comate

elle permet d'utiliser sans effort, les activeX

et donc ... les agents microsoft !

faire grace a eux, de la synthese vocale, des animations etc ...
c'est plus sympath de faire parler un agent, plutot qu'une bete boite d'alerte :)

l'exemple fourni avec comate concernant les agents, n'est pas tres complet aussi , je me suis permis de le peaufiner un peu , en y ajoutant pratiquement toute les animations des agents, mais aussi de pouvoir choisir les agents microsoft (prenez soin de les installer auparavent )

ces agents sont telechargeables ici :
http://www.microsoft.com/MSAgent/downloads/user.aspx

profitez en pour récupérer aussi le moteur de synthèse vocale en français
et aussi en espagnole, puisque mon code montre comment on peut changer de voix facilement :)
recuperez aussi le moteur de reconnaissance vocale
mon petit doigt me dit que ça pourrai bien servir un jour :)

voici donc le code a copier a la place du code "Demo_Agent.pb"
du dossier "Basic demo" :)

code edité le 04/03/2009

Code : Tout sélectionner

;EnableExplicit

; recuperer les agents et la reconaissance vocale ici
;http://www.microsoft.com/MSAgent/

IncludePath "..\"
XIncludeFile "COMate.pbi"

Define.l cHeight, cWidth


If ExamineDesktops()
    cWidth  = DesktopWidth(0)   / 2 - 50
    cHeight = DesktopHeight(0)  / 4
EndIf 

Define.COMateObject oAgent, oGenie

oAgent = COMate_CreateObject("Agent.Control.1")

If oAgent
    oAgent\SetProperty("Connected = #True") 
    
    ;SL.Add(IAgentCtlCharacter(id).Name); 
    
    
    
    
    ; **************************** le peroquet ***********************
    ; oAgent\Invoke("Characters\Load('peedy','Peedy.acs')") ; 
    ;oGenie = oAgent\GetObjectProperty("Characters('peedy')")
    ; *************************************************************
    ; **************************** le Genie  ***********************
    ; oAgent\Invoke("Characters\Load('Genie','Genie.acs')") 
    ; oGenie = oAgent\GetObjectProperty("Characters('Genie')")
    ; *************************************************************
    
    ; **************************** le Robot  ***********************
    ;oAgent\Invoke("Characters\Load('Robby','Robby.acs')") 
    ;oGenie = oAgent\GetObjectProperty("Characters('Robby')")
    ; *************************************************************
    
    ; **************************** Merlin  ***********************
    oAgent\Invoke("Characters\Load('Merlin','Merlin.acs')") ;
   oGenie = oAgent\GetObjectProperty("Characters('Merlin')")
    ; *************************************************************
    ; ************************** personages suplementaire *****************************************
    ; **************************** Oscar ***********************
    ; a recuperer ici : http://www.agentland.fr/cgi-bin/relocationFR.cgi?http://www.agentland.fr/Download/6Artificial_Life/Desktop_Agents/Ms_agents/Characters/more2.html
    ;  oAgent\Invoke("Characters\Load('Oscar','Oscar.acs')") ;
    ;   oGenie = oAgent\GetObjectProperty("Characters('Oscar')")
    
    ; *******************************; a recuperer ici : http://www.agentland.fr/cgi-bin/relocationFR.cgi?http://www.agentland.fr/Download/6Artificial_Life/Desktop_Agents/Ms_agents/Characters/more2.html
    ;  oAgent\Invoke("Characters\Load('Baron','Baron.acs')") ;
    ;   oGenie = oAgent\GetObjectProperty("Characters('Baron')")
    ; ******************************************************************************************
    
    ; *******************************; a recuperer ici : http://www.agentland.fr/cgi-bin/relocationFR.cgi?http://www.agentland.fr/Download/6Artificial_Life/Desktop_Agents/Ms_agents/Characters/more2.html
     ; oAgent\Invoke("Characters\Load('Actmanii','Actmanii.acs')") ;
    ;   oGenie = oAgent\GetObjectProperty("Characters('Actmanii')")
    ; ******************************************************************************************
    
    If oGenie
        oGenie\Invoke("show")
        Delay(3000)
        oGenie\Invoke("MoveTo("+StrU(cWidth)+", "+StrU(cHeight)+", 3000)") ; x,y,vitesse de deplacement
        ; les animations :
        
        
        ; 
        oGenie\Invoke("LanguageID=$409") ; $40C force a parler français ($409 pour l'anglais et la reconnaissance vocale)
        ;************** comment changer la voix !! *****************************
        ; aller dans la base de registre cherchez la chaine qui caracterise la voix !!
        ;hklm\Software\Microsoft\
        ;  Debug  oGenie\GetStringProperty("TTSModeID")
        veronique.s="{0879A4E0-A92C-11d1-B17B-0020AFED142E}" ;voix française
        pierre.s="{0879A4E1-A92C-11d1-B17B-0020AFED142E}" ;voix fançaise
        carmen.s="{2CE326E0-A935-11d1-B17B-0020AFED142E}" ; voix espagnole a telecharger
        julio.s="{2CE326E1-A935-11d1-B17B-0020AFED142E}" ; voix espagnole a telecharger
        ;;;virginie.s="{CAC6785B-655E-4ae1-A656-BDEFD18DC46C}" ; Sapi 5 ne marche pas avec les agents
        ;;;Sam.s="{65DBDDEF-0725-11D3-B50C-00C04F797396}";Sapi 5 ne marche pas avec les agents
       ;  oGenie\SetProperty("TTSModeID='"+pierre.s+"'") ; choisi pierre si présent
        
        
        
        
        ;Peedy.Commands.Add('calcul','&lancer la calculatrice','(calculatrice)',True,True);
        
     
        
        ; Peedy.Commands.Add('Bonjour','&Bonjour','(Hello | Bonsoir)',True,True);  
        ; 
        ; Character.Commands.Add("Hello",  // Command name
        ; 
        ; (object)"Say Hello",  // Display name
        ; 
        ; (object)"([say](hello | hi) | good (day | morning | evening))", // SR String
        ; 
        ; (object)true,  // Enabled
        ; 
        ; (object)true);  // Visible
   ;    oGenie\Invoke("Commands\RemoveAll");
        
   ;    oGenie\SetProperty("Commands\Caption='Test english voice'")
   ;    oGenie\SetProperty("Commands\Voice='Merlin recognize english'")
        
   ;     oGenie\Invoke("Commands\Add('yes','&yes','(yes |oui)',#true,#true");
    ;    oGenie\SetProperty("Commands\Visible=#true");
        
        
    ; oGenie\Invoke("listen(#true)")
       ; Debug oGenie\GetStringProperty("listen(0)")
     ;  Repeat
      
          ; CommandeVocale:=IAgentCtlUserInput(UserInput).name;
     ;   Debug oGenie\GetStringProperty("IAgentCtlUserInput\name")
       ; If oGenie\Invoke("IAgentCtlUserInput\name")<>""
         
      ;      Debug oGenie\Invoke("IAgentCtlUserInput\name")
        ;EndIf
        
            ; If rep.s="calcul"
             ;   oGenie\Invoke("Speak('Bonjour'");
            ;EndIf
            
       ;ForEver
       ;CallDebugger
        
         
        
        ch$="'\Chr='Whisper'\'"  ;Monotone;Whisper,Normal
        ch$="'bonjour, je vais vous parler de Purebasic'"
        oGenie\Invoke("Speak("+ch$+")")
        
        ch$="'tiens a quoi je pense la ?'"
        oGenie\Invoke("Think("+ch$+")") ; fait penser l'agent !!
        
        oGenie\Invoke("play('Greet')") 
        Delay(1000)
        oGenie\Invoke("play('confused')") 
        Delay(1000)
        
        oGenie\Invoke("play('alert')")
        Delay(1000)
        
        oGenie\Invoke("play('Announce')")
        Delay(1000)
        
        oGenie\Invoke("play('Congratulate')")
        Delay(1000)
        
        oGenie\Invoke("play('DoMagic2')")
        Delay(1000)
        
        oGenie\Invoke("play('Decline')")
        Delay(1000)
        
        oGenie\Invoke("play('DontRecognize')")
        Delay(1000)
        
        oGenie\Invoke("play('Explain')")
        Delay(1000)
        
        oGenie\Invoke("play('GestureDown')")
        Delay(1000)
        
        oGenie\Invoke("play('GestureLeft')")
        Delay(1000)
        
        oGenie\Invoke("play('GestureRight')")
        Delay(1000)
        
        oGenie\Invoke("play('GestureUp')")
        Delay(1000)
        
        oGenie\Invoke("play('GetAttention')") 
        Delay(1000)
        
        oGenie\Invoke("play('GetAttentionContinued')")
        Delay(1000)
        
        oGenie\Invoke("play('GetAttentionReturn')")
        Delay(1000)
        
        oGenie\Invoke("play('LookDown')")
        Delay(1000)
        
        oGenie\Invoke("play('LookDownreturn')")
        Delay(1000)
        
        oGenie\Invoke("play('LookDownBlink')")
        Delay(1000)
        
        oGenie\Invoke("play('LookDownreturn')")
        Delay(1000)
        
        oGenie\Invoke("play('LookLeft')")
        Delay(1000)
        
        oGenie\Invoke("play('LookLeftreturn')")
        Delay(1000)
        
        oGenie\Invoke("play('LookLeftBlink')")
        Delay(1000)
        
        oGenie\Invoke("play('LookLeftreturn')")
        Delay(1000)
        
        oGenie\Invoke("play('LookRight')")
        Delay(1000)
        
        oGenie\Invoke("play('LookRightreturn')")
        Delay(1000)
        
        oGenie\Invoke("play('LookRightBlink')")
        Delay(1000)
        
        oGenie\Invoke("play('LookRightreturn')")
        Delay(1000)
        
        oGenie\Invoke("play('LookUp')")
        Delay(1000)
        
        oGenie\Invoke("play('LookUpReturn')")
        Delay(1000)
        
        oGenie\Invoke("play('LookUpBlink')")
        Delay(1000)
        
        oGenie\Invoke("play('LookUpReturn')")
        Delay(1000)
        
        oGenie\Invoke("play('LookUpReturn')")
        Delay(1000)
        
        oGenie\Invoke("play('MoveDown')")
        Delay(1000)
        
        oGenie\Invoke("play('MoveLeft')")
        Delay(1000)
        
        oGenie\Invoke("play('MoveRight')")
        Delay(1000)
        
        oGenie\Invoke("play('MoveUp')")
        Delay(1000)
        
        oGenie\Invoke("play('Pleased')")
        Delay(1000)
        
        oGenie\Invoke("play('Processing')") ; bloc
        Delay(5000)
        oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
        
        Delay(2000)
        ;oGenie\Invoke("play('Stop')")
        
        oGenie\Invoke("play('Read')")
        Delay(1000)
        
        oGenie\Invoke("play('ReadContinued')")
        Delay(1000) 
        
        oGenie\Invoke("play('Reading')"); bloc
        Delay(5000)
        oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
        Delay(1000) 
        
        oGenie\Invoke("play('Sad')")
        Delay(1000) 
        
        oGenie\Invoke("play('Searching')") ; bloc 
        Delay(5000)
        oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
        Delay(1000) 
        
        oGenie\Invoke("play('StartListening')")
        Delay(1000) 
        
        oGenie\Invoke("play('StopListening')")
        Delay(1000) 
        
        oGenie\Invoke("play('Suggest')") ; bloc
        Delay(5000)
        oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
        Delay(1000) 
        ;
        oGenie\Invoke("play('Surprised')")
        Delay(1000) 
        ;  
        oGenie\Invoke("play('Think')")
        Delay(1000) 
        
        oGenie\Invoke("play('Uncertain')")
        Delay(1000) 
        
        oGenie\Invoke("play('Wave')")
        Delay(1000)  
        ;
        oGenie\Invoke("play('Write')")
        Delay(1000) 
        
        oGenie\Invoke("play('WriteContinued')") ;bloc
        Delay(5000)
        oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
        
        Delay(1000) 
        
        oGenie\Invoke("play('Writing')") ; bloc
        Delay(5000)
        oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
        Delay(1000) 
        
        oGenie\Invoke("play('Writereturn')")
        
        
        oGenie\Invoke("play('StopAll')")
        
        
        ch$="'bonjour, je vais vous parler de Purebasic'"
        oGenie\Invoke("Speak("+ch$+")")
        
        oGenie\Invoke("play('Reading')") ; bloc 
        Delay(5000)
        oGenie\Invoke("StopAll") ; obligé apres les animations qui boucles
        Delay(2000)
        
        
        ch$="'\Pit=100\ PureBasic est vraiment un super langage'" ; en principe le pitch en hertz entre 50 et 400
        
        oGenie\Invoke("Speak("+ch$+")")
        Delay(5000)
        ch$=" '\Spd=200\ je sais parler plus vite aussi'" ; en mot par minutes (de 50 a 250)
        
        oGenie\Invoke("Speak("+ch$+")")
        Delay(6000)
        ch$=" '\Spd=80\ je sais parler plus lentement aussi'" ; en mot par minutes
        
        oGenie\Invoke("Speak("+ch$+")")
        Delay(6000)
        ch$="'\Vol=1000\ et moins fort '" ;de 0 a 65535 ; le volume en principe
        
        oGenie\Invoke("Speak("+ch$+")")
        
        ch$="'\Vol=65535\ \Pit=50\ et beaucoup plus fort !! '" ;de 0 a 65535 ; le volume en principe
        
        oGenie\Invoke("Speak("+ch$+")")
        
        ch$="'\Rst\'" ; reset les tag
        oGenie\Invoke("Speak("+ch$+")")
        Delay(6000) 
        oGenie\Invoke("Speak('Au revoir ! .')") 
        
        oGenie\Invoke("play('Hide')")
        Delay(3000) 
        oGenie\Release()
    EndIf
    oAgent\Release()
EndIf

    
        
  
Dernière modification par Backup le mer. 04/mars/2009 14:45, modifié 3 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je vais essayer de voir si je peut mettre en oeuvre la reconnaissance vocale
hum ... :)
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Pratique pour écouter une texte écrit! :D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Cool et en plus ça cause :D

Je vois que tu as été faire un tour du coté de COMATE :wink:
J'ai dit que la moitié d'une connerie alors :D

COMATE c'est l'enfer...avec ça plus rien de chez crosoft ne devrais resister a PB :?
PB y va pouvoir jouer dans la cour des grands :D

Par contre, moi j'ai un petit "buguinet", a la deuxieme fois qu'il dit "bonjour....parler de pure basic", j'ai une bulle vide et il plante 8O
Et j'suis obligé d'utiliser les 3 touches favorites de crosoft :cry:

Et aussi, j'ai pas tout compris comment tu choisis ton personnage

Merci DOBRO de partager tes sources comme dab 8)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Kwai chang caine a écrit :
Et aussi, j'ai pas tout compris comment tu choisis ton personnage

Merci DOBRO de partager tes sources comme dab 8)
cette partie :

Code : Tout sélectionner

; **************************** le peroquet ***********************
    ;oAgent\Invoke("Characters\Load('peedy','Peedy.acs')") ;
    ;oGenie = oAgent\GetObjectProperty("Characters('peedy')")
    ; *************************************************************
    ; **************************** le Genie  ***********************
   ; oAgent\Invoke("Characters\Load('Genie','Genie.acs')")
    ; oGenie = oAgent\GetObjectProperty("Characters('Genie')")
    ; *************************************************************
   
    ; **************************** le Robot  ***********************
    ;oAgent\Invoke("Characters\Load('Robby','Robby.acs')")
    ;oGenie = oAgent\GetObjectProperty("Characters('Robby')")
    ; *************************************************************
   
    ; **************************** Merlin  ***********************
    oAgent\Invoke("Characters\Load('Merlin','Merlin.acs')") ;
    oGenie = oAgent\GetObjectProperty("Characters('Merlin')")
    ; ************************************************************* 
tu décommenté seulement le personnage que tu veux
bien sur , il faut recommenter l'autre , un seul ne peut etre actif !!

et il faut aussi que l'agent soit installé sur l'ordinateur ;)
Kwai chang caine a écrit : Par contre, moi j'ai un petit "buguinet", a la deuxieme fois qu'il dit "bonjour....parler de pure basic", j'ai une bulle vide et il plante 8O
Et j'suis obligé d'utiliser les 3 touches favorites de crosoft
je viens de ré editer le listing peut tu retester s'il te plait ??

c'est bizarre , chez moi ça marche nickel .. mais bon :?
SpaceMan
Messages : 290
Inscription : mar. 26/oct./2004 19:35
Contact :

Message par SpaceMan »

ouaohh ! c'es vraiment cool. Et là ça me donne pleins d'idées: comme introduire ma soutenance avec...
En tout cas c'est du bon boulot Dobro !
Merci de le partager avec nous :)
Un défaut qui empêche les hommes d’agir, c’est de ne pas sentir de quoi ils sont capables.
Jacques Bénigne Bossuet
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Bonjour,

Ca a l'air cool, sauf que là... ça ne parle jamais chez moi :S, pourtant j'ai sélectionné Veronique que j'ai téléchargé, Pierre aussi ne fonctionne pas, et Virginie qui est par contre SAPI 5 nonplus...
Quelqu'un a-t-il une idée ?
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Merci pour l'info et le partage, c'est excellent !
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

gansta93 a écrit :Bonjour,

Ca a l'air cool, sauf que là... ça ne parle jamais chez moi :S, pourtant j'ai sélectionné Veronique que j'ai téléchargé, Pierre aussi ne fonctionne pas, et Virginie qui est par contre SAPI 5 nonplus...
Quelqu'un a-t-il une idée ?
oui! oui! pas grave , il te faut récupérer le moteur Sapi4 'spchapi.exe'
ici : http://www.brains-minds-media.org/archi ... i.exe/view

:)
ps; vous pouvez recuperer plein de personages ici :
http://www.agentland.fr/cgi-bin/relocat ... more2.html
Dernière modification par Backup le sam. 28/févr./2009 0:25, modifié 2 fois.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

je viens de ré editer le listing peut tu retester s'il te plait ??
Je sais pas ce que tu as fait, mais ça marche nickel maintenant 8)

Et merci aussi pour l'explication :D
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Bon, je l'avais installé, en le réinstallant ça marche :lol: enfin pas sûr qu'il parle tout le temps qu'il devrait, mais je vais revérifier.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Je me permet un rapide Hors-Sujjet mais pas complet : quelqu'un aurait-il les noms des objets avec méthodes&propriétées à utiliser pour contrôler MSN Messenger/Windows Live Messenger ?

Sinon j'ai revérifié et maintenant Véronique me livre tout ses secrets :P par contre Virginie n'a pas envi de parler... ah les femmes ! :lol:

Apparemment on ne peut utiliser que des synthèses SAPI 4 avec les agents. Ou alors c'est encore mon PC qui veut se diférencier, ça ne serait pas la première fois ^^.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tout a fait !! Agent microsoft = Sapi4

il me semble bien avoir mis un commentaire dans ce sens sur les voix sapi
5 dans le listing !! ;)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Dobro a écrit :tout a fait !! Agent microsoft = Sapi4

il me semble bien avoir mis un commentaire dans ce sens sur les voix sapi
5 dans le listing !! ;)
Bon... :? je lirais mieux la prochaine fois...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

par contre le Sapi5 est pris en charge par les agents microsoft, sous Vista !!

vista en principe inclue aussi une reconnaissance vocale en français !! ;)
(peut etre pas la version de base quand meme ;) )
Répondre