58 lines
1.7 KiB
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());
|
||
|
}
|
||
|
}
|
||
|
}
|