我從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