Start · Sprachen · JavaScript · Referenz · new SpeechSynthesisErrorEvent()

new SpeechSynthesisErrorEvent()

Methode

Erzeugt ein neues <code>SpeechSynthesisErrorEvent</code>-Objekt, das einen Fehler bei der Sprachausgabe eines <code>SpeechSynthesisUtterance</code> beschreibt.

seit JavaScript Web Speech API – Baseline: Chrome, Edge, Firefox, Kategorie: webapi

Signatur

new SpeechSynthesisErrorEvent(type, options)

Beschreibung

Der Konstruktor SpeechSynthesisErrorEvent() erstellt ein Ereignisobjekt vom Typ SpeechSynthesisErrorEvent. Normalerweise erzeugt der Browser solche Objekte selbst und löst sie als error-Ereignis auf einem SpeechSynthesisUtterance aus, z. B. wenn die Sprachausgabe abgebrochen wird, keine passende Stimme verfügbar ist oder die Synthese-Engine ausfällt.

Den Konstruktor selbst braucht man vor allem in Tests (Unit-Tests, Mocks der Web Speech API) oder wenn man Fehlerbehandlungs-Code gezielt auslösen will, ohne auf einen echten Engine-Fehler zu warten. Mit dispatchEvent() lässt sich das erzeugte Ereignis dann auf einer Utterance auslösen.

Das Objekt erbt von SpeechSynthesisEvent und damit von Event. Zusätzlich zu utterance, charIndex, charLength, elapsedTime und name besitzt es die Eigenschaft error mit einem Fehlercode wie "canceled", "interrupted", "audio-busy", "audio-hardware", "network", "synthesis-unavailable", "synthesis-failed", "language-unavailable", "voice-unavailable", "text-too-long", "invalid-argument" oder "not-allowed".

Parameter

Name Typ Default Beschreibung
$type Pflicht string Name des Ereignisses, in der Praxis fast immer "error".
$options Pflicht object Initialisierungsobjekt. Pflichtfelder: utterance (SpeechSynthesisUtterance) und error (Fehlercode-String). Optional: charIndex (number, Standard 0), charLength (number, Standard 0), elapsedTime (number in Sekunden, Standard 0), name (string, Standard "") sowie die allgemeinen Event-Optionen bubbles, cancelable, composed.

Rückgabewert

Typ
SpeechSynthesisErrorEvent
Beschreibung
Ein neues, noch nicht ausgelöstes SpeechSynthesisErrorEvent-Objekt mit den übergebenen Werten.

Beispiele

Ereignis erzeugen und Eigenschaften auslesen

const utterance = new SpeechSynthesisUtterance('Hallo Welt');

const evt = new SpeechSynthesisErrorEvent('error', {
  utterance,
  error: 'voice-unavailable',
  charIndex: 0,
  elapsedTime: 0
});

console.log(evt.type, evt.error, evt.utterance.text);
error voice-unavailable Hallo Welt

Fehlerbehandlung gezielt testen per dispatchEvent

const utterance = new SpeechSynthesisUtterance('Bestellung bestätigt');

utterance.addEventListener('error', (event) => {
  if (event.error === 'interrupted' || event.error === 'canceled') {
    console.log('Ausgabe abgebrochen – kein echter Fehler.');
    return;
  }
  console.warn(`Sprachausgabe fehlgeschlagen: ${event.error} bei Zeichen ${event.charIndex}`);
});

// Fehler simulieren, ohne die Engine zu benutzen
utterance.dispatchEvent(new SpeechSynthesisErrorEvent('error', {
  utterance,
  error: 'synthesis-failed',
  charIndex: 12
}));
Sprachausgabe fehlgeschlagen: synthesis-failed bei Zeichen 12

Echten Fehler über onerror abfangen

const sprich = (text) => new Promise((resolve, reject) => {
  const u = new SpeechSynthesisUtterance(text);
  u.lang = 'de-DE';
  u.onend = () => resolve();
  u.onerror = (event) => reject(new Error(`TTS-Fehler: ${event.error}`));
  speechSynthesis.speak(u);
});

try {
  await sprich('Willkommen zurück!');
  console.log('Fertig gesprochen');
} catch (err) {
  console.error(err.message);
}
Fertig gesprochen

// Wichtig · Fallstricke

  • Pflichtfelder: Ohne utterance oder error im Optionsobjekt wirft der Konstruktor einen TypeError. Ein ungültiger Fehlercode (nicht aus der Aufzählung) führt ebenfalls zu einem TypeError.
  • Selbst erzeugte Ereignisse haben isTrusted === false; sie lösen keine echte Sprachausgabe oder Fehlerreaktion der Engine aus, sondern rufen nur die registrierten Handler auf.
  • "interrupted" und "canceled" entstehen im Alltag durch speechSynthesis.cancel() bzw. neue speak()-Aufrufe und sollten meist nicht als echter Fehler gemeldet werden.
  • Browser-Kompatibilität: Die Web Speech API (Synthese) wird von allen aktuellen Desktop- und Mobilbrowsern unterstützt; ältere Versionen kennen den Konstruktor evtl. nicht – vorher mit 'SpeechSynthesisErrorEvent' in window prüfen. In Node.js existiert die Schnittstelle nicht.
  • Einige Browser verlangen eine Benutzerinteraktion vor der ersten Ausgabe, sonst kommt es zum Fehler "not-allowed".