package net.fortytwo.ripple.audio;
import edu.cmu.sphinx.frontend.util.Microphone;
import edu.cmu.sphinx.recognizer.Recognizer;
import edu.cmu.sphinx.result.Result;
import edu.cmu.sphinx.util.props.ConfigurationManager;
import edu.cmu.sphinx.util.props.PropertyException;
import java.io.File;
import java.io.IOException;
import java.net.URL;
/**
* A simple HelloDigits demo showing a simple speech application
* built using Sphinx-4. This application uses the Sphinx-4 endpointer,
* which automatically segments incoming audio into utterances and silences.
*
* @author Joshua Shinavier (http://fortytwo.net)
*/
public class HelloDigits {
/**
* Main method for running the HelloDigits demo.
*/
public static void main(String[] args) {
try {
URL url;
if (args.length > 0) {
url = new File(args[0]).toURI().toURL();
} else {
url = HelloDigits.class.getResource("hellodigits.config.xml");
}
ConfigurationManager cm = new ConfigurationManager(url);
Recognizer recognizer = (Recognizer) cm.lookup("recognizer");
Microphone microphone = (Microphone) cm.lookup("microphone");
/* allocate the resource necessary for the recognizer */
recognizer.allocate();
/* the microphone will keep recording until the program exits */
if (microphone.startRecording()) {
System.out.println
("Say any digit(s): e.g. \"two oh oh four\", " +
"\"three six five\".");
while (true) {
System.out.println
("Start speaking. Press Ctrl-C to quit.\n");
/*
* This method will return when the end of speech
* is reached. Note that the endpointer will determine
* the end of speech.
*/
Result result = recognizer.recognize();
if (result != null) {
String resultText = result.getBestResultNoFiller();
System.out.println("You said: " + resultText + "\n");
} else {
System.out.println("I can't hear what you said.\n");
}
}
} else {
System.out.println("Cannot start microphone.");
recognizer.deallocate();
System.exit(1);
}
} catch (IOException e) {
System.err.println("Problem when loading HelloDigits: " + e);
e.printStackTrace();
} catch (PropertyException e) {
System.err.println("Problem configuring HelloDigits: " + e);
e.printStackTrace();
}
// catch (InstantiationException e) {
// System.err.println("Problem creating HelloDigits: " + e);
// e.printStackTrace();
// }
}
}