Start · Sprachen · JavaScript · Referenz · SpeechRecognitionResult

SpeechRecognitionResult

Schnittstelle

Repräsentiert ein einzelnes Ergebnis der Spracherkennung, das eine oder mehrere <code>SpeechRecognitionAlternative</code>-Objekte (mögliche Transkripte) enthält.

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

Signatur

interface SpeechRecognitionResult

Beschreibung

Ein SpeechRecognitionResult ist ein Eintrag in der SpeechRecognitionResultList, die Sie über event.results im result-Event einer SpeechRecognition-Instanz erhalten. Jedes Ergebnis steht für einen erkannten Sprachabschnitt (z. B. einen Satz oder eine Phrase).

Das Objekt ist listenartig: Über den Index (result[0]) oder die Methode item(index) greifen Sie auf die einzelnen SpeechRecognitionAlternative-Objekte zu. Diese enthalten jeweils ein transcript (erkannter Text) und eine confidence (Wert zwischen 0 und 1). Die Anzahl der Alternativen wird über SpeechRecognition.maxAlternatives gesteuert; length gibt die tatsächlich gelieferte Anzahl an.

Die Eigenschaft isFinal ist besonders wichtig: Mit interimResults = true liefert der Browser vorläufige Ergebnisse (isFinal === false), die sich noch ändern können. Erst wenn isFinal true ist, steht das Ergebnis fest. So bauen Sie z. B. Live-Untertitel oder Diktierfelder mit Echtzeit-Vorschau.

Mitglieder:

  • length (schreibgeschützt, number) – Anzahl der Alternativen.
  • isFinal (schreibgeschützt, boolean) – ob das Ergebnis endgültig ist.
  • item(index) – liefert die SpeechRecognitionAlternative am Index; alternativ Array-Zugriff result[index].

Parameter

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

Rückgabewert

Typ
SpeechRecognitionAlternative
Beschreibung
item(index) bzw. result[index] liefert eine SpeechRecognitionAlternative mit transcript und confidence. Instanzen von SpeechRecognitionResult selbst werden nicht konstruiert, sondern vom Browser im result-Event bereitgestellt.

Beispiele

Ergebnis aus dem result-Event auslesen

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

recognition.addEventListener('result', (event) => {
  // SpeechRecognitionResult am aktuellen Index
  const result = event.results[event.resultIndex];
  console.log('Endgültig:', result.isFinal);
  console.log('Anzahl Alternativen:', result.length);
  console.log('Bestes Transkript:', result[0].transcript);
});

recognition.start();
Endgültig: true Anzahl Alternativen: 3 Bestes Transkript: hallo welt

Alle Alternativen mit Konfidenz auflisten

recognition.onresult = (event) => {
  const result = event.results[event.results.length - 1];
  for (let i = 0; i < result.length; i++) {
    const alt = result.item(i);
    console.log(`${i + 1}. ${alt.transcript} (${(alt.confidence * 100).toFixed(1)} %)`);
  }
};
1. termin morgen um zehn (91.2 %) 2. termine morgen um zehn (6.4 %) 3. termin morgen um 10 (2.1 %)

Live-Diktat mit vorläufigen und endgültigen Ergebnissen

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

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

recognition.onresult = (event) => {
  let interim = '';
  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;
};

document.querySelector('#start').addEventListener('click', () => recognition.start());

// Wichtig · Fallstricke

  • Browser-Unterstützung: Chrome und Edge nutzen den Konstruktor webkitSpeechRecognition; Safari ab 14.1. Firefox unterstützt die Spracherkennung standardmäßig nicht. Immer per Feature-Erkennung prüfen.
  • Kein echtes Array: SpeechRecognitionResult hat kein map oder forEach. Nutzen Sie for-Schleifen oder Array.from(result).
  • Vorläufige Ergebnisse ändern sich: Ergebnisse mit isFinal === false können im nächsten Event am selben Index ersetzt werden – nur endgültige Ergebnisse dauerhaft speichern.
  • resultIndex beachten: event.results enthält bei continuous = true alle bisherigen Ergebnisse; neue beginnen bei event.resultIndex.
  • Konfidenz: Manche Browser liefern confidence bei Zwischenergebnissen als 0; maxAlternatives wird nicht überall voll ausgeschöpft.
  • Datenschutz: In Chrome wird Audio an Server von Google gesendet; die Nutzung erfordert Mikrofonfreigabe und einen sicheren Kontext (HTTPS).