Start · Sprachen · JavaScript · Referenz · SpeechRecognition: soundend

SpeechRecognition: soundend

Ereignis

Wird bei einer <code>SpeechRecognition</code>-Instanz ausgelöst, sobald kein Geräusch mehr erkannt wird, egal ob es Sprache war oder nicht.

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

Signatur

recognition.addEventListener("soundend", handler)

Beschreibung

Das Ereignis soundend gehört zur Web Speech API. Es wird ausgelöst, wenn der Erkennungsdienst kein Geräusch mehr wahrnimmt. Dabei spielt es keine Rolle, ob vorher erkennbare Sprache oder nur ein Hintergrundgeräusch zu hören war. Es ist das Gegenstück zu soundstart.

Die Ereignisse einer Erkennungssitzung laufen typischerweise in dieser Reihenfolge ab: start → audiostart → soundstart → speechstart → speechend → soundend → audioend → end. soundend kommt also nach speechend, aber vor dem Ende der Audioaufnahme.

Einen Handler meldest du entweder mit addEventListener("soundend", handler) oder über die Eigenschaft onsoundend an. Das übergebene Objekt ist ein normales Event ohne zusätzliche Daten. Das Ereignis lässt sich nicht abbrechen und steigt nicht im DOM auf. Man nutzt es vor allem für Rückmeldungen in der Oberfläche, zum Beispiel um eine „Mikrofon hört zu“-Animation auszublenden, sobald es still ist.

Parameter

Name Typ Default Beschreibung
$type Pflicht string Der Ereignisname, immer "soundend".
$handler Pflicht (event: Event) => void Callback, der bei dem Ereignis aufgerufen wird. Er bekommt ein einfaches Event-Objekt, dessen target die SpeechRecognition-Instanz ist.
$options boolean | AddEventListenerOptions false Optionale Listener-Optionen wie once oder signal.

Rückgabewert

Typ
void
Beschreibung
addEventListener liefert keinen Wert. Der Handler bekommt ein Event.

Beispiele

Stille mit addEventListener erkennen

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

recognition.addEventListener('soundstart', () => console.log('Geräusch erkannt'));
recognition.addEventListener('soundend', () => console.log('Kein Geräusch mehr'));

recognition.start();
Geräusch erkannt Kein Geräusch mehr

Über die Eigenschaft onsoundend

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

recognition.onsoundend = (event) => {
  console.log('soundend um', Math.round(event.timeStamp), 'ms');
};

recognition.start();
soundend um 4210 ms

Mikrofon-Anzeige ein- und ausblenden, Listener danach entfernen

const Recognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new Recognition();
const indicator = document.querySelector('#mic-indicator');

const onSoundStart = () => indicator.classList.add('active');
const onSoundEnd = () => indicator.classList.remove('active');

recognition.addEventListener('soundstart', onSoundStart);
recognition.addEventListener('soundend', onSoundEnd);

recognition.addEventListener('end', () => {
  recognition.removeEventListener('soundstart', onSoundStart);
  recognition.removeEventListener('soundend', onSoundEnd);
  console.log('Sitzung beendet, Listener entfernt');
}, { once: true });

document.querySelector('#talk').addEventListener('click', () => recognition.start());
Sitzung beendet, Listener entfernt

// Wichtig · Fallstricke

  • Browser-Unterstützung: Chrome und Edge bieten die API nur als webkitSpeechRecognition an. Safari unterstützt sie ab 14.1, Firefox bisher nicht. Prüfe deshalb vorher, ob die API vorhanden ist.
  • In Chrome wird das Audio an einen Server geschickt. Ohne Netzwerk kann ein error-Ereignis kommen, und soundend wird dann eventuell gar nicht ausgelöst.
  • Die Seite braucht einen sicheren Kontext (HTTPS) und die Freigabe des Mikrofons durch den Nutzer.
  • soundend heißt nicht, dass ein Ergebnis vorliegt. Werte die erkannten Texte im result-Ereignis aus.
  • Ist continuous = true gesetzt, können soundstart und soundend je nach Implementierung mehrfach oder nur einmal pro Sitzung kommen. Verlass dich nicht auf eine feste Anzahl.