Signatur
Beschreibung
Die Eigenschaft confidence gehört zum Interface SpeechRecognitionAlternative der Web Speech API. Sie liefert eine Gleitkommazahl zwischen 0 (keine Zuversicht) und 1 (höchste Zuversicht). Das ist die Schätzung der Erkennungs-Engine, wie wahrscheinlich der zugehörige transcript dem Gesagten entspricht.
Jedes SpeechRecognitionResult enthält eine oder mehrere Alternativen. Wie viele es höchstens sind, legst du mit SpeechRecognition.maxAlternatives fest. Die Alternativen sind in der Regel absteigend nach confidence sortiert. Über den Wert kannst du also die beste Hypothese auswählen oder unsichere Ergebnisse aussortieren.
Typische Einsatzfälle sind Sprachbefehle, die nur ab einem bestimmten Schwellenwert ausgeführt werden. Bei niedriger Zuversicht kannst du beim Nutzer nachfragen („Meinten Sie …?“). Auch die Anzeige mehrerer Vorschläge gehört dazu, etwa bei einer Sprachsuche.
Rückgabewert
0 bis 1. Höhere Werte bedeuten mehr Zuversicht. Bei Zwischenergebnissen (isFinal === false) oder bei manchen Engines kann der Wert 0 sein.Beispiele
Transkript und Zuversicht ausgeben
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.addEventListener('result', (event) => {
const alternative = event.results[0][0];
const prozent = (alternative.confidence * 100).toFixed(1);
console.log(`Erkannt: "${alternative.transcript}" (${prozent} %)`);
});
// Start nur nach einer Nutzeraktion, z. B. einem Klick
document.querySelector('#mic').addEventListener('click', () => recognition.start());
Sprachbefehl nur ab Schwellenwert ausführen
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
const SCHWELLE = 0.75;
const befehle = {
'licht an': () => console.log('💡 Licht eingeschaltet'),
'licht aus': () => console.log('🌑 Licht ausgeschaltet')
};
recognition.onresult = (event) => {
const { transcript, confidence } = event.results[0][0];
const text = transcript.trim().toLowerCase();
if (confidence < SCHWELLE) {
console.log(`Unsicher (${confidence.toFixed(2)}) – bitte wiederholen.`);
return;
}
befehle[text]?.() ?? console.log(`Unbekannter Befehl: ${text}`);
};
document.querySelector('#mic').onclick = () => recognition.start();
Mehrere Alternativen nach Zuversicht auflisten
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.maxAlternatives = 3;
recognition.onresult = (event) => {
const result = event.results[0];
const vorschlaege = Array.from(result)
.map(({ transcript, confidence }) => ({ transcript, confidence }))
.sort((a, b) => b.confidence - a.confidence);
console.table(vorschlaege);
};
document.querySelector('#mic').onclick = () => recognition.start();
// Wichtig · Fallstricke
- Browser-Unterstützung: Die Web Speech API (Erkennung) gibt es in Chromium-Browsern nur mit dem Präfix
webkitSpeechRecognition. Safari unterstützt sie ab 14.1, Firefox standardmäßig gar nicht. Prüfe deshalb vorher, ob die API vorhanden ist. - Werte sind nicht vergleichbar: Wie
confidenceberechnet wird, hängt von der Engine ab. Chrome erkennt z. B. serverseitig bei Google, Safari nutzt eigene Dienste. Ein fester Schwellenwert wie0.8verhält sich deshalb nicht überall gleich. Kalibriere ihn am besten pro Browser. - Zwischenergebnisse: Bei
interimResults = trueliefern nicht finale Ergebnisse oftconfidence === 0. Werte die Zuversicht deshalb nur aus, wennresult.isFinalgilt. - Werden mehrere Alternativen angefordert, liefern manche Engines für die weiteren Alternativen trotzdem nur
0oder gar keine Alternativen. - Datenschutz: In Chrome wird der Ton zur Erkennung an einen externen Server gesendet. Außerdem braucht die API die Mikrofonberechtigung und einen sicheren Kontext (HTTPS).
- Die Eigenschaft ist nur lesbar. Zuweisungen werden stillschweigend ignoriert.