Signatur
Beschreibung
Das Ereignis audiostart eines SpeechRecognition-Objekts wird ausgelöst, wenn der Browser nach dem Aufruf von recognition.start() tatsächlich anfängt, Audio aufzunehmen. Es ist das erste Ereignis einer Kette: start → audiostart → soundstart → speechstart → … → speechend → soundend → audioend → end.
Registrieren kannst du es entweder mit addEventListener("audiostart", handler) oder über die Eigenschaft recognition.onaudiostart = handler. Der Handler erhält ein normales Event ohne zusätzliche Eigenschaften. Das Ereignis lässt sich nicht abbrechen und steigt nicht auf (bubbles).
In der Praxis zeigst du damit dem Benutzer an, dass das Mikrofon jetzt aktiv ist, etwa mit einem pulsierenden Mikrofon-Symbol oder einem „Ich höre zu…“-Hinweis. audiostart sagt nur aus, dass die Aufnahme läuft, nicht dass Geräusche oder Sprache erkannt wurden. Dafür gibt es soundstart und speechstart.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $type Pflicht | string | Der Ereignisname, immer "audiostart". |
|
| $handler Pflicht | (event: Event) => void | Callback-Funktion, die beim Beginn der Audioaufnahme aufgerufen wird. Sie erhält ein einfaches Event-Objekt. |
|
| $options | boolean | AddEventListenerOptions | false | Optionale Listener-Optionen wie once oder signal. |
Rückgabewert
addEventListener gibt nichts zurück. Der Handler erhält ein Event mit type === "audiostart".Beispiele
Mikrofon-Status mit addEventListener anzeigen
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.lang = 'de-DE';
const status = document.querySelector('#status');
recognition.addEventListener('audiostart', () => {
status.textContent = '🎙️ Mikrofon aktiv – bitte sprechen…';
console.log('Audioaufnahme gestartet');
});
recognition.addEventListener('audioend', () => {
status.textContent = 'Aufnahme beendet';
});
document.querySelector('#mic').addEventListener('click', () => recognition.start());
Über die Eigenschaft onaudiostart zuweisen und wieder entfernen
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
recognition.onaudiostart = (event) => {
console.log(`Ereignis: ${event.type}`);
};
recognition.start();
// Später: Handler wieder entfernen
// recognition.onaudiostart = null;
Latenz zwischen start() und Aufnahmebeginn messen, Listener mit removeEventListener entfernen
const SR = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SR();
let t0 = 0;
const onAudioStart = () => {
const ms = Math.round(performance.now() - t0);
console.log(`Mikrofon nach ${ms} ms bereit`);
recognition.removeEventListener('audiostart', onAudioStart);
};
recognition.addEventListener('audiostart', onAudioStart);
recognition.addEventListener('error', (e) => console.error('Fehler:', e.error));
t0 = performance.now();
recognition.start();
// Wichtig · Fallstricke
- Browser-Unterstützung: In Chrome und Edge nur als
webkitSpeechRecognitionverfügbar, Safari ab 14.1, Firefox unterstützt die Erkennung bisher nicht. Prüfe deshalb immer vorher mitwindow.SpeechRecognition || window.webkitSpeechRecognition, ob die API da ist. - Berechtigung:
audiostartkommt erst, nachdem der Benutzer den Mikrofonzugriff erlaubt hat. Lehnt er ab, kommt keinaudiostart, sondern einerror-Ereignis miterror === "not-allowed"und danachend. - Sicherer Kontext: Die API funktioniert nur über HTTPS oder
localhost. - Datenschutz: In Chrome wird das Audio zur Erkennung an Google-Server geschickt. Weise die Benutzer darauf hin.
audiostartheißt nicht, dass Sprache erkannt wurde. Für die Erkennung von Sprache verwendespeechstart.- Wird
onaudiostartneu zugewiesen, überschreibt das den alten Handler. MitaddEventListenerkannst du dagegen mehrere Handler registrieren.