Signatur
Beschreibung
Die Eigenschaft noiseSuppression gehört zum Wörterbuch MediaTrackSupportedConstraints, das von navigator.mediaDevices.getSupportedConstraints() zurückgegeben wird. Sie ist nur dann im Objekt vorhanden (und hat dann den Wert true), wenn der User-Agent die Constraint noiseSuppression für Audiospuren kennt. Wird sie nicht unterstützt, fehlt die Eigenschaft einfach, beim Zugriff erhältst du also undefined.
Mit der Constraint noiseSuppression legst du fest, ob der Browser Hintergrundgeräusche aus dem Mikrofonsignal herausfiltern soll, zum Beispiel Lüfter, Tastaturklappern oder Straßenlärm. Für Sprachanwendungen wie Videokonferenzen, Sprachaufnahmen oder WebRTC-Anrufe ist das meistens gewünscht. Bei Musikaufnahmen oder professionellem Audio willst du sie dagegen oft ausschalten, damit das Signal unverfälscht bleibt.
Prüfe die Eigenschaft vor dem Aufruf von getUserMedia() oder MediaStreamTrack.applyConstraints(). So kannst du der Nutzerin z. B. einen Schalter für die Rauschunterdrückung nur dann anzeigen, wenn der Browser die Einstellung überhaupt kennt. Wichtig: Die Eigenschaft sagt nur, dass der Browser die Constraint versteht. Ob das konkrete Gerät sie umsetzen kann, verraten erst MediaStreamTrack.getCapabilities() und getSettings().
Rückgabewert
true, wenn der Browser die Constraint noiseSuppression unterstützt. Ohne Unterstützung fehlt die Eigenschaft, der Zugriff liefert dann undefined. Den Wert false gibt es in der Praxis nicht.Beispiele
Unterstützung der Rauschunterdrückung prüfen
const supported = navigator.mediaDevices.getSupportedConstraints();
if (supported.noiseSuppression) {
console.log('Rauschunterdrückung wird unterstützt.');
} else {
console.log('Rauschunterdrückung wird nicht unterstützt.');
}
Mikrofon mit Rauschunterdrückung für einen Sprachanruf öffnen
const startMic = async () => {
const supported = navigator.mediaDevices.getSupportedConstraints();
const audio = supported.noiseSuppression
? { noiseSuppression: true, echoCancellation: true }
: true;
const stream = await navigator.mediaDevices.getUserMedia({ audio });
const [track] = stream.getAudioTracks();
console.log('Aktive Einstellung:', track.getSettings().noiseSuppression);
return stream;
};
startMic().catch((err) => console.error('Zugriff fehlgeschlagen:', err.name));
Rauschunterdrückung per Schalter zur Laufzeit ändern
// <input type="checkbox" id="ns-toggle"> im HTML vorausgesetzt
const toggle = document.querySelector('#ns-toggle');
const supported = navigator.mediaDevices.getSupportedConstraints();
if (!supported.noiseSuppression) {
toggle.disabled = true;
toggle.title = 'Vom Browser nicht unterstützt';
}
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const [track] = stream.getAudioTracks();
toggle.addEventListener('change', async () => {
try {
await track.applyConstraints({ noiseSuppression: toggle.checked });
console.log('Neu:', track.getSettings().noiseSuppression);
} catch (err) {
console.error('Constraint abgelehnt:', err.name);
}
});
// Wichtig · Fallstricke
- Nicht auf
falseprüfen: Fehlt die Unterstützung, ist die Eigenschaft nicht vorhanden (undefined) und nichtfalse. Prüfe daher auf Wahrheitswert (if (supported.noiseSuppression)) oder mit'noiseSuppression' in supported. - Browser-Unterstützung ist nicht dasselbe wie Geräte-Unterstützung: Die Eigenschaft sagt nur, dass der Browser die Constraint kennt. Was ein bestimmtes Mikrofon tatsächlich kann, zeigt
track.getCapabilities().noiseSuppression. Welcher Wert gerade aktiv ist, zeigttrack.getSettings(). - Standardwert: Die meisten Browser schalten die Rauschunterdrückung bei
getUserMedia({ audio: true })von sich aus ein. Für Musik- oder Messaufnahmen solltest dunoiseSuppression: false(oft zusammen mitechoCancellation: falseundautoGainControl: false) ausdrücklich setzen. - Sicherer Kontext:
navigator.mediaDevicesgibt es nur über HTTPS oderlocalhost. In unsicheren Kontexten ist esundefined. - Qualität je nach Browser: Wie gut die Rauschunterdrückung arbeitet, hängt vom Browser und Betriebssystem ab. In Safari und auf manchen mobilen Plattformen lässt sie sich teilweise nicht zuverlässig abschalten.