我从http://ucla.jamesyxu.com/?p=118.But运行了袖珍代表演示示例,我发现单词识别的准确性很差。我从pocketsphinix8.0复制声学模型... \ pocketsphinx \ model \ hmm和.. \ lm文件夹到手机的SD卡。它识别有限的几个单词而不是句子。 我的问题是关注
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;
}
答案 0 :(得分:1)
1)。差劲你得到什么样的准确度?首先是你看到的单词错误百分比,其次,你能给我们一些你说的单词和给出的输出吗?正如Praful所说,声音文件记录非常有用。
此外,您是否尝试过运行默认应用程序并查看是否与其说话会产生类似的错误结果?
2)。您可以按照以下方式构建自己的字典:http://ucla.jamesyxu.com/?p=121
我也有一些使用该库的注释(我们使用它进行了几项研究,每项约20个科目):
我收到了通知,因为Google提醒我您的链接与我的域名相匹配