Start · Sprachen · JavaScript · Referenz · SpeechRecognition: audiostart

SpeechRecognition: audiostart

Ereignis

Wird ausgelöst, sobald der Browser beginnt, Audio vom Mikrofon für die Spracherkennung aufzunehmen.

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

Signatur

recognition.addEventListener("audiostart", handler)

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

Typ
void
Beschreibung
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());
Audioaufnahme gestartet

Ü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;
Ereignis: audiostart

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();
Mikrofon nach 312 ms bereit

// Wichtig · Fallstricke

  • Browser-Unterstützung: In Chrome und Edge nur als webkitSpeechRecognition verfügbar, Safari ab 14.1, Firefox unterstützt die Erkennung bisher nicht. Prüfe deshalb immer vorher mit window.SpeechRecognition || window.webkitSpeechRecognition, ob die API da ist.
  • Berechtigung: audiostart kommt erst, nachdem der Benutzer den Mikrofonzugriff erlaubt hat. Lehnt er ab, kommt kein audiostart, sondern ein error-Ereignis mit error === "not-allowed" und danach end.
  • 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.
  • audiostart heißt nicht, dass Sprache erkannt wurde. Für die Erkennung von Sprache verwende speechstart.
  • Wird onaudiostart neu zugewiesen, überschreibt das den alten Handler. Mit addEventListener kannst du dagegen mehrere Handler registrieren.