Start · Sprachen · JavaScript · Referenz · SpeechRecognition.maxAlternatives

SpeechRecognition.maxAlternatives

Eigenschaft

Legt fest, wie viele alternative Erkennungshypothesen (<code>SpeechRecognitionAlternative</code>) höchstens pro <code>SpeechRecognitionResult</code> geliefert werden.

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

Signatur

SpeechRecognition.maxAlternatives

Beschreibung

Die Eigenschaft maxAlternatives einer SpeechRecognition-Instanz bestimmt, wie viele alternative Transkriptionen die Spracherkennung für jedes erkannte Ergebnis höchstens zurückgibt. Standardwert ist 1, dann enthält jedes Ergebnis nur die wahrscheinlichste Hypothese.

Setzt man einen höheren Wert, liefert event.results[i] im result-Event mehrere SpeechRecognitionAlternative-Objekte, jeweils mit transcript und confidence. In der Regel sind sie nach absteigender Konfidenz sortiert. Das ist praktisch, wenn Ihre Anwendung einen festen Wortschatz hat, etwa Sprachbefehle, Farbnamen oder Menüeinträge. Sie prüfen dann alle Alternativen gegen die erlaubten Begriffe und nehmen den ersten Treffer, statt sich auf die Top-Hypothese zu verlassen.

Die Eigenschaft müssen Sie vor dem Aufruf von start() setzen. Der Wert ist nur eine Obergrenze: Die Erkennungs-Engine kann weniger Alternativen liefern, als Sie anfordern.

Parameter

Name Typ Default Beschreibung
$value number 1 Ganze Zahl ≥ 1 (intern unsigned long). Gibt an, wie viele Alternativen pro Ergebnis höchstens geliefert werden sollen. Wird beim Setzen zugewiesen.

Rückgabewert

Typ
number
Beschreibung
Die aktuell eingestellte Höchstzahl an Alternativen pro Ergebnis (Standard: 1).

Beispiele

Mehrere Alternativen anfordern und ausgeben

const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.maxAlternatives = 3;

recognition.addEventListener('result', (event) => {
  const result = event.results[0];
  for (let i = 0; i < result.length; i++) {
    const alt = result[i];
    console.log(`${i + 1}. ${alt.transcript} (${alt.confidence.toFixed(2)})`);
  }
});

recognition.start();
1. Licht an (0.91) 2. Licht dann (0.42) 3. Licht kann (0.30)

Sprachbefehl gegen festen Wortschatz abgleichen

const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.maxAlternatives = 5;

const befehle = ['rot', 'grün', 'blau', 'gelb'];

recognition.onresult = (event) => {
  const alternativen = Array.from(event.results[0]);
  const treffer = alternativen
    .map((a) => a.transcript.trim().toLowerCase())
    .find((t) => befehle.includes(t));

  if (treffer) {
    document.body.style.backgroundColor = { rot: 'red', grün: 'green', blau: 'blue', gelb: 'yellow' }[treffer];
    console.log('Erkannt:', treffer);
  } else {
    console.log('Kein bekannter Befehl.');
  }
};

document.querySelector('#sprechen').addEventListener('click', () => recognition.start());
Erkannt: blau

Aktuellen Wert auslesen

const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
console.log(recognition.maxAlternatives);
recognition.maxAlternatives = 4;
console.log(recognition.maxAlternatives);
1 4

// Wichtig · Fallstricke

  • Nur eine Obergrenze: Die Engine kann trotz höherem Wert nur eine oder wenige Alternativen liefern. Prüfen Sie deshalb immer result.length, statt feste Indizes anzunehmen.
  • Vor start() setzen: Änderungen während einer laufenden Sitzung wirken sich meist erst auf die nächste Sitzung aus.
  • confidence ist nicht immer aussagekräftig: Manche Implementierungen liefern für Alternativen 0 oder ungenaue Werte.
  • Kompatibilität: Chrome und Edge bieten die API nur als webkitSpeechRecognition an, Safari ab 14.1. Firefox unterstützt sie standardmäßig nicht. Nutzen Sie immer Feature-Erkennung.
  • Datenschutz: Chrome schickt die Audiodaten zur Erkennung an einen Server. Die API erfordert einen sicheren Kontext (HTTPS) und die Mikrofon-Berechtigung.