Start · Sprachen · JavaScript · Referenz · SpeechRecognitionAlternative.confidence

SpeechRecognitionAlternative.confidence

Eigenschaft

Nur lesbare Zahl zwischen 0 und 1, die angibt, wie sicher sich die Spracherkennung ist, dass die jeweilige Alternative (<code>transcript</code>) korrekt erkannt wurde.

seit JavaScript Web Speech API – Chrome/Edge (mit Präfix webkit), Kategorie: webapi

Signatur

SpeechRecognitionAlternative.confidence

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

Typ
number
Beschreibung
Eine Zahl im Bereich 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());
Erkannt: "Hallo Welt" (92.3 %)

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();
💡 Licht eingeschaltet

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();
┌─────────┬──────────────┬────────────┐ │ (index) │ transcript │ confidence │ ├─────────┼──────────────┼────────────┤ │ 0 │ 'Berlin' │ 0.91 │ │ 1 │ 'Merlin' │ 0.42 │ │ 2 │ 'Berlin in' │ 0.13 │ └─────────┴──────────────┴────────────┘

// 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 confidence berechnet wird, hängt von der Engine ab. Chrome erkennt z. B. serverseitig bei Google, Safari nutzt eigene Dienste. Ein fester Schwellenwert wie 0.8 verhält sich deshalb nicht überall gleich. Kalibriere ihn am besten pro Browser.
  • Zwischenergebnisse: Bei interimResults = true liefern nicht finale Ergebnisse oft confidence === 0. Werte die Zuversicht deshalb nur aus, wenn result.isFinal gilt.
  • Werden mehrere Alternativen angefordert, liefern manche Engines für die weiteren Alternativen trotzdem nur 0 oder 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.