【问题标题】:Pocketsphinx: App doesnt startPocketsphinx:应用程序无法启动
【发布时间】:2016-05-02 16:23:39
【问题描述】:

我遇到了 PocketSphinx 的问题,每当我执行该代码时,应用程序都会自动关闭。因为我已经试图弄清楚为什么它不能工作几个小时,也许有人可以帮助我? :) 到目前为止,代码看起来像这样,

主要:

public class MainActivity extends Activity implements RecognitionListener {

    public SpeechRecognizer recognizer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try
        {
            Assets assets = new Assets(MainActivity.this);
            File assetDir = assets.syncAssets();
            setupRecognizer(assetDir);
        }
        catch (IOException e)
        {
        }

    }

设置识别器:

private void setupRecognizer(File assetsDir)
    {

        try {
            recognizer = defaultSetup()
                    .setAcousticModel(new File(assetsDir, "en-us-ptm"))
                    .setDictionary(new File(assetsDir, "cmudict-en-us.dict"))
                    .setRawLogDir(assetsDir).setKeywordThreshold(1e-20f)
                    .setBoolean("-allphone_ci", true)
                    .getRecognizer();
            recognizer.addListener(this);
            recognizer.addKeyphraseSearch("keywordsearch", "oh mighty Computer");
            recognizer.startListening("keywordsearch");

        } catch (IOException e) {
        }

onPartialResult:

public void onPartialResult(Hypothesis hyp) {

    if (hyp == null) {

    }
    TextView t = (TextView) findViewById(R.id.textviewcontrol);
    t.setText("found");
    recognizer.cancel();

}

也许它有帮助:到目前为止,当我将这些行注释掉时,应用程序启动(=>除了显示一个文本视图之外什么都不做):

            recognizer.addKeyphraseSearch("keywordsearch", "oh mighty Computer");
            recognizer.startListening("keywordsearch");

当我只评论其中一个时,它不起作用。

所以可能有错误?我尝试像在 android 的教程代码中一样导入所有内容,但我也可能在那里犯了错误。

谢谢你,

詹尼斯

【问题讨论】:

  • 永远不要忽略异常。试试e.printStackTrace()
  • 计算机必须小写。 “哦,强大的计算机”
  • 非常感谢你们,答案是小写:)

标签: android speech-recognition pocketsphinx-android


【解决方案1】:

删除“recognizer.cancel();” onPartialResult 方法在您的应用程序关闭时使用它。

public void onDestroy() {
        super.onDestroy();
        recognizer.cancel();
        recognizer.shutdown();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2018-11-30
    • 2017-03-09
    • 2015-04-01
    相关资源
    最近更新 更多