Start · Sprachen · JavaScript · Referenz · SpeechRecognitionResultList.length

SpeechRecognitionResultList.length

Eigenschaft

Schreibgeschützte Eigenschaft, die die Anzahl der <code>SpeechRecognitionResult</code>-Objekte in einer <code>SpeechRecognitionResultList</code> liefert.

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

Signatur

SpeechRecognitionResultList.length

Beschreibung

Die Eigenschaft length gibt an, wie viele Erkennungsergebnisse (SpeechRecognitionResult) eine SpeechRecognitionResultList enthält. Du bekommst diese Liste über event.results im result-Event einer SpeechRecognition-Instanz.

Gebraucht wird length vor allem, um mit einer klassischen for-Schleife über alle Ergebnisse zu laufen, etwa um bei continuous = true ein vollständiges Transkript aus allen bisher erkannten Satzteilen zusammenzusetzen. Zusammen mit event.resultIndex lässt sich außerdem gezielt nur der Bereich verarbeiten, der sich seit dem letzten Event geändert hat.

Die Liste ist ein array-ähnliches Objekt, aber kein echtes Array. Über item(index) oder die Klammerschreibweise list[index] greifst du auf einzelne Einträge zu. Gültige Indizes reichen von 0 bis length - 1.

Rückgabewert

Typ
number
Beschreibung
Eine nicht-negative ganze Zahl (unsigned long) mit der Anzahl der SpeechRecognitionResult-Objekte in der Liste.

Beispiele

Anzahl der Ergebnisse ausgeben

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

recognition.addEventListener('result', (event) => {
  // event.results ist eine SpeechRecognitionResultList
  console.log(`Ergebnisse in der Liste: ${event.results.length}`);
});

recognition.start();
Ergebnisse in der Liste: 1

Vollständiges Transkript im Dauermodus zusammensetzen

const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.continuous = true;
recognition.interimResults = true;

const ausgabe = document.querySelector('#transkript');

recognition.onresult = (event) => {
  let endgueltig = '';
  let vorlaeufig = '';
  for (let i = 0; i < event.results.length; i++) {
    const result = event.results[i];
    if (result.isFinal) {
      endgueltig += result[0].transcript;
    } else {
      vorlaeufig += result[0].transcript;
    }
  }
  ausgabe.textContent = `${endgueltig} ${vorlaeufig}`.trim();
};

recognition.start();

Nur neue Ergebnisse ab resultIndex verarbeiten

const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.continuous = true;

recognition.addEventListener('result', (event) => {
  const { results, resultIndex } = event;
  for (let i = resultIndex; i < results.length; i++) {
    if (results[i].isFinal) {
      console.log(`Neu erkannt (#${i}): ${results[i][0].transcript}`);
    }
  }
});

recognition.start();
Neu erkannt (#0): hallo welt Neu erkannt (#1): wie geht es dir

Liste in ein echtes Array umwandeln

recognition.onresult = (event) => {
  // Array.from nutzt length und die Index-Zugriffe
  const texte = Array.from(event.results, (r) => r[0].transcript);
  console.log(texte.length === event.results.length, texte);
};
true ["hallo welt"]

// Wichtig · Fallstricke

  • Schreibgeschützt: Wenn du length etwas zuweist, passiert nichts (im Strict Mode gibt es einen TypeError). Kürzen lässt sich die Liste so nicht.
  • Kein echtes Array: map, filter usw. gibt es nicht direkt. Wandle die Liste vorher mit Array.from() oder Spread-Syntax ([...event.results]) um.
  • Wachsende Liste: Bei continuous = true enthält event.results alle Ergebnisse der Sitzung, und length wächst mit jedem Event. Wenn du immer von 0 an durchläufst und dabei Text anhängst, entstehen Duplikate. Nutze dafür event.resultIndex.
  • Vorläufige Ergebnisse: Mit interimResults = true kann der letzte Eintrag noch vorläufig sein (isFinal === false) und in späteren Events ersetzt werden.
  • Kompatibilität: Chrome und Edge unterstützen die Web Speech API nur mit dem Präfix webkitSpeechRecognition. Die Erkennung läuft dort meist über einen Server und braucht daher eine Internetverbindung. Firefox unterstützt die Spracherkennung standardmäßig nicht. Nötig sind außerdem ein sicherer Kontext (HTTPS) und die Freigabe des Mikrofons.