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

SpeechRecognitionResultList.item()

Methode

Gibt das <code>SpeechRecognitionResult</code> an der angegebenen Position einer <code>SpeechRecognitionResultList</code> zurück; entspricht dem Zugriff über <code>results[index]</code>.

seit JavaScript Chrome 33+ (mit webkit-Präfix), Edge 79+, Safari 1 Kategorie: webapi

Signatur

SpeechRecognitionResultList.prototype.item(index)

Beschreibung

Die Methode item() gehört zum Interface SpeechRecognitionResultList der Web Speech API. Diese Liste steht im result-Event eines SpeechRecognition-Objekts unter event.results bereit und enthält alle bisher erkannten Ergebnisse der aktuellen Sitzung – jedes davon ist ein SpeechRecognitionResult.

Man benutzt item(index) bzw. die gleichwertige Klammerschreibweise results[index], um ein bestimmtes Ergebnis zu lesen. Jedes Ergebnis enthält wiederum eine oder mehrere Alternativen (SpeechRecognitionAlternative) mit transcript und confidence sowie die Eigenschaft isFinal, die angibt, ob das Ergebnis endgültig oder nur vorläufig ist.

Wichtig ist das Zusammenspiel mit event.resultIndex: Im Dauerbetrieb (continuous = true) wächst die Liste. Mit resultIndex erfährt man, ab welcher Position sich Ergebnisse geändert haben, sodass nur diese neu verarbeitet werden müssen.

SpeechRecognitionResultList ist kein echtes Array. Methoden wie map() oder filter() fehlen; zur Umwandlung eignet sich Array.from().

Parameter

Name Typ Default Beschreibung
$index Pflicht number Nullbasierter Index des gewünschten Ergebnisses. Wird intern in einen unsigned long umgewandelt.

Rückgabewert

Typ
SpeechRecognitionResult | null
Beschreibung
Das SpeechRecognitionResult an der Position index. Liegt der Index außerhalb des gültigen Bereichs, liefert item() je nach Browser null oder undefined; der Klammerzugriff liefert undefined.

Beispiele

Erstes Ergebnis per item() und Klammerzugriff lesen

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

recognition.addEventListener('result', (event) => {
  const viaItem = event.results.item(0);
  const viaIndex = event.results[0]; // gleichwertig

  console.log(viaItem === viaIndex);
  console.log('Erkannt:', viaItem.item(0).transcript);
  console.log('Sicherheit:', viaItem[0].confidence.toFixed(2));
});

recognition.start();
true Erkannt: hallo welt Sicherheit: 0.92

Dauerdiktat: nur neue Ergebnisse ab resultIndex verarbeiten

const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
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.item(i);
    const text = result.item(0).transcript;
    if (result.isFinal) {
      finalText += text + ' ';
    } else {
      interim += text;
    }
  }
  console.log('Endgültig:', finalText.trim());
  console.log('Vorläufig:', interim);
};

recognition.start();
Endgültig: guten morgen Vorläufig: wie geht

Liste in ein echtes Array umwandeln

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

recognition.onresult = ({ results }) => {
  // SpeechRecognitionResultList hat kein map() – daher Array.from()
  const transcripts = Array.from(results, (result) => result.item(0).transcript);
  console.log(transcripts.join(' | '));

  // Alle Alternativen des ersten Ergebnisses
  const alternatives = Array.from(results.item(0)).map(
    (alt) => `${alt.transcript} (${alt.confidence.toFixed(2)})`
  );
  console.log(alternatives);
};

recognition.start();
einkaufsliste milch brot ["einkaufsliste milch brot (0.88)", "einkaufsliste mich brot (0.61)", ...]

// Wichtig · Fallstricke

  • Browser-Kompatibilität: Die Web Speech API (Erkennung) gibt es in Chrome und Edge (teils nur als webkitSpeechRecognition) und in Safari 14.1+. Firefox unterstützt SpeechRecognition standardmäßig nicht. Verfügbarkeit immer prüfen: 'SpeechRecognition' in window || 'webkitSpeechRecognition' in window.
  • Kein echtes Array: map(), forEach() usw. fehlen. for-Schleife mit length oder Array.from() verwenden.
  • Index außerhalb des Bereichs: Es wird keine Ausnahme geworfen – das Ergebnis ist null bzw. undefined. Vor dem Zugriff auf .transcript daher gegen length prüfen.
  • resultIndex beachten: Bei continuous = true enthält event.results alle Ergebnisse der Sitzung. Wer immer ab 0 iteriert, verarbeitet Text doppelt.
  • Datenschutz: In Chrome wird das Audio zur Erkennung an Google-Server geschickt; außerdem wird eine Mikrofonfreigabe und ein sicherer Kontext (HTTPS) benötigt.