0

onPartialResult 나는 hypotesis이 내가 관심있어하는 키워드 중 하나인지를보기 위해 사용하고 있습니다. 나는 사용자가 무언가를 말하는 경우를 처리하고자하고 키워드로 인식되지 않습니다키워드 spotting : hypoteis는 당신이 찾고있는 키워드 중 하나 일 때까지 null입니다.

@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 방법의 hypotesis는 항상 null : 예상 되나요? 여기에 null hypoteis가 없다고 기대하고 있습니다 ...
onPartialResult 메서드가 pocketsphinx에 의해 자동으로 호출됨을 고려하면 (공중에 소리가 들리지 않을 때도) 나는 운전 조건으로 null 가설을 사용할 수 없습니다.
또한 각 인식 후에 음성 인식이 이루어 지므로 인식 청취자를 다시 시작해야합니다. 인식기는 음성 텍스트가 진행되는 동안 청취해서는 안됩니다 ...
onEndOfSpeech으로 해결책을 시도했지만 아무 것도 좋지 않았습니다. 지금까지 ... 아이디어가 있으십니까?

답변

0

이 경우 onPartialResult 메서드의 hypotesis는 항상 null입니다. 예상 되나요?

더욱이 모든 인식 후 음성을 텍스트 그래서 인식 리스너를 다시 시작 신중하게 처리 할 수있다있다 : 연설에 텍스트가 진행되는 동안 인식기가 인식되지 않아야은

맞음

+0

때때로 @ (드물게) 귀무 가설이 생성되지 않고 키워드와 일치하지 않는 경우가 있습니다. 이것은 연설이 키워드와 매우 유사 할 때 발생합니다 ... 어쨌든 ... 사용자가 무언가를 말하고 키워드로 인식되지 않는 경우 어떻게 처리합니까? onEndOfSpeech가 솔루션입니까? 적어도 소음과 스피치를 구별 할 수있는 방법이 있습니까? – salvolds

+1

잡음과 음성을 구별하는 해결책은 아직 없지만 직접 구현해야합니다. –