【发布时间】:2016-06-10 03:52:01
【问题描述】:
我想为 Android 应用实现基于 PocketSphinx 的关键字定位。
PocketSphinx 对我来说是新的。我从他们的仓库中的 PocketsphinxAndroidDemo 开始。 然后我在 Eclipse 中导入了项目,并在我的手机上构建并部署了演示应用程序。该演示识别命令存款和取款和数字罚款。我还没有安装任何其他库或工具。
现在我想识别我自己的关键字并按照 CMUSphinx 教程进行操作。因此,我使用“Sphinx 知识库生成器”创建了自己的 DIC 和 LM 文件,并已包含在项目的 assets 子文件夹中。我使用的语料库:
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。当应用程序启动时,我看到资源已正确加载。但后来我得到了同样的错误。
谁能告诉我问题是什么? 我必须执行哪些步骤才能让我的 Spotting 运行起来?
【问题讨论】:
-
syncAsset可能存在问题,例如如果文件已经存在,即使文件不同,它也不会覆盖它。我们希望尽快修复所有这些问题。同时我建议您手动复制资源或编写自己的实现。 -
您指的是哪些资源以及针对哪个目标?我应该自己实现什么?
-
我指的是位于
assets/下的所有文件。目前,它们使用syncAsset()在目标设备上解包。我建议您现在手动复制它们。
标签: android eclipse speech-recognition cmusphinx keyword-spotting