Start · Sprachen · JavaScript · Referenz · SpeechRecognitionResult.item()

SpeechRecognitionResult.item()

Methode

Gibt das <code>SpeechRecognitionAlternative</code>-Objekt am angegebenen Index eines Spracherkennungs-Ergebnisses zurück, alternativ per Array-Syntax <code>result[index]</code>.

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

Signatur

SpeechRecognitionResult.prototype.item(index)

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

Typ
SpeechRecognitionAlternative | null
Beschreibung
Die Alternative am angegebenen Index. Liegt der Index außerhalb des gültigen Bereichs, gibt 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();
Erkannt: "hallo welt" (92 %)

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();
0 Licht an 0.91 1 Licht kann 0.42 2 nicht an 0.18

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();
Final: heute ist Montag | Zwischenstand: und das Wet

// Wichtig · Fallstricke

  • Browser-Unterstützung: Die Spracherkennung ist nicht überall verfügbar. Chrome und Edge bieten sie nur als webkitSpeechRecognition an, 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 > 1 liefern manche Engines (z. B. Chrome) oft nur eine Alternative. Prüfe result.length, bevor du auf höhere Indizes zugreifst.
  • Index außerhalb des Bereichs: item() und die Klammer-Syntax verhalten sich hier unterschiedlich: null bzw. eine Ausnahme bei item(), undefined bei result[i]. Ein anschließender Zugriff auf .transcript wirft dann einen TypeError.
  • confidence ist nicht immer aussagekräftig: Bei Zwischenergebnissen (isFinal === false) ist der Wert oft 0.
  • Kein echtes Array: SpeechRecognitionResult hat keine Methoden wie map oder forEach. Wandle es bei Bedarf mit Array.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.