音声コマンドを認識し、認識するカスタム辞書と単語を作成するために、Android アプリケーションに Pocketphinx を実装しました。これが私の実装です:
private void setupRecognizer(File assetsDir) throws IOException {
recognizer = defaultSetup()
.setAcousticModel(new File(assetsDir, "en-us-ptm"))
.setDictionary(new File(assetsDir, "cmudict-en-us.dict"))
//.setRawLogDir(assetsDir)
.setKeywordThreshold(1e-10f)
.setBoolean("-allphone_ci", true)
.getRecognizer();
recognizer.addListener(this);
// Create keyword-activation search.
// recognizer.addKeyphraseSearch(KWS_SEARCH, KEYPHRASE);
File menuGrammar = new File(assetsDir, "target-words.gram");
recognizer.addKeywordSearch(KWS_SEARCH, menuGrammar);
}
単語リストの場合:
yalp /1-0/
yaalp /1-0/
yeelp /1e-1/
yelp /1e-1/
と文法:
yalp Y AE L P
yaalp Y AA L P
yealp Y EH L P
yeelp Y IY L P
yelp Y EH L P
しかし、私は間違った結果を得ています。つまり、私が話していない、または音を出していない場合 (拍手でも)、Yelp Yealp などの onPartialResult を取得しています。setKeywordThreshold() // 1e-10f、1e-20f、1e-30f などを単語リストと同じように調整して、1-0/1e-1 などの異なる範囲を追加しようとしましたが、これを正しくするために何も機能していません。なぜこれが間違った結果を生み出しているのか、誰かが私に提案できますか..