我已经从Github下载了 pocketsphinx-android-demo并为我自己的目的做了一些修改。
我my-en-us.dict
为我的应用程序特定单词创建了一个新的(字典)文件,并在单词下方添加
hey HH EY
smarty S M AA R T IY
login L AA G IH N
然后,我login.gram
用下面的代码创建了一个(语法)文件
#JSGF V1.0;
grammar login;
public <item> = login;
然后,我像这样在我的 Activity 中初始化了识别器
public static final String KWS_SEARCH = "wakeup";
public static final String LOGIN_SEARCH = "login";
/* Keyword we are looking for to activate menu */
public static final String KEYPHRASE = "hey smarty";
private void setupRecognizer(File assetsDir) throws IOException {
recognizer = SpeechRecognizerSetup.defaultSetup()
.setAcousticModel(new File(assetsDir, "en-us-ptm"))
.setDictionary(new File(assetsDir, "my-en-us.dict"))
.getRecognizer();
recognizer.addListener(this);
recognizer.addKeyphraseSearch(KWS_SEARCH, KEYPHRASE);
File loginGrammar = new File(assetsDir, "login.gram");
recognizer.addGrammarSearch(LOGIN_SEARCH, loginGrammar);
}
其余代码与 pocketsphinx-android-demo 相同,用于启动识别器、听单词等。
启动 android 应用程序后,我说“hey smarty”以激活“login”字样的识别。当我说“login”时,它会返回“login”,但当我说“hello”、“settings”等任何其他词时,它只会返回“login”。
我不知道为什么会这样。我做错了什么,如果是,那么只添加特定单词以进行准确识别的正确方法是什么?
另一个问题是,如何检查“部分结果”或“结果”的准确率?