fix(voice): default noise suppression to standard

This commit is contained in:
Hampus authored and GitHub committed 2026-08-28 20:43:22 +02:00
1 parent 53ddca725e
commit af3ad02962
2 files changed
+20 -6

No files matched your search

@@ -51,6 +51,8 @@ const MAX_VOICE_PROCESSING_DEVICE_OVERRIDES = 16;
const VIDEO_FRAME_RATE_MIN = 15; const VIDEO_FRAME_RATE_MIN = 15;
const VIDEO_FRAME_RATE_MAX = 120; const VIDEO_FRAME_RATE_MAX = 120;
const VIDEO_FRAME_RATE_DEFAULT = 30; const VIDEO_FRAME_RATE_DEFAULT = 30;
const DEFAULT_BROWSER_NOISE_SUPPRESSION = true;
const DEFAULT_DEEP_FILTER_NOISE_SUPPRESSION = false;
export const CAMERA_EFFECT_STRENGTH_MIN = 0; export const CAMERA_EFFECT_STRENGTH_MIN = 0;
export const CAMERA_EFFECT_STRENGTH_MAX = 100; export const CAMERA_EFFECT_STRENGTH_MAX = 100;
export const CAMERA_EFFECT_STRENGTH_DEFAULT = 50; export const CAMERA_EFFECT_STRENGTH_DEFAULT = 50;
@@ -257,6 +259,16 @@ function applyOutputVolumeRecalibrationMigrationV1(parsed: Record<string, unknow
return true; return true;
} }
function applyNoiseSuppressionStandardDefaultMigrationV1(parsed: Record<string, unknown>): boolean {
if (parsed.noiseSuppressionStandardDefaultMigratedV1 === true) {
return false;
}
parsed.noiseSuppression = DEFAULT_BROWSER_NOISE_SUPPRESSION;
parsed.deepFilterNoiseSuppressionPrefV2 = DEFAULT_DEEP_FILTER_NOISE_SUPPRESSION;
parsed.noiseSuppressionStandardDefaultMigratedV1 = true;
return true;
}
function validateBackgroundImages(images: unknown): Array<BackgroundImage> { function validateBackgroundImages(images: unknown): Array<BackgroundImage> {
if (!Array.isArray(images)) return []; if (!Array.isArray(images)) return [];
const validated: Array<BackgroundImage> = []; const validated: Array<BackgroundImage> = [];
@@ -283,10 +295,11 @@ class VoiceSettings {
inputVolume = 100; inputVolume = 100;
outputVolume = 100; outputVolume = 100;
echoCancellation = true; echoCancellation = true;
noiseSuppression = true; noiseSuppression = DEFAULT_BROWSER_NOISE_SUPPRESSION;
autoGainControl = true; autoGainControl = true;
deepFilterNoiseSuppressionPrefV2 = true; deepFilterNoiseSuppressionPrefV2 = DEFAULT_DEEP_FILTER_NOISE_SUPPRESSION;
deepFilterNoiseSuppressionLevelPrefV2 = 80; deepFilterNoiseSuppressionLevelPrefV2 = 80;
noiseSuppressionStandardDefaultMigratedV1 = false;
voiceProcessingMode: VoiceProcessingMode = DEFAULT_VOICE_PROCESSING_MODE; voiceProcessingMode: VoiceProcessingMode = DEFAULT_VOICE_PROCESSING_MODE;
voiceProcessingModeByDeviceLabel: Record<string, VoiceProcessingMode> = {}; voiceProcessingModeByDeviceLabel: Record<string, VoiceProcessingMode> = {};
cameraResolution: CameraResolution = 'medium'; cameraResolution: CameraResolution = 'medium';
@@ -440,6 +453,7 @@ class VoiceSettings {
changed = applyScreenShareAudioDefaultOnMigrationV1(parsed) || changed; changed = applyScreenShareAudioDefaultOnMigrationV1(parsed) || changed;
changed = applyStreamingModeDefaultMigrationV1(parsed) || changed; changed = applyStreamingModeDefaultMigrationV1(parsed) || changed;
changed = applyOutputVolumeRecalibrationMigrationV1(parsed) || changed; changed = applyOutputVolumeRecalibrationMigrationV1(parsed) || changed;
changed = applyNoiseSuppressionStandardDefaultMigrationV1(parsed) || changed;
if (changed) { if (changed) {
AppStorage.setItem('VoiceSettings', JSON.stringify(parsed)); AppStorage.setItem('VoiceSettings', JSON.stringify(parsed));
} }
@@ -462,6 +476,7 @@ class VoiceSettings {
'autoGainControl', 'autoGainControl',
'deepFilterNoiseSuppressionPrefV2', 'deepFilterNoiseSuppressionPrefV2',
'deepFilterNoiseSuppressionLevelPrefV2', 'deepFilterNoiseSuppressionLevelPrefV2',
'noiseSuppressionStandardDefaultMigratedV1',
'voiceProcessingMode', 'voiceProcessingMode',
'voiceProcessingModeByDeviceLabel', 'voiceProcessingModeByDeviceLabel',
'cameraResolution', 'cameraResolution',
@@ -28,7 +28,6 @@ export interface ResolvedVoiceProcessing {
export const DEFAULT_VOICE_PROCESSING_MODE: VoiceProcessingMode = 'voice'; export const DEFAULT_VOICE_PROCESSING_MODE: VoiceProcessingMode = 'voice';
export const DEEP_FILTER_NOISE_REDUCTION_LEVEL_MIN = 0; export const DEEP_FILTER_NOISE_REDUCTION_LEVEL_MIN = 0;
export const DEEP_FILTER_NOISE_REDUCTION_LEVEL_MAX = 100; export const DEEP_FILTER_NOISE_REDUCTION_LEVEL_MAX = 100;
export const FOCUSED_VOICE_DEEP_FILTER_NOISE_REDUCTION_LEVEL = 100;
export function clampDeepFilterNoiseReductionLevel(level: number): number { export function clampDeepFilterNoiseReductionLevel(level: number): number {
if (!Number.isFinite(level)) { if (!Number.isFinite(level)) {
@@ -67,10 +66,10 @@ export function resolveVoiceProcessing(settings: VoiceProcessingSettingsLike): R
return { return {
mode: 'voice', mode: 'voice',
echoCancellation: true, echoCancellation: true,
browserNoiseSuppression: false, browserNoiseSuppression: true,
autoGainControl: settings.autoGainControl, autoGainControl: settings.autoGainControl,
deepFilter: true, deepFilter: false,
deepFilterNoiseReductionLevel: FOCUSED_VOICE_DEEP_FILTER_NOISE_REDUCTION_LEVEL, deepFilterNoiseReductionLevel: DEEP_FILTER_NOISE_REDUCTION_LEVEL_MIN,
contentHint: 'speech', contentHint: 'speech',
}; };
} }