http://ucla.jamesyxu.com/?p=118から pocketphinix のデモ例を実行しました。しかし、単語の認識精度が非常に低いことがわかりました。ポケットフィニクス 8.0 から音響モデルをコピーしました ...\pocketsphinx\ model\hmm と ..\lm フォルダーを電話の SD カードにコピーします。文章ではなく、限られた少数の単語を認識します。私の質問は次のとおりです
1) どうすれば精度を向上させることができますか?
2) 音響モデルと辞書 (hmm と lm フォルダー内) を変更する必要がありますか? はいの場合、モデルと辞書を変更するにはどうすればよいですか? モデルと辞書を追加するために従う必要がある他の手順はありますか? また、次のリンクから辞書を変更します(US English HUB4 Language Model-辞書ファイルをlmフォルダーにコピーするだけで、hmmフォルダーでは変更されません)
http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/
3) 録音した音声の代わりに音声ファイルを入力するにはどうすればよいですか?
また、音声ファイルを入力として変換しようとしました。次のように音声ファイルを読み込んでいます (ここでは、sphinix4 lib transcribe demo file "10001-90210-01803.wav" で使用される .wav ファイルは、正確さのために数字を発音しますが、1 つの単語を認識できず、それを正しくないテキストに変換します)。
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;
}