Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.speech.*;
- import t2s.son.LecteurTexte;
- import javax.speech.recognition.*;
- import javax.speech.synthesis.Synthesizer;
- import javax.speech.synthesis.Voice;
- import java.io.FileReader;
- import java.util.Locale;
- public class Recon extends ResultAdapter {
- static Recognizer recognizer = null;
- static Voice voice = null;
- static Synthesizer synth = null;
- // Permet de jouer une string en synthèse vocale
- public static void lectureVocale(String reponse) {
- LecteurTexte lt = new LecteurTexte(reponse);
- lt.playAll();
- }
- // Call à la détection d'un nouvel ordre
- public void resultCreated(ResultEvent e) {
- System.out.println("Result Created...");
- }
- // Call à la detection d'un nouveau mot ou syllabe?
- public void resultUpdated(ResultEvent e) {
- Result r = (Result)(e.getSource());
- System.out.println("Result Updated... "+r);
- }
- // Call si rien n'est trouvé (bruit ambiant...)
- @Override
- public void resultRejected(ResultEvent e) {
- System.out.println("Result Rejected... ");
- }
- // Call si match avec un élément de la grammaire
- @Override
- public void resultAccepted(ResultEvent re) {
- try {
- Result res = (Result) (re.getSource());
- // On récupère le meilleur token
- ResultToken tokens[] = res.getBestTokens();
- String phrase = "";
- String gst = "";
- for (int i = 0; i < tokens.length; i++) {
- gst = tokens[i].getSpokenText();
- phrase += gst + " ";
- System.out.print(gst + " ");
- }
- System.out.println();
- phrase = phrase.trim();
- // Si égale à STOP on stop la recon
- if (gst.equals("STOP")) {
- recognizer.deallocate();
- System.out.println(Constante.RECON_STOP);
- lectureVocale(Constante.RECON_STOP);
- System.exit(0);
- } else {
- // On met la recon en pause pour que la réponse ne face pas d'interférence
- recognizer.pause();
- // On cherche une réponse
- String reponse = Constante.retournerReponse(phrase);
- // Si réponse alors on joue le son OK et la réponse avec la synthèse vocale
- if (!reponse.equals("")) {
- Sound.jouerSon(Constante.PATH_SON_OK);
- lectureVocale(reponse);
- } else {
- // Sinon on joue le son KO
- Sound.jouerSon(Constante.PATH_SON_KO);
- }
- recognizer.resume();
- }
- } catch (Exception ex) {
- System.out.println("Erreur: " + ex);
- }
- }
- public static void main(String args[]) {
- try {
- // On initialise le moteur de reco
- recognizer = Central.createRecognizer(new EngineModeDesc(Locale.ROOT));
- recognizer.allocate();
- // On lui indique le fichier de grammaire
- FileReader grammar = new FileReader(Constante.PATH_GRAMM);
- RuleGrammar rg = recognizer.loadJSGF(grammar);
- rg.setEnabled(true);
- // On lui indique que le mode dictation est activé en plus de la grammaire
- DictationGrammar dictation;
- dictation = recognizer.getDictationGrammar("dictation");
- dictation.setEnabled(true);
- SpeakerManager speakerManager = recognizer.getSpeakerManager();
- // On applique le profil de reco Windows
- SpeakerProfile profile = new SpeakerProfile();
- SpeakerProfile[] profs = speakerManager.listKnownSpeakers();
- for(int i=0;i<profs.length; i++) {
- System.out.println("Found Profile "+i+" = "+profs[i].getName());
- profile = profs[i];
- }
- speakerManager.setCurrentSpeaker(profile);
- System.out.println("Current Profile set to "+speakerManager.getCurrentSpeaker().getName());
- // On ajoute un listener
- recognizer.addResultListener(new Recon());
- lectureVocale(Constante.RECON_ACTIVE);
- System.out.println(Constante.RECON_ACTIVE);
- recognizer.commitChanges();
- recognizer.requestFocus();
- recognizer.resume();
- } catch (Exception e) {
- System.out.println("Exception: " + e.toString());
- e.printStackTrace();
- System.exit(0);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement