我想为Android应用程序实现基于PocketSphinx的关键字查找。
PocketSphinx对我来说是新的。我从他们的仓库开始使用PocketsphinxAndroidDemo。
然后,我将项目导入Eclipse,并在手机上构建并部署了演示应用程序。演示程序识别出命令存款和取款以及罚款号码。我尚未安装任何其他库或工具。
现在,我想识别自己的关键字并取消CMUSphinx教程。因此,我使用“ Sphinx知识库生成器”创建了自己的DIC和LM文件,并将其包含在项目的资产子文件夹中。我使用的语料库:
open browser
new e-mail
forward
backward
next window
last window
open music player
我已对SpeechRecognizer进行了以下修改:
config.setString("-jsgf", joinPath(dataDir, "dialog.gram")); // unmodified
config.setString("-dict", joinPath(dataDir, "lm/2914.dic"));
config.setString("-lm", joinPath(dataDir, "lm/2914.lm"));
config.setString("-hmm", joinPath(dataDir, "hmm/hub4wsj_sc_8k")); // unmodified
然后,我再次启动了该应用程序,并收到以下错误:
11-21 12:48:18.758: E/cmusphinx(15521): "fsg_search.c", line 334: The word 'withdraw' is missing in the dictionary
和
11-21 12:48:26.375: A/libc(15521): Fatal signal 11 (SIGSEGV) at 0x0000001c (code=1), thread 15557 (SpeechRecognize)
我知道“提现”是前词典的一个词。
我必须在语法文件中进行哪些修改?
我还阅读了本教程http://www.aiaioo.com/cms/index.php?id=28,并从那里使用了声学模型和语音词典。我再次修改了SpeechRecognizer。应用启动时,我看到资源已正确加载。但是后来我得到了同样的错误。
有人可以告诉我问题是什么吗?
我必须执行什么步骤才能使发现运行?
最佳答案
尝试将词典文件中的条目更改为ALL CAPS。尝试将其用于字典文件:
OPEN BROWSER
NEW E-MAIL
FORWARD
BACKWARD
NEXT WINDOW
LAST WINDOW
OPEN MUSIC PLAYER
这对我有用。