关键字定位:hypotesis为null,直到它正是您要查找的关键字之一

时间:2017-05-01 22:31:46

标签: android speech-recognition text-to-speech pocketsphinx pocketsphinx-android

我正在使用onPartialResult方法来查看hypotesis是否是我感兴趣的关键字之一,并且效果很好。

这是我的代码:

@Override
public void onPartialResult(Hypothesis hypothesis) {
    Log.d(TAG, "onPartialResult");

    if (hypothesis == null) {
        return;
    }

    String text = hypothesis.getHypstr();

    String wordWithProb = "";
    String mostProbableWord = "";
    int probability = -10000;

    if (text.contains("|")) {
        for (Segment seg : recognizer.getDecoder().seg()) {
            wordWithProb += "|" + seg.getWord() + " " + seg.getProb() + "|";
            if (seg.getProb() > probability)
                mostProbableWord = seg.getWord().trim();
        }
    }
    else
        mostProbableWord = text.trim();

    Log.i(TAG, "onPartialResults: " + mostProbableWord);

    String recognizedCommand = "Please repeat";
    if (mostProbableWord.equals("one")) {
       //do something...
    } else if (mostProbableWord.equals("two")) {
       //do something...
    } else if (mostProbableWord.equals("three")) {
       //do something...
    } 

    //text to speech
    speak(recognizedCommand);

    startListening(KWS_SEARCH);
}

现在我想处理用户说出某些内容并且无法识别为关键字的情况;在这种情况下,onPartialResult方法中的小说始终是null:这是预期的吗?我在这里期待一个非空的小说...
考虑到pocketphinx连续自动调用onPartialResult方法(当空中没有任何声音时)我不能使用null假设作为我的驾驶条件。
此外,每次识别后都会有一个文本到语音,因此必须小心处理识别监听器的重启:识别器在文本到语音正在进行时一定不能正在监听...
我用onEndOfSpeech尝试了一些解决方案但直到现在都没有好... 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

在这种情况下,onPartialResult方法中的hypotesis始终为null:这是预期的吗?

  

此外,每次识别后都会有一个文本到语音,所以必须小心处理识别监听器的重启:识别器在文本到语音正在进行时一定不能正在监听

正确