【发布时间】:2016-02-14 05:35:38
【问题描述】:
我想在服务中使用 pocketsphinx 连续收听 hello 这个词
我得到了错误。这是full stack trace。这是其中的一小部分。
Unable to create service curlybrace.ruchir.myApp.MyService: java.lang.RuntimeException: new_Decoder returned -1
是这样造成的:
setupRecognizer(assetDir); //SETUP
还有这个:
.getRecognizer();
在我的onCreate:
Log.v(TAG, "Voice recognition activated!");
//Register voice recog listener :)
Assets assets = null;
try {
assets = new Assets(MyService.this);
File assetDir = assets.syncAssets();
setupRecognizer(assetDir); //SETUP
Log.v(TAG, "Set up listener");
} catch (IOException e) {
e.printStackTrace();
}
这是我的setupRecognizer 方法:
private void setupRecognizer(File assetDir) throws IOException {
recognizer = defaultSetup()
.setAcousticModel(new File(assetDir, "hmm/en-us-semi"))
.setDictionary(new File(assetDir, "lm/cmu07a.dic"))
.setKeywordThreshold(1e-5f)
.getRecognizer();
recognizer.addListener(this);
// recognizer.addKeywordSearch("Hello", assetDir); //I don't know what this does...
recognizer.startListening("Hello"); //Start listeneing
}
这是其中一种已实现的方法:
@Override
public void onPartialResult(Hypothesis hypothesis) {
String text = hypothesis.getHypstr();
if (text.equals("Hello")) {
// do something
Log.v(TAG, "SPEECH RECOGNIZED HELLO!");
}
}
如有任何反馈,我将不胜感激。正面的,负面的,甚至是评论。在这一点上,我很绝望,尝试了 2 天!
【问题讨论】:
-
只是一个想法:您是否在清单中注册了麦克风权限?
-
@luxer 不,我没有
-
您的应用需要获得收听麦克风的权限,即使您使用库也是如此。你试过添加它吗?
-
@luxer 我应该添加这些权限吗?
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> -
@luxer 那我为什么得到
service can't start,我不应该得到security exception吗?
标签: java android speech-recognition voice-recognition cmusphinx