Signatur
Beschreibung
Ein SpeechRecognitionResult steht für ein einzelnes Erkennungsergebnis der Web Speech API. Es kann mehrere mögliche Deutungen des Gesprochenen enthalten, die sogenannten Alternativen. Mit item(index) greifst du auf eine davon zu. Du bekommst ein SpeechRecognitionAlternative-Objekt mit den Eigenschaften transcript (erkannter Text) und confidence (Konfidenz zwischen 0 und 1).
Weil item() als indizierter Getter festgelegt ist, sind result.item(0) und result[0] gleichwertig. In der Praxis sieht man meist die Klammer-Syntax. item() ist trotzdem nützlich, wenn du ausdrücklich eine Methode aufrufen willst, etwa beim Durchreichen als Funktion.
Wie viele Alternativen es gibt, bestimmt SpeechRecognition.maxAlternatives (Standardwert 1). Die Alternativen sind nach Konfidenz absteigend sortiert, Index 0 ist also die wahrscheinlichste Deutung. Die Anzahl liest du über result.length aus.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $index Pflicht | number | Nullbasierter Index der gewünschten Alternative. Er wird in einen vorzeichenlosen 32-Bit-Integer (unsigned long) umgewandelt. |
Rückgabewert
item() je nach Browser null zurück (laut Spezifikation eine Ausnahme). Der Zugriff per result[i] liefert dann undefined.Beispiele
Beste Alternative mit item() auslesen
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.addEventListener('result', (event) => {
const result = event.results.item(event.resultIndex);
const best = result.item(0); // gleichwertig: result[0]
console.log(`Erkannt: "${best.transcript}" (${(best.confidence * 100).toFixed(0)} %)`);
});
recognition.start();
Alle Alternativen durchlaufen
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.maxAlternatives = 3;
recognition.onresult = (event) => {
const result = event.results[event.resultIndex];
for (let i = 0; i < result.length; i++) {
const alt = result.item(i);
console.log(i, alt.transcript, alt.confidence.toFixed(2));
}
};
recognition.start();
Nur finale Ergebnisse zu einem Text zusammensetzen
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
recognition.continuous = true;
recognition.interimResults = true;
let finalText = '';
recognition.onresult = (event) => {
let interim = '';
for (let i = event.resultIndex; i < event.results.length; i++) {
const result = event.results[i];
const text = result.item(0).transcript;
if (result.isFinal) finalText += text + ' ';
else interim += text;
}
console.log('Final:', finalText.trim(), '| Zwischenstand:', interim);
};
recognition.start();
// Wichtig · Fallstricke
- Browser-Unterstützung: Die Spracherkennung ist nicht überall verfügbar. Chrome und Edge bieten sie nur als
webkitSpeechRecognitionan, Safari ab 14.1. Firefox unterstützt sie standardmäßig nicht. Prüfe deshalb immer, ob die Schnittstelle existiert, bevor du sie nutzt. - Mehr als eine Alternative ist nicht garantiert: Auch mit
maxAlternatives > 1liefern manche Engines (z. B. Chrome) oft nur eine Alternative. Prüferesult.length, bevor du auf höhere Indizes zugreifst. - Index außerhalb des Bereichs:
item()und die Klammer-Syntax verhalten sich hier unterschiedlich:nullbzw. eine Ausnahme beiitem(),undefinedbeiresult[i]. Ein anschließender Zugriff auf.transcriptwirft dann einenTypeError. confidenceist nicht immer aussagekräftig: Bei Zwischenergebnissen (isFinal === false) ist der Wert oft0.- Kein echtes Array:
SpeechRecognitionResulthat keine Methoden wiemapoderforEach. Wandle es bei Bedarf mitArray.from(result)um. - Datenschutz: In Chrome wird die Audioaufnahme zur Erkennung an Server des Herstellers geschickt. Die Seite braucht einen sicheren Kontext (HTTPS) und die Erlaubnis für das Mikrofon.