PocketSphinx在Android中拥有关键字定位功能

时间:2013-11-21 12:04:47

标签: android eclipse speech-recognition cmusphinx keyword-spotting

我想为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。当应用程序启动时,我看到正确加载了资源。但后来我得到了同样的错误。

请有人请告诉我,问题是什么? 我需要采取哪些措施让我的定位运行?

1 个答案:

答案 0 :(得分:1)

尝试将字典文件中的条目更改为ALL CAPS。尝试将此用于您的字典文件:

OPEN BROWSER
NEW E-MAIL
FORWARD
BACKWARD
NEXT WINDOW
LAST WINDOW
OPEN MUSIC PLAYER

这对我有用。