Bonjours,

je suis en train de tester un tutoriel sur la reconnaissance vocale basé sur l'API Cloudgarden Java Speech .

http://darylrobotproject.wordpress.c...ese-vocale-ok/

code source
http://pastebin.com/eCFYYQb5

Toutes les API on été incluse correctement dans le projet. Seulement j'ai une erreur : NullPointerException sur la ligne : recognizer.allocate(); apparement l'objet ne serait pas initialisé.
Intégralité du code source.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
 
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);
		}
	}
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
 // On initialise le moteur de reco
 recognizer = Central.createRecognizer(new EngineModeDesc(Locale.ROOT));
                        recognizer.allocate();
Message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Exception: java.lang.NullPointerException
java.lang.NullPointerException
	at Recon.main(Recon.java:98)
J'ai trouve quelque problème similaire sur le forum

http://www.developpez.net/forums/d86...uperer-string/

http://www.developpez.net/forums/d12...e-vocale-java/

http://www.developpez.net/forums/d11...ssance-vocale/

Cela n'a malheureusement pas corrigé mon problème.
Si vous avez une idée je suis preneur.

Je vous remercie d'avance.