diff --git a/fluxer_app/src/features/voice/state/VoiceSettings.ts b/fluxer_app/src/features/voice/state/VoiceSettings.ts index afa9a6d2e..64dcb7c4e 100644 --- a/fluxer_app/src/features/voice/state/VoiceSettings.ts +++ b/fluxer_app/src/features/voice/state/VoiceSettings.ts @@ -51,6 +51,8 @@ const MAX_VOICE_PROCESSING_DEVICE_OVERRIDES = 16; const VIDEO_FRAME_RATE_MIN = 15; const VIDEO_FRAME_RATE_MAX = 120; 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_MAX = 100; export const CAMERA_EFFECT_STRENGTH_DEFAULT = 50; @@ -257,6 +259,16 @@ function applyOutputVolumeRecalibrationMigrationV1(parsed: Record): 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 { if (!Array.isArray(images)) return []; const validated: Array = []; @@ -283,10 +295,11 @@ class VoiceSettings { inputVolume = 100; outputVolume = 100; echoCancellation = true; - noiseSuppression = true; + noiseSuppression = DEFAULT_BROWSER_NOISE_SUPPRESSION; autoGainControl = true; - deepFilterNoiseSuppressionPrefV2 = true; + deepFilterNoiseSuppressionPrefV2 = DEFAULT_DEEP_FILTER_NOISE_SUPPRESSION; deepFilterNoiseSuppressionLevelPrefV2 = 80; + noiseSuppressionStandardDefaultMigratedV1 = false; voiceProcessingMode: VoiceProcessingMode = DEFAULT_VOICE_PROCESSING_MODE; voiceProcessingModeByDeviceLabel: Record = {}; cameraResolution: CameraResolution = 'medium'; @@ -440,6 +453,7 @@ class VoiceSettings { changed = applyScreenShareAudioDefaultOnMigrationV1(parsed) || changed; changed = applyStreamingModeDefaultMigrationV1(parsed) || changed; changed = applyOutputVolumeRecalibrationMigrationV1(parsed) || changed; + changed = applyNoiseSuppressionStandardDefaultMigrationV1(parsed) || changed; if (changed) { AppStorage.setItem('VoiceSettings', JSON.stringify(parsed)); } @@ -462,6 +476,7 @@ class VoiceSettings { 'autoGainControl', 'deepFilterNoiseSuppressionPrefV2', 'deepFilterNoiseSuppressionLevelPrefV2', + 'noiseSuppressionStandardDefaultMigratedV1', 'voiceProcessingMode', 'voiceProcessingModeByDeviceLabel', 'cameraResolution', diff --git a/fluxer_app/src/features/voice/utils/VoiceProcessingProfile.ts b/fluxer_app/src/features/voice/utils/VoiceProcessingProfile.ts index b3b258c82..462fac8ac 100644 --- a/fluxer_app/src/features/voice/utils/VoiceProcessingProfile.ts +++ b/fluxer_app/src/features/voice/utils/VoiceProcessingProfile.ts @@ -28,7 +28,6 @@ export interface ResolvedVoiceProcessing { export const DEFAULT_VOICE_PROCESSING_MODE: VoiceProcessingMode = 'voice'; export const DEEP_FILTER_NOISE_REDUCTION_LEVEL_MIN = 0; 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 { if (!Number.isFinite(level)) { @@ -67,10 +66,10 @@ export function resolveVoiceProcessing(settings: VoiceProcessingSettingsLike): R return { mode: 'voice', echoCancellation: true, - browserNoiseSuppression: false, + browserNoiseSuppression: true, autoGainControl: settings.autoGainControl, - deepFilter: true, - deepFilterNoiseReductionLevel: FOCUSED_VOICE_DEEP_FILTER_NOISE_REDUCTION_LEVEL, + deepFilter: false, + deepFilterNoiseReductionLevel: DEEP_FILTER_NOISE_REDUCTION_LEVEL_MIN, contentHint: 'speech', }; }