Wenn die Android-Text-in-Sprache-Funktionalität Audiowellen in Text übersetzt, ist es möglich, die "Vertrauensniveaus" des gesprochenen Textes festzustellen? Zum Beispiel, wenn jemand zu weit entfernt vom Mikrofon spricht und das Android-Gerät verzerrte Geräusche aufnimmt, würde es sowohl den übersetzten Text als auch ein niedriges Vertrauensintervall ausgeben, um anzugeben, dass es nicht sicher ist, wie genau diese bestimmte Übersetzung war.
Antworten
Zu viele Anzeigen?Wenn Sie den RecognitionListener implementieren, untersuchen Sie diesen Codeausschnitt aus meiner onResults-Methode.
@Override
public void onResults(Bundle results) {
String LOG = "SpeechRecognizerActivity"
Log.d(LOG, "onResults");
ArrayList strlist = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
float [] confidence = results.getFloatArray(SpeechRecognizer.CONFIDENCE_SCORES);
for (int i = 0; i < strlist.size(); i++) {
Log.d(LOG, "result=" + strlist.get(i));
}
Log.d(LOG + " result", strlist.get(0));
if (confidence != null){
if (confidence.length > 0){
Log.d(LOG + " confidence", String.valueOf(confidence[0]));
} else {
Log.d(LOG + " confidence score not available", "unknown confidence");
}
} else {
Log.d(LOG, "confidence not found");
}
}
Sie werden nichts sehen, es sei denn, Sie fügen dies zu Ihrem Erkennungs-Intent hinzu:
iSpeechIntent.putExtra(RecognizerIntent.EXTRA_CONFIDENCE_SCORES, true);
Ja. Im zurückgegebenen Bundle
gibt es ein Float-Array namens CONFIDENCE_SCORES
. Laut Dokumentation:
Schlüssel zur Abrufung eines Float-Arrays aus dem Bundle, das an die Methoden onResults(Bundle) und onPartialResults(Bundle) übergeben wird. Das Array sollte die gleiche Größe wie die in RESULTS_RECOGNITION bereitgestellte ArrayList haben und Werte im Bereich von 0,0 bis 1,0 oder -1 enthalten, um einen nicht verfügbaren Vertrauensscore darzustellen.
Vertrauenswerte nahe bei 1,0 deuten auf hohe Vertrauenswürdigkeit hin (der Spracherkenner ist überzeugt, dass das Erkennungsergebnis korrekt ist), während Werte nahe bei 0,0 geringes Vertrauen anzeigen.
Dieser Wert ist optional und muss möglicherweise nicht bereitgestellt werden.
Bitte beachten Sie, dass es nicht garantiert ist, dass dieser Wert vorhanden ist. Überprüfen Sie es und verwenden Sie es, wenn vorhanden. Wagen Sie es, wenn nicht.