Start · Sprachen · JavaScript · Referenz · SpeechRecognition: speechend

SpeechRecognition: speechend

Ereignis

Wird an einem <code>SpeechRecognition</code>-Objekt ausgelöst, sobald der Erkennungsdienst keine Sprache mehr erkennt, also wenn der Sprecher aufhört zu sprechen.

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

Signatur

recognition.addEventListener("speechend", handler)

Beschreibung

Das Ereignis speechend gehört zur Web Speech API und wird an einer SpeechRecognition-Instanz ausgelöst, sobald der Erkennungsdienst keine Sprache mehr erkennt. Es ist das Gegenstück zu speechstart. Man kann es entweder mit addEventListener("speechend", handler) registrieren oder über die Eigenschaft onspeechend zuweisen.

In der Praxis nutzt man speechend, um der Benutzeroberfläche mitzuteilen, dass gerade niemand mehr spricht, zum Beispiel um eine „Sprechen…“-Animation auszublenden. Außerdem kann man hier im Einzelmodus (continuous = false) die Erkennung bewusst mit recognition.stop() beenden, damit das Endergebnis schneller geliefert wird.

Die Reihenfolge der Ereignisse lautet typischerweise: start → audiostart → soundstart → speechstart → (result…) → speechend → soundend → audioend → end. Das Ereignis ist ein einfaches Event ohne eigene Zusatzeigenschaften. Die erkannten Texte kommen nicht hier an, sondern über das Ereignis result.

Parameter

Name Typ Default Beschreibung
$type Pflicht string Der Ereignistyp, hier immer "speechend".
$handler Pflicht (event: Event) => void Die Rückruffunktion. Sie erhält ein normales Event-Objekt, dessen target die SpeechRecognition-Instanz ist.
$options boolean | AddEventListenerOptions false Optionale Listener-Optionen wie once oder signal (zum Entfernen per AbortController).

Rückgabewert

Typ
void
Beschreibung
addEventListener gibt nichts zurück. Der Handler bekommt ein Event ohne zusätzliche Eigenschaften.

Beispiele

Erkennung nach Sprechende per addEventListener stoppen

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

recognition.addEventListener('speechend', () => {
  console.log('Sprechpause erkannt – beende Aufnahme.');
  recognition.stop(); // Endergebnis schneller erhalten
});

recognition.addEventListener('result', (event) => {
  console.log('Erkannt:', event.results[0][0].transcript);
});

document.querySelector('#mic').addEventListener('click', () => recognition.start());
Sprechpause erkannt – beende Aufnahme. Erkannt: Hallo Welt

UI-Status über die onspeechend-Eigenschaft steuern

const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
const status = document.querySelector('#status');

recognition.onspeechstart = () => {
  status.textContent = '🎙️ Sie sprechen…';
};

recognition.onspeechend = () => {
  status.textContent = 'Verarbeite Eingabe…';
};

recognition.onend = () => {
  status.textContent = 'Bereit';
};

recognition.start();

Listener mit AbortController wieder entfernen

const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
const controller = new AbortController();

const onSpeechEnd = () => console.log('speechend ausgelöst');

recognition.addEventListener('speechend', onSpeechEnd, { signal: controller.signal });
recognition.start();

// Später: Listener entfernen (alternativ removeEventListener)
setTimeout(() => {
  controller.abort();
  // gleichwertig: recognition.removeEventListener('speechend', onSpeechEnd);
  // bzw. bei Eigenschaft: recognition.onspeechend = null;
  console.log('Listener entfernt');
}, 10000);
speechend ausgelöst Listener entfernt

// Wichtig · Fallstricke

  • Browser-Unterstützung: Chrome und Edge bieten die API vor allem als webkitSpeechRecognition an, Safari ab 14.1 ebenfalls mit Präfix. Firefox unterstützt SpeechRecognition standardmäßig nicht. Prüfen Sie deshalb immer vorher, ob die API vorhanden ist.
  • Keine Ergebnisdaten: speechend enthält keinen Text. Die Transkripte kommen über result, oft auch erst nach speechend.
  • Nicht mit end verwechseln: speechend bedeutet nur, dass keine Sprache mehr erkannt wird. Die Sitzung selbst endet erst mit dem Ereignis end.
  • Nicht garantiert: Wenn nie gesprochen wurde (dann gibt es einen Fehler no-speech) oder die Erkennung per abort() abgebrochen wird, kann speechend ausbleiben.
  • Datenschutz: In Chrome wird das Audio in der Regel an Server von Google geschickt. Die API braucht einen sicheren Kontext (HTTPS) und die Erlaubnis für das Mikrofon.
  • Bei continuous = true kann speechend je nach Implementierung erst am Ende der ganzen Sitzung kommen und nicht nach jeder Pause.