このスレッドの作成者が行った/解決したことを正確に実行しようとしています:
彼は、文法ファイルにない単語の検出を避けるために、文法ファイルは次のようにする必要があると言います。
up /1e-1/
down /1e-1/
left /1e-1/
right /1e-1/
forwards /1e-1/
backwards /1e-1/
....しかし、このままではうまくいきません。私はこのようにすることができます:
#JSGF V1.0;
grammar digits;
public <digits> = /1e-1/ left |
/1e-1/ right;
しかし、これは何も変更しません。/1.0/ も何も変更しません。左/右として誤った単語を検出し続けます。
各単語 (著者など) の右側にしきい値を設定すると、アプリがクラッシュします。
誰かがこれについて私を助けることができますか?
アップデート:
関数 setupRecognizer(File assetsDir) で addKeywordSearch を使用して解決しました。私の場合は、PocketSphinx-Demo addGrammarSearch のようでした。完全を期すために(リンクされた質問の作成者のsetupRecognizer関数と同じように):
private void setupRecognizer(File assetsDir)
{
File modelsDir = new File(assetsDir, "models");
recognizer = defaultSetup().setAcousticModel(new File(modelsDir, "hmm/en-us-semi"))
.setDictionary(new File(modelsDir, "dict/cmu07a.dic"))
.setRawLogDir(assetsDir).setKeywordThreshold(1e-20f)
.getRecognizer();
recognizer.addListener(this);
File digitsGrammar = new File(modelsDir, "grammar/digits.gram");
recognizer.addKeywordSearch(DIGITS_SEARCH, digitsGrammar);
}
文法ファイルが(著者が投稿したように)次のように見える場合、それは機能します:
up /1e-1/
down /1e-1/
left /1e-1/
right /1e-1/
forwards /1e-1/
backwards /1e-1/