Start · Sprachen · JavaScript · Referenz · SpeechRecognitionResultList

SpeechRecognitionResultList

Schnittstelle

Array-ähnliche Liste von <code>SpeechRecognitionResult</code>-Objekten, die bei jedem <code>result</code>-Event der Spracherkennung über <code>event.results</code> geliefert wird.

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

Signatur

interface SpeechRecognitionResultList

Beschreibung

SpeechRecognitionResultList ist Teil der Web Speech API und enthält alle Erkennungsergebnisse der laufenden Sitzung. Du erzeugst die Liste nie selbst. Sie steht dir im result-Event eines SpeechRecognition-Objekts über event.results zur Verfügung.

Jeder Eintrag ist ein SpeechRecognitionResult. Das ist ein erkannter Sprachabschnitt mit einer oder mehreren Alternativen (SpeechRecognitionAlternative), die jeweils transcript und confidence enthalten. Mit recognition.continuous = false (Standard) enthält die Liste in der Regel nur ein einzelnes Ergebnis. Im fortlaufenden Modus wächst sie mit jedem erkannten Satz.

Die Schnittstelle bietet:

  • length: Anzahl der Ergebnisse (nur lesbar).
  • item(index): gibt das Ergebnis an der Position index zurück. Alternativ geht der Index-Zugriff results[index].

Zusammen mit event.resultIndex kannst du gezielt nur die neuen oder geänderten Ergebnisse verarbeiten. Das ist wichtig, wenn Zwischenergebnisse (interimResults = true) angezeigt werden sollen.

Parameter

Name Typ Default Beschreibung
$index Pflicht number Nur für item(index): nullbasierter Index des gewünschten SpeechRecognitionResult.

Rückgabewert

Typ
SpeechRecognitionResult
Beschreibung
item(index) bzw. results[index] liefert das Ergebnis an dieser Position. length liefert eine number.

Beispiele

Instanz erhalten: einfache Erkennung im nicht fortlaufenden Modus

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

recognition.addEventListener('result', (event) => {
  // event.results ist eine SpeechRecognitionResultList
  const list = event.results;
  console.log('Anzahl Ergebnisse:', list.length);
  const text = list.item(0)[0].transcript;
  console.log('Erkannt:', text);
});

// Muss durch eine Nutzeraktion ausgelöst werden
document.querySelector('#start').addEventListener('click', () => recognition.start());
Anzahl Ergebnisse: 1 Erkannt: Hallo Welt

Fortlaufendes Diktat mit Zwischenergebnissen

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

const output = document.querySelector('#diktat');
let finalText = '';

recognition.onresult = (event) => {
  let interim = '';
  // Nur neue/geänderte Ergebnisse ab resultIndex durchlaufen
  for (let i = event.resultIndex; i < event.results.length; i++) {
    const result = event.results[i];
    if (result.isFinal) {
      finalText += result[0].transcript + ' ';
    } else {
      interim += result[0].transcript;
    }
  }
  output.textContent = finalText + interim;
};

recognition.start();

Liste in ein Array umwandeln und alle Alternativen auswerten

recognition.maxAlternatives = 3;

recognition.onresult = ({ results }) => {
  const alle = Array.from(results, (result) =>
    Array.from(result, (alt) => ({
      text: alt.transcript,
      sicherheit: Math.round(alt.confidence * 100) + ' %'
    }))
  );
  console.table(alle.flat());
};
Tabelle mit text/sicherheit je Alternative, z. B. { text: 'Licht an', sicherheit: '92 %' }

// Wichtig · Fallstricke

  • Browser-Unterstützung: Chrome und Edge bieten die Schnittstelle nur mit Präfix an (webkitSpeechRecognition), Safari ab 14.1. Firefox unterstützt die Spracherkennung standardmäßig nicht. Prüfe deshalb immer vorher, ob die Funktion vorhanden ist (Feature Detection).
  • Kein echtes Array: Methoden wie map oder filter fehlen. Nutze Array.from() oder den Spread-Operator. Iteration mit for…of funktioniert in aktuellen Browsern.
  • Im fortlaufenden Modus enthält die Liste alle bisherigen Ergebnisse der Sitzung. Verarbeitest du jedes Mal die ganze Liste, erscheinen Texte doppelt. Beginne daher bei event.resultIndex.
  • Zwischenergebnisse (isFinal === false) können sich im nächsten Event noch ändern.
  • Datenschutz: In Chrome wird der Ton zur Erkennung an Google-Server geschickt. Die Erkennung braucht HTTPS und die Erlaubnis für das Mikrofon.