Signatur
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
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}`);
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.');
}
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);
// Wichtig · Fallstricke
- Wunsch und tatsächlicher Wert sind zweierlei: Die Einschränkung
noiseSuppression: falseist nur eine Bitte an den Browser. Den tatsächlichen Zustand liefert erstgetSettings(). 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().noiseSuppressionstellst 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 aufundefined. - Zusammenspiel mit anderen Filtern:
echoCancellationundautoGainControlbeeinflussen 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 oderlocalhost) 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.