rhubarb-lip-sync/rhubarb/lib/pocketsphinx-rev13216/swig/java/test/DecoderTest.java

58 lines
1.7 KiB
Java

package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.*;
import edu.cmu.pocketsphinx.Decoder;
import edu.cmu.pocketsphinx.Config;
import edu.cmu.pocketsphinx.Segment;
import edu.cmu.pocketsphinx.Hypothesis;
import edu.cmu.pocketsphinx.SegmentIterator;
public class DecoderTest {
static {
System.loadLibrary("pocketsphinx_jni");
}
public static void main(String args[]) throws IOException {
Config c = Decoder.defaultConfig();
c.setString("-hmm", "../../model/en-us/en-us");
c.setString("-lm", "../../model/en-us/en-us.lm.bin");
c.setString("-dict", "../../model/en-us/cmudict-en-us.dict");
Decoder d = new Decoder(c);
FileInputStream ais = new FileInputStream(new File("../../test/data/goforward.raw"));
d.startUtt();
d.setRawdataSize(300000);
byte[] b = new byte[4096];
int nbytes;
while ((nbytes = ais.read(b)) >= 0) {
ByteBuffer bb = ByteBuffer.wrap(b, 0, nbytes);
bb.order(ByteOrder.LITTLE_ENDIAN);
short[] s = new short[nbytes/2];
bb.asShortBuffer().get(s);
d.processRaw(s, nbytes/2, false, false);
}
d.endUtt();
System.out.println(d.hyp().getHypstr());
short[] data = d.getRawdata();
System.out.println("Data size: " + data.length);
DataOutputStream dos = new DataOutputStream(new FileOutputStream(new File("/tmp/test.raw")));
for (int i = 0; i < data.length; i++) {
dos.writeShort(data[i]);
}
dos.close();
for (Segment seg : d.seg()) {
System.out.println(seg.getWord());
}
}
}