Start · Sprachen · JavaScript · Referenz · MediaTrackSettings.noiseSuppression

MediaTrackSettings.noiseSuppression

Eigenschaft

Boolescher Wert, der angibt, ob die Rauschunterdrückung für einen Audiotrack tatsächlich aktiv ist.

seit JavaScript Baseline: alle modernen Browser (Chrome, Edge, Fir Kategorie: webapi

Signatur

MediaTrackSettings.noiseSuppression

Beschreibung

Die Eigenschaft noiseSuppression des Wörterbuchs MediaTrackSettings gibt an, ob die Rauschunterdrückung für einen Audio-MediaStreamTrack gerade tatsächlich aktiv ist. Bei eingeschalteter Rauschunterdrückung filtert der Browser bzw. das Betriebssystem gleichmäßige Hintergrundgeräusche wie Lüfterrauschen, Tastaturklappern oder Verkehrslärm aus dem Mikrofonsignal heraus.

Den Wert erhältst du über MediaStreamTrack.getSettings(). Während du mit MediaTrackConstraints.noiseSuppression nur einen Wunsch äußerst (z. B. in getUserMedia() oder applyConstraints()), zeigt MediaTrackSettings.noiseSuppression den Zustand, den der Browser am Ende wirklich eingestellt hat. Er kann also von deiner Anforderung abweichen.

Typische Einsatzfälle:

  • Videokonferenzen und Sprachchat: Hier ist die Rauschunterdrückung meistens erwünscht und in der Regel schon standardmäßig aktiv.
  • Musik- und Podcast-Aufnahmen: Die Unterdrückung kann Obertöne, leise Passagen oder Instrumente verfälschen. Deshalb schaltet man sie oft ab und prüft danach mit getSettings(), ob das Abschalten geklappt hat.
  • Diagnose- und Einstellungsdialoge: Du zeigst den Nutzern an, welche Audioverarbeitung gerade aktiv ist.

Die Eigenschaft gibt es nur bei Audiotracks. Bei Videotracks fehlt sie im zurückgegebenen Objekt, ihr Wert ist dort also undefined.

Rückgabewert

Typ
boolean | undefined
Beschreibung
true, wenn die Rauschunterdrückung aktiv ist, sonst false. undefined, wenn der Track kein Audiotrack ist oder der Browser die Einstellung nicht meldet.

Beispiele

Aktuellen Zustand der Rauschunterdrückung auslesen

const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const [audioTrack] = stream.getAudioTracks();

const { noiseSuppression } = audioTrack.getSettings();
console.log(`Rauschunterdrückung aktiv: ${noiseSuppression}`);
Rauschunterdrückung aktiv: true

Für Musikaufnahmen abschalten und Ergebnis prüfen

const stream = await navigator.mediaDevices.getUserMedia({
  audio: {
    noiseSuppression: false,
    echoCancellation: false,
    autoGainControl: false
  }
});

const [track] = stream.getAudioTracks();
const settings = track.getSettings();

if (settings.noiseSuppression) {
  console.warn('Browser hat die Rauschunterdrückung nicht deaktiviert.');
} else {
  console.log('Rohsignal ohne Rauschunterdrückung – bereit für die Aufnahme.');
}
Rohsignal ohne Rauschunterdrückung – bereit für die Aufnahme.

Zur Laufzeit per Schalter umstellen

const toggleNoiseSuppression = async (track, enabled) => {
  // Vorher prüfen, ob die Einstellung überhaupt unterstützt wird
  const supported = navigator.mediaDevices.getSupportedConstraints();
  if (!supported.noiseSuppression) {
    console.log('noiseSuppression wird nicht unterstützt.');
    return;
  }

  try {
    await track.applyConstraints({ noiseSuppression: enabled });
  } catch (err) {
    console.error('Einschränkung konnte nicht angewendet werden:', err.name);
  }

  console.log('Neuer Zustand:', track.getSettings().noiseSuppression);
};

const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
await toggleNoiseSuppression(stream.getAudioTracks()[0], false);
Neuer Zustand: false

// Wichtig · Fallstricke

  • Wunsch und tatsächlicher Wert sind zweierlei: Die Einschränkung noiseSuppression: false ist nur eine Bitte an den Browser. Den tatsächlichen Zustand liefert erst getSettings(). Einige Browser oder Plattformen (z. B. manche mobilen Geräte oder eine systemweite Audioverarbeitung) ignorieren die Anforderung.
  • Unterstützung vorher prüfen: Mit navigator.mediaDevices.getSupportedConstraints().noiseSuppression stellst du fest, ob der Browser die Einstellung kennt.
  • Nicht bei jedem Track vorhanden: Bei Videotracks und bei Tracks aus captureStream() oder der Web Audio API fehlt die Eigenschaft oft. Prüfe deshalb auf undefined.
  • Zusammenspiel mit anderen Filtern: echoCancellation und autoGainControl beeinflussen das Signal ebenfalls. Wer ein unverfälschtes Signal braucht, sollte alle drei abschalten.
  • Sichere Umgebung nötig: getUserMedia() funktioniert nur in einem sicheren Kontext (HTTPS oder localhost) und nachdem die Nutzer den Mikrofonzugriff erlaubt haben.
  • Qualität der Unterdrückung: Wie gut die Rauschunterdrückung arbeitet, hängt von Browser und Betriebssystem ab und lässt sich nicht fein regeln – die Eigenschaft ist nur ein Ein/Aus-Schalter.