Signatur
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
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());
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);
// Wichtig · Fallstricke
- Browser-Unterstützung: Chrome und Edge bieten die API vor allem als
webkitSpeechRecognitionan, Safari ab 14.1 ebenfalls mit Präfix. Firefox unterstütztSpeechRecognitionstandardmäßig nicht. Prüfen Sie deshalb immer vorher, ob die API vorhanden ist. - Keine Ergebnisdaten:
speechendenthält keinen Text. Die Transkripte kommen überresult, oft auch erst nachspeechend. - Nicht mit
endverwechseln:speechendbedeutet nur, dass keine Sprache mehr erkannt wird. Die Sitzung selbst endet erst mit dem Ereignisend. - Nicht garantiert: Wenn nie gesprochen wurde (dann gibt es einen Fehler
no-speech) oder die Erkennung perabort()abgebrochen wird, kannspeechendausbleiben. - 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 = truekannspeechendje nach Implementierung erst am Ende der ganzen Sitzung kommen und nicht nach jeder Pause.