0

Ich benutze onPartialResult Methode, um zu sehen, wenn die hypotesis ist eines der Schlüsselwort mich interessiert und es funktioniert gut.Keywords spotting: Hypotesis ist null, bis es genau eines der Schlüsselwörter ist, die Sie suchen

Hier ist mein Code:

@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); 
} 

Nun möchte Ich mag den Fall behandeln, in denen ein Benutzer etwas sagen und es als Schlüsselwort nicht erkannt wird; In diesem Fall ist die Hypotesis in der onPartialResult Methode immer null: wird das erwartet? Ich habe hier eine Hypotese von nicht null erwartet ...
In Anbetracht der onPartialResult Methode wird automatisch von pocketsphinx ständig aufgerufen (auch wenn es keinen Ton in der Luft gibt) kann ich nicht die null Hypothese als meine Fahrbedingung verwenden.
Darüber hinaus gibt es eine Text-to-Speech nach jeder Erkennung und so der Wiedererkenner Wiederanlauf muss sorgfältig behandelt werden: recognizer muss nicht hören, während Text to Speech läuft ... Ich habe versucht, eine Lösung mit onEndOfSpeech aber keiner war gut bis jetzt ... Irgendeine Idee?

Antwort

0

In diesem Fall ist die Hypotesis in der onPartialResult-Methode immer null: Wird das erwartet?

Ja

Darüber hinaus gibt es einen Text in Sprache nach jeder Anerkennung und so die Anerkennung Zuhörer Neustart sorgfältig behandelt werden: Erkenner darf nicht hören, während Text-zu-Sprache ist noch nicht abgeschlossen

Korrigieren

+0

Hallo @ Nikolay, manchmal (selten) passiert es auch, dass eine Nicht-Null-Hypothese generiert wird und dies nicht mit einem Schlüsselwort übereinstimmt. Dies passiert, wenn die Sprache einem Schlüsselwort sehr ähnlich ist ... Wie auch immer ... Wie kann ich mit dem Fall umgehen, wenn ein Benutzer etwas sagt und es nicht als Schlüsselwort erkannt wird? Ist onEndOfSpeech die Lösung? Gibt es eine Möglichkeit, zwischen Lärm und Sprache zu unterscheiden? – salvolds

+1

Es gibt noch keine Lösung, um zwischen Rauschen und Sprache zu unterscheiden, Sie müssen es selbst implementieren. –

Verwandte Themen