我从http://ucla.jamesyxu.com/?p=118.But运行pocketsphinix演示示例,我发现识别单词的准确性非常差。我从pocketsphinix8.0复制声学模型... \ pocketsphinx \ model \ hmm和.. \ lm文件夹到手机的SD卡。它识别有限的几个字而不是句子。 我的问题如下使用口袋Sphinix语音识别的准确性很差
1)如何提高准确度?
2)是否需要更改声学模型和字典(在hmm和lm文件夹中)如果是,我如何更改模型和字典。是否有任何其他过程需要添加模型和字典。 我也改变字典从以下链接(美国英语语言的huB4只是模型 - 在复制文件夹LM字典文件夹HMM不改变)
http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/
3)我怎么可以给音频文件作为输入,而不是记录的声音?
此外,我试图将音频文件转换为输入。我正在读取音频文件如下(这里,在sphinix4 lib中使用.wav文件转录演示文件“10001-90210-01803.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;
}
请张贴的例子为声音文件抄本(手动完成)和你的输出从lib中获取... – 2013-04-23 06:56:06
@Praful只需改变AudioTask类的run方法并调用readAudioFile()并在readAudioFile()读取完所有文件后加入队列this.q.add(music)并作为输出,大多会得到不同的单词。 – divim 2013-04-23 07:20:33