Viewing 10 reply threads
  • Author
    Posts
    • #5680
      steve
      Participant

      Bonjour
      je débute avec MRL

      je cherche a faire coupé le micro quand il y a une lecture d’un texte et à le rallumer après.

      voici mon petit script j’aimerai savoir ce que je dois y ajouter pour réaliser cette fonction.

      
      from java.lang import String
      
      chatBot=Runtime.createAndStart("chatBot", "ProgramAB")
      ear=Runtime.createAndStart("ear", "WebkitSpeechRecognition")
      mouth=Runtime.createAndStart("mouth", "AcapelaSpeech")
      htmlFilter=Runtime.createAndStart("htmlFilter", "HtmlFilter")
      webgui=Runtime.createAndStart("webgui", "WebGui")
      
      ear.setLanguage("fr-FR")
      mouth.setLanguage("FR") # on parle francais !
      mouth.setVoice("julie") # on choisis une voix ( voir la liste des voix sur http://www.acapela-group.com/?lang=fr
      
      chatBot.startSession("ProgramAB","Defaut","hsboot")
      
      ear.addTextListener(chatBot) # On creer une liaison de webKitSpeechRecognition vers Program AB
      chatBot.addTextListener(htmlFilter) # On creer une liaison de Program AB vers html filter
      htmlFilter.addTextListener(mouth) # On creer une liaison de htmlfilter vers mouth
      
      chatBot.startSession("ProgramAB","Defaut","hsboot")
      chatBot=Runtime.createAndStart("chatBot", "ProgramAB")
      
      mouth.speakBlocking("salut! bienvenu dans ce programme de test.")
      

      merci d’avance pour votre aide

      • This topic was modified 8 years ago by steve.
      • This topic was modified 8 years ago by steve.
    • #5695
      anthony
      Moderator

      coucou alors ce qui est bien c’est qu’on peut prendre le contrôle sur ce micro webkit
      On peut aussi intercepter quand le robot parle onStartSpeaking et quand il se tait onEndSpeaking .

      le code est quelque part dedans 🙂

      je te laisse galérer un peu et j essaierais de t extraire l essentiel + tard :

      https://github.com/moz4r/aiml/blob/master/bots/BOTS-FRENCH/Inmoov_AI/PYTHON/INMOOV-AI_divers.py
      https://github.com/moz4r/aiml/blob/master/bots/BOTS-FRENCH/Inmoov_AI/PYTHON/INMOOV-AI_startup.py

    • #5701
      steve
      Participant

      Salut anthony,

      merci pour ton aide

      j’ais bien avancé dans cette fonction mais il y a toujours un truc que je comprends pas
      je détecte bien le début et la fin quand le robot parle. Mais le micro ne se coupe pas
      dans les logs je vois bien le print avec debut et fin du dialogue
      voici mon code

      
      
      # ##############################################################################
      # Fix programab aimlif problems : remove all aimlif files
      # ##############################################################################
      try:
      	shutil.rmtree(oridir+'ProgramAB/bots/hsboot/aimlif')
      except: 
      	pass
      
      chatBot=Runtime.createAndStart("chatBot", "ProgramAB")
      ear=Runtime.createAndStart("ear", "WebkitSpeechRecognition")
      mouth=Runtime.createAndStart("mouth", "AcapelaSpeech")
      htmlFilter=Runtime.createAndStart("htmlFilter", "HtmlFilter")
      
      ear.setLanguage("fr-FR")
      mouth.setLanguage("FR") # on parle francais !
      mouth.setVoice("julie") # on choisis une voix ( voir la liste des voix sur http://www.acapela-group.com/?lang=fr
      
      chatBot.startSession("ProgramAB","Defaut","hsboot")
      
      ear.addTextListener(chatBot) # On creer une liaison de webKitSpeechRecognition vers Program AB
      chatBot.addTextListener(htmlFilter) # On creer une liaison de Program AB vers html filter
      htmlFilter.addTextListener(mouth) # On creer une liaison de htmlfilter vers mouth
      
      chatBot.startSession("ProgramAB","Defaut","hsboot")
      chatBot=Runtime.createAndStart("chatBot", "ProgramAB")
      
      webgui = Runtime.create("WebGui","WebGui")
      webgui.autoStartBrowser(False)
      webgui.startService()
      
      webgui.startBrowser("http://localhost:8888/#/service/ear")
      
      def onStartSpeaking(text):
      	ear.stopListening()
      	print "Start Speaking"
      
      def onEndSpeaking(text): 
      	ear.startListening()
      	print "Stop speaking"
      
      python.subscribe("mouth", "publishEndSpeaking")
      python.subscribe("mouth", "publishStartSpeaking") 
      
      mouth.speakBlocking("salut! bienvenu dans ce programme de test.")
      
      
    • #5731
      anthony
      Moderator

      Salut ! tu utilise quelle version de mrl ? je vais essayer ton code tu peux le publier sur ton github ? le forom l’a un peu déformaté
      J’ai vu que tu as cloné mon fork de pyrobolab, je te conseille plutôt de cloner le dépôt directement qui lui sera à jour :
      Apres avoir créé un compte chez mrl ( en fait je ne sais plus comment ça se passe pour faire la liaison entre mrl et github au niveau du répertoire personnel ) dans le répertoire home chacun à son répertoire personnel : https://github.com/MyRobotLab/pyrobotlab/tree/master/home

      Dépôt script pythons : https://github.com/MyRobotLab/pyrobotlab

      Tu as un autre dépôt dédié aux chatbot complets : si tu veux par exemple participer au dev de inmoovAi la tu peux cloner le fork directement on bosse tous dessus en direct avant de publier

      fork aiml InmoovAi : https://github.com/moz4r/aiml

      Ou si tu veux publier un autre chatbot complet :

      Dépôt mrl “Aiml” : https://github.com/MyRobotLab/aiml

      Apres je suis pas expert en github si qq d’autre peut préciser l’histoire des répertoires perso

    • #5732
      steve
      Participant

      merci anthony,

      bon il va falloir que je regarde encore un peux le fonctionnement de github car je n’ais pas encore regardé comment publier le code sur github.

      si j’utilise ton code inmoov_ai j’ais le même problème avec ma commande.

      je lance ton script.
      et si je vais dans les commandes python que je teste c’est 2 commandes :
      i01.ear.startListening()
      i01.ear.resumeListening()
      l’icone du micro sur la page http://localhost:8888/#/service/i01.ear passe bien en rouge comme activé

      par contre si je teste c’est 2 commandes:
      i01.ear.stopListening()
      i01.ear.pauseListening()
      l’icone du micro sur la page ne deviens pas gris donc toujours activé

      il doit y avoir un truc que je comprends pas sur la fonction d’arret du micro.

      encore merci de ton aide

    • #5733
      anthony
      Moderator

      mmm quelle version de mrl tu utilise ? et de java ( 8 64bit ? )
      si tu ne vois pas d erreurs dans la logs. Tu peux tenter une reinstal de mrl from scratch
      ( avec java 64 + chrome )

    • #5734
      Gael Langevin
      Keymaster

      Ca ne serait pas le WebkitRecognition fix qui cause ce probleme? Lorsque je lance cette fonction, je ne peux plus couper le micro non plus.

    • #5735
      steve
      Participant

      java en dernière version 8 64 bit
      mrl en version 1.0.1758 ou 1.0.1723

      même avec ton inmoovai qui fonctionne très bien en automatique si je tape directement la commande
      i01.ear.stopListening() ou i01.ear.pauseListening() dans le module python ça ne coupe pas le micro et si je tape la commande : i01.ear.startListening() ou i01.ear.resumeListening() ça l’active bien si il es coupé.

      • #5737
        anthony
        Moderator

        Coucou messieurs ! ah oui Gaël alors il y a 2 choses
        1: la coupure du micro quand le robot parle et sa réactivation quand il a fini
        2: Sa réactivation automatique après timeout
        Il faut conditionner sa réactivation automatique , seulement si le robot n’est pas entrain de parler. Sinon ces 2 fonctions vont entrer en conflit
        C’est pour cela que je passe une variable globale ( Ispeak ) qui est à 1 quand le root parle
        Auquel cas je ne lance pas l’action du timer

        global Ispeak
        def WebkitSpeachReconitionON(timedata):
        global Ispeak
        if Ispeak==0:
        ear.resumeListening()

        Steve : J’ai pu reproduire et résoudre ton problème, tu trouvera en PJ ton script un peu remanié .
        Le soucis : vient du service “ear” et “mouth” qui n’est pas le même ( pas la même version certainement ) que le service Inmoov “i01.ear” . Une confirmation peut être apporté par nos amis développeurs de mrl ( le service inmoov est en gros une compilation de services modifiés et adaptés au fonctionnement de Inmoov )

        Tu verra un U devant les phrases ( Unicode ), ceci étant pour éviter que python ne bug a la rencontre d’accents
        Tes aiml devant aussi etre encodé en utf8 attention

        A++

        Attachments:
        You must be logged in to view attached files.
    • #5739
      lecagnois
      Participant

      salut Anthony

      J aime bien quand tu explique ton code , ca aide beaucoup
      Merci

    • #5743
      steve
      Participant

      un grand merci
      super ce partage de connaissance.

      maintenant je vais pouvoir étudier la suite car j’ais de petites idées pour compléter ton code

    • #5754
      anthony
      Moderator

      Génial !!

Viewing 10 reply threads
  • You must be logged in to reply to this topic.