#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.