Ses tanıma amaçlı bir proje yapacağım. Başlangıç olarak da Sun sitesindeki
linkini verdiğim HelloWorld örneğini kullanmaya çalışıyorum. http://java.sun.com/products/jav ... cognition.html#7408
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.speech.*;
import javax.speech.recognition.*;
import java.io.FileReader;
import java.util.Locale;
public class Main extends ResultAdapter {
static Recognizer rec;
// Receives RESULT_ACCEPTED event: print it, clean up, exit
@Override
public void resultAccepted(ResultEvent e) {
Result r = (Result)(e.getSource());
ResultToken tokens[] = r.getBestTokens();
for (int i = 0; i < tokens.length; i++)
System.out.print(tokens.getSpokenText() + " ");
System.out.println();
try {
// Deallocate the recognizer and exit
rec.deallocate();
} catch (EngineException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (EngineStateError ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
System.exit(0);
}
public static void main(String args[]) {
try {
// Create a recognizer that supports English.
EngineModeDesc mode =new EngineModeDesc(Locale.ENGLISH);
//RecognizerModeDesc mode = new RecognizerModeDesc(Locale.UK, Boolean.TRUE);
rec = Central.createRecognizer(mode);
//rec = Central.createRecognizer(new EngineModeDesc(null, null,java.util.Locale.ENGLISH, null));
//rec = Central.createRecognizer();
EngineList list = Central.availableRecognizers(mode);
if(list.isEmpty())
System.out.println("Recognizer yok");
if(mode==null)
System.out.println("MODE IS NULL");
else
System.out.println("MODE IS NOT NULL");
if (rec == null)
System.out.println("REC IS NULL");
else
System.out.println(rec);
//EngineList list = Central.availableRecognizers(rec);
// Start up the recognizer
rec.allocate();
System.out.println("HATA");
// Load the grammar from a file, and enable it
//FileReader reader = new FileReader(args[0]);
String gramer="C:\\Users\\zackeriya\\Documents\\NetBeansProjects\\Hello_World_1\\dil.gram";
FileReader reader = new FileReader(gramer);
RuleGrammar gram = rec.loadJSGF(reader);
gram.setEnabled(true);
// Add the listener to get results
rec.addResultListener(new Main());
// Commit the grammar
rec.commitChanges();
// Request focus and start listening
rec.requestFocus();
rec.resume();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Kodu derlediğim zaman şöyle bir hata alıyorum "java.lang.NullPointerException at Main.main"
--->56. satır --> rec.allocate();
Sun' ın kendi sitesinde şöyle bir bilgi var :" If no suitable engine is available, the methods return null. " Bu metod da aşağıda verilen metod:
rec = Central.createRecognizer(mode);
... Velhasılı kelam bilgisayarımda uygun bir Engine yok, bu Engine dediğimiz fiziksel bir şey mi yoksa, yazılımsal mı ? Ve asıl konu bu Engine denen zamazingoyu bilgisayarıma nasıl ekleyebilirim?