我已经从http://ucla.jamesyxu.com/?p=118运行了 pocketsphinix 演示示例。但是,我发现单词识别的准确性很差。我从 pocketsphinix8.0 ...\pocketsphinx\ 复制了声学模型model\hmm 和 ..\lm 文件夹到手机的 sdcard。它识别有限的几个单词而不是句子。我的问题如下
1)如何提高准确性?
2)如果是,是否需要更改声学模型和字典(在 hmm 和 lm 文件夹中),而不是如何更改模型和字典。是否需要遵循任何其他程序来添加模型和字典。我还从以下链接更改字典(美国英语 HUB4 语言模型 - 只需复制 lm 文件夹中的字典文件不会在 hmm 文件夹中更改)
http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/
3)我怎样才能将音频文件作为输入而不是录制的语音?
另外,我尝试将音频文件转换为输入。我正在阅读如下音频文件(此处,sphinix4 lib 转录演示文件“10001-90210-01803.wav”中使用的 .wav 文件为准确发音数字但无法识别单个单词并将其转换为不正确的文本)。
int readAudioFile(){
this.done=true;
AssetManager mngr = context.getAssets();
InputStream io = null;
int current = 0;
try {
io= mngr.open("10001-90210-01803.wav");
//Create a DataInputStream to read the audio data from the saved file
DataInputStream dis = new DataInputStream(io);
int noOfByteToRead=io.available();
int noOfShortToRead=noOfByteToRead/2;
short[] music = new short[noOfShortToRead];
int i = 0; // Read the file into the "music" array
try {
while (dis.available() > 0)
{
music[i] = dis.readShort();
i++;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i("123",""+Arrays.toString(music));
this.q.add(music);
try {
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}
return current;
}