Signatur
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
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();
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());
Aktuellen Wert auslesen
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
console.log(recognition.maxAlternatives);
recognition.maxAlternatives = 4;
console.log(recognition.maxAlternatives);
// 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. confidenceist nicht immer aussagekräftig: Manche Implementierungen liefern für Alternativen0oder ungenaue Werte.- Kompatibilität: Chrome und Edge bieten die API nur als
webkitSpeechRecognitionan, 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.