Viewing 13 reply threads
  • Author
    Posts
    • #8365
      Dominique
      Participant

      Je suis en train de réfléchir pour faire un nouveau service de reconnaissance vocale. Mais je ne sais pas encore comment faire.

      J’ai trouvé quelques infos sur celui qui est utilisé actuellement. Le service WebkitSpeechRecognition utilise l’API de reconnaissance vocale inclus dans google chrome. Hors, vous saviez que google limite à 50 requêtes par jour ? Avez vous déjà atteint cette limite ?
      Ensuite, dans le code de MRL, startListening et resumeListening font exactement la même chose. pauseListening ne fait rien et stopListening est bien codé. C’est bon a savoir n’est ce pas ?

      Je vais donc, peux t’être me tourner vers bing speech recognition de Microsoft. Ici ils limitent le nombre de requête à 5000/ mois, cela fait a peux prés 160 requêtes par jour, nettement mieux non ?

      Seulement, c’est franchement pas simple car chrome est très intégré a MRL. Je me tâte encore…

    • #8413
      lecagnois
      Participant

      Hello Dominique
      Je n’ai pas assez de connaissance pour t aider dans ce projet .

      Pour répondre à la question aux requêtes googles , je suis en train de modifier le fichier
      questceque.aim ( il y a des doublons, des traductions fantaisiste ,des mots imprononçable ,et je modifie les définitions)
      je fais 100 lignes par jours et je teste avec le bot pour corriger . Jusqu’à présent je n’ai pas rencontré de blocage avec google.

      l ‘idéale serais d avoir un système léger qui fonctionne sous liunux , mais je pense que c’est encore utopique.

    • #8414
      Dominique
      Participant

      Figure toi que j’avais pensé à un couple SARAH qui gère la reconnaissance vocale de Microsoft avec la kinect et MRL, les 2 pouvant communiquer ensemble via requête http. Mais bon, cela devient une usine à gaz et tu sais bien que je n’aime pas ça :-).

      Pour les requêtes google, tans mieux, cela veux dire qu’ils ont ouvert leurs API. Ce qui me gène avec google c’est qu’il ne prends plus en compte le micro de la kinect.

      Autrement, comme j’utilise la synthèse vocale de Microsoft, pas possible d’utiliser Linux pour moi.

    • #9223
      Dominique
      Participant

      @Anthony:

      Dans le service WebKitSpeechRecognition il y a ceci:

       @Override
        public void onStartSpeaking(String utterance) {
          // at this point we should subscribe to this in the webgui
          // so we can pause listening.
          this.speaking=true;
          stopListening();
        }
      
        @Override
        public void onEndSpeaking(String utterance) {
          // need to subscribe to this in the webgui
          // so we can resume listening.
          this.speaking=false;
          startListening(); 
        }

      Cela fonctionne très bien pour tout les services de parole sauf MicrosoftSpeech. Cela est dû au fait que ce service utilise un programme externe et que MRL n’a pas le retour audio. J’ai donc recompilé MRL en mettant ces lignes en commentaire.

      Serait’il possible de prévoir un boolean qui puisse désactiver ces actions automatiques ?

      Sinon, ce n’est pas grave pour moi… C’est seulement si d’autre personnes utilisent MicrosoftSpeech.

      En fait, je doit être le seul…mais on ne sais jamais.

      PS: juste une petite remarque: les indentations dans le code sont souvent horrible, je pense que c’est dû aux différents éditeurs utilisés. Ils serait intéressant de remplacer les tab par des espaces…

      Ah oui, je n’ai pas oublié de faire le tracking avec le “head side”, c’est juste que j’ai doté mon robot d’une carte mère et que beaucoup de chose on changé… Je te tiens au jus…

    • #9224
      Dominique
      Participant

      @Anthony:

      Dans le service WebKitSpeechRecognition il y a ceci:

       @Override
        public void onStartSpeaking(String utterance) {
          // at this point we should subscribe to this in the webgui
          // so we can pause listening.
          this.speaking=true;
          stopListening();
        }
      
        @Override
        public void onEndSpeaking(String utterance) {
          // need to subscribe to this in the webgui
          // so we can resume listening.
          this.speaking=false;
          startListening(); 
        }

      Cela fonctionne très bien pour tout les services de parole sauf MicrosoftSpeech. Cela est dû au fait que ce service utilise un programme externe (jampal) et que MRL n’a pas le retour audio (événement start et stop). J’ai donc recompilé MRL en mettant ces lignes en commentaire.

      Serait’il possible de prévoir un boolean qui puisse désactiver ces actions automatiques ?

      Sinon, ce n’est pas grave pour moi… C’est seulement si d’autre personnes utilisent MicrosoftSpeech.

      En fait, je doit être le seul…mais on ne sais jamais.

      PS: juste une petite remarque: les indentations dans le code sont souvent horrible, je pense que c’est dû aux différents éditeurs utilisés. Ils serait intéressant de remplacer les tab par des espaces…

      Ah oui, je n’ai pas oublié de faire le tracking avec le “head side”, c’est juste que j’ai doté mon robot d’une carte mère et que beaucoup de chose ont changés… Je te tiens au courant…

    • #9225
      lecagnois
      Participant

      hello @dominique

      J ai testé avec MicrosoftSpeech cela marche bien , la voix est très agréable . il arrive a prononcer tous les mots sans déformation ce qui n’est pas toujours le cas de MarySpeech (avec upmc-pierre-hsmm) .
      MicrosoftSpeech ,effectivement parfois il répète les phrases ?

      -NaturalReaderSpeech au bout d un nombre de requêtes plus de voix

      -Polly TTL je n’est pas encore testé.

      hello @Anthony peut tu voir si tu peut intégrer l’idée de dominique dans ta dernière configuration .
      car cette voix est vraiment très claire.

      Merci à tous pour notre InMOOV Francophone lol

      • This reply was modified 7 years, 4 months ago by lecagnois.
    • #9227
      Dominique
      Participant

      Super, on est 2..

      Moi j’utilise une voix payante mais dans tout Windows, il y a au moins une voix en français et une en anglais gratuite, qui sont de loin meilleur que MaryTTS.

      Du coup, je ne comprends pas bien pourquoi le service n’est pas plus utilisé.

      Bon, chacun son choix…

      • This reply was modified 7 years, 4 months ago by Dominique.
    • #9229
      anthony
      Moderator

      coucou les gars ! je crois que ce n’est pas utilisé en masse à cause du fait que les retours ne sont pas gérés, donc non conformes à l’interface associée speechSyntesis (http://myrobotlab.org/content/programab-and-inmoov). Au pire le compilateur en ligne ne compilera rien car un autotest aura foiré, au mieux cela induit des fonctions interfacées non fonctionnelles comme l’autoListen, le speak/speakBlocking etc… D’ailleurs il n’y a pas moyen en passant jampal dans un thread et en analysant le debut/fin de jampal ? ça serait sympa! J’aimerais bien tester aussi d’autres voix.

      – MicrosoftSpeech est déjà intégré à MRL cependant je vois que le dernier commit n’est pas passé : https://github.com/MyRobotLab/myrobotlab/pull/80
      – Pour désactiver l’interprétation des retours ( si ça suffit à tester ) : ear.setAutoListen(False)
      – Pour un code tout beau tout propre et formalisé un petit xml a intégrer a eclipse : http://myrobotlab.org/content/myrobotlab-coding-style

    • #9231
      Dominique
      Participant

      Bon, je réponds a tes phrases sinon on ne se comprends pas:

      “coucou les gars ! je crois que ce n’est pas utilisé en masse à cause du fait que les retours ne sont pas gérés, donc non conformes à l’interface associée speechSyntesis”

      Regarde mon code, tu verra que les retours sont bien géré:

      `// Start speak event
      invoke(“publishStartSpeaking”, toSpeak);

      // Send command
      executeCommand(“voicetest.bat”);

      // End speak event
      invoke(“publishEndSpeaking”, toSpeak);`

      “(http://myrobotlab.org/content/programab-and-inmoov). Au pire le compilateur en ligne ne compilera rien car un autotest aura foiré, au mieux cela induit des fonctions interfacées non fonctionnelles comme l’autoListen, le speak/speakBlocking etc… ”

      l’autolisten est la fonction qui m’ennuie car il manque les boolean qui permet de le désactivé. ICI:

      `@Override
      public void onStartSpeaking(String utterance) {
      // at this point we should subscribe to this in the webgui
      // so we can pause listening.
      this.speaking=true;
      stopListening();
      }

      @Override
      public void onEndSpeaking(String utterance) {
      // need to subscribe to this in the webgui
      // so we can resume listening.
      this.speaking=false;
      startListening();
      }`

      “D’ailleurs il n’y a pas moyen en passant jampal dans un thread et en analysant le debut/fin de jampal ? ça serait sympa!”

      Si tu regarde bien mon code, c’est ce que je fait:

      `Runtime rt = Runtime.getRuntime();
      Process pr = rt.exec(“voicetest.bat”);`

      RunTime utilise un thread a part. https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html

      “J’aimerais bien tester aussi d’autres voix.”

      Content que tu veuille l’utiliser. Pour cela, on doit trouver ce qui cloche. Je vais envoyer un mail à Greg pour voir pourquoi cela ne vas pas.

      “– MicrosoftSpeech est déjà intégré à MRL cependant je vois que le dernier commit n’est pas passé : https://github.com/MyRobotLab/myrobotlab/pull/80”

      Ca je sais, c’est Steve qui en a fait la demande et Greg l’a intégré.
      Mais sache que chez moi MRL compile sans problème. Seulement je ne lance pas les tests. Donc, comme tu dit, c’est surement le test qui foire. Malheureusement, je n’ai jamais eu de retour…

      “– Pour désactiver l’interprétation des retours ( si ça suffit à tester ) : ear.setAutoListen(False)”

      Ok mais alors, il faut mettre ton boolean la où il faut.

      “– Pour un code tout beau tout propre et formalisé un petit xml a intégrer a eclipse : http://myrobotlab.org/content/myrobotlab-coding-style”

      Je n’utilise pas eclipse mais ce n’est pas pour moi que je disais cela… regarde cette exemple qui n’est pas de moi:

      https://github.com/MyRobotLab/myrobotlab/blob/develop/src/org/myrobotlab/service/WebkitSpeechRecognition.java

      fonction public void pauseListening() par exemple…

      Attention, c’est une petite critique constructive, qui permet une bonne lisibilité du code.

      Pour résumé: Le retour d’événement fonctionne avec speakBlocking, seulement le thread bloque parfois les servo. Pourquoi je n’en sais rien. Le retour d’événement ne fonctionne pas avec speak, la non plus je n’en sais rien.
      Ce que je fais: Je coupe le micro avant le speak, puis activator me donne la fin de parole pour réactiver le micro.
      Je suis d’accord que ce n’est pas la bonne solution pour que se soit universelle.
      Seulement, toute les voix utilisent le service audio pour lire un MP3…Les retours sont donc, début et fin de lecture du MP3. C’est ce que je fait avec Jampal qui est un programme externe à MRL.

      Bon, si tu a une idée, elle est la bienvenue.

    • #9232
      lecagnois
      Participant

      Oups cela devient compliqué …..
      Pas assez doué en programmation java pour vous comprendre.
      je crois que je fais finir comme alain (Grattounet) par tout abandonner

      Quelqu un a-t il testé polly . ? arrive t il a prononcer tous les chiffres par exemple ?

      Aura t on une AI en français fiable ?

      Merci pour tout vos développement.

    • #9235
      anthony
      Moderator

      Tu n’as pas besoin de te casser la tête avec java lecagnois, sauf si tu veux t’y mettre. Ou comprendre comment fonctionne la magie.
      Une “interface” va aider à relier plusieurs choses ensembles grâce à un modèle. par exemple la reconnaissance vocale à la synthèse vocale.
      Exemple pour la synthèse vocale. On a plusieurs fournisseurs ( marryTTS, polly, voicerss etc… ) . Ils offrent des voix différentes mais utilisent tous la même logique ( speak, setvoice, setlanguage … ). J’ai testé polly il fonctionne bien pour info.
      J’ajoute MicrosoftSpeech sur la todolist des choses à revoir, à côté des autres bugs en cours.
      https://github.com/MyRobotLab/myrobotlab/issues/98
      Il faudrait revoir le dernier commit (qui a été retoqué) à propos de MicrosoftSpeech. Je ne voudrais pas écraser des travaux en cours. Sauf si plus personne ne travaille dessus.
      Pour les problèmes de fiabilité une chose en particulier prévue pour la prochaine release, qui ne fonctionne pas bien ? N’hésitez pas à compléter les buglist du projet manticore au cas où.

    • #9236
      Dominique
      Participant

      @Anthony: Je pense avoir trouvé la solution pour MicrosoftSpeech.
      Je dois encore tester et si cela marche, alors j’envoie un mail à Grog pour qu’il fasse la mise à jour.
      Peut être toi aussi tu peux le faire, dans ce cas j’ai besoin de ton mail.

    • #9237
      anthony
      Moderator

      Cool ! tu peux soumettre directement
      https://github.com/MyRobotLab/myrobotlab/blob/develop/src/org/myrobotlab/service/MicrosoftSpeech.java
      ou balancer le code dans le sujet ouvert pour l’occasion
      https://github.com/MyRobotLab/myrobotlab/issues/98
      L’idée ça serait d’utiliser le service de cache aussi pour ne pas à avoir à régénérer le mp3 pour une même phrase.
      je t’envoi mon mail en mp au cas ou

    • #9249
      lecagnois
      Participant

      Merci les amis
      avoir une voix claire et gratuite cela serait le pied .
      Ce service sera t – il inclus dans MRL ?
      J’aime bien quand il y a juste un changer un paramètre dans les fichiers de config , c’est plus simple a utiliser … lol

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