From 2ad3db251f5126d6f1057f62a843b1c3e7e77a7e Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Thu, 26 Mar 2026 10:46:23 -0500 Subject: [PATCH] populate and sort global audio filters for all audio labels --- frigate/config/config.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/frigate/config/config.py b/frigate/config/config.py index d1b037509..8c90832d1 100644 --- a/frigate/config/config.py +++ b/frigate/config/config.py @@ -614,6 +614,21 @@ class FrigateConfig(FrigateBaseModel): if self.ffmpeg.hwaccel_args == "auto": self.ffmpeg.hwaccel_args = auto_detect_hwaccel() + # Populate global audio filters for all audio labels + all_audio_labels = { + label + for label in load_labels("/audio-labelmap.txt", prefill=521).values() + if label + } + + if self.audio.filters is None: + self.audio.filters = {} + + for key in sorted(all_audio_labels - self.audio.filters.keys()): + self.audio.filters[key] = AudioFilterConfig() + + self.audio.filters = dict(sorted(self.audio.filters.items())) + # Global config to propagate down to camera level global_config = self.model_dump( include={ @@ -672,12 +687,6 @@ class FrigateConfig(FrigateBaseModel): detector_config.model = model self.detectors[key] = detector_config - all_audio_labels = { - label - for label in load_labels("/audio-labelmap.txt", prefill=521).values() - if label - } - for name, camera in self.cameras.items(): modified_global_config = global_config.copy() @@ -801,11 +810,13 @@ class FrigateConfig(FrigateBaseModel): if camera_config.audio.filters is None: camera_config.audio.filters = {} - audio_keys = all_audio_labels - audio_keys = audio_keys - camera_config.audio.filters.keys() - for key in audio_keys: + for key in sorted(all_audio_labels - camera_config.audio.filters.keys()): camera_config.audio.filters[key] = AudioFilterConfig() + camera_config.audio.filters = dict( + sorted(camera_config.audio.filters.items()) + ) + # Add default filters object_keys = camera_config.objects.track if camera_config.objects.filters is None: