Compare commits

...

3 Commits

Author SHA1 Message Date
Nicolas Mowen
b0f4fcd676 Improve GenAI metadata 2026-04-27 15:16:14 -06:00
Josh Hawkins
0de804892b end any in-progress audio events when audio detection is disabled
we already end in-progress audio events when we disable a camera, but this mirrors that logic for specifically disabling audio detection
2026-04-27 11:33:22 -05:00
Josh Hawkins
508f4509e1 ensure cleanup runs when an event end skips post-processing 2026-04-27 09:32:00 -05:00
3 changed files with 20 additions and 2 deletions

View File

@ -27,7 +27,7 @@ class ReviewMetadata(BaseModel):
)
title: str = Field(
max_length=80,
description="A short title characterizing what took place and where, under 10 words.",
description="Under 10 words. Name the apparent purpose or outcome of the activity together with the location involved. Do not narrate or list the sequence of actions step by step.",
)
scene: str = Field(
min_length=150,
@ -36,7 +36,7 @@ class ReviewMetadata(BaseModel):
)
shortSummary: str = Field(
min_length=70,
max_length=100,
max_length=120,
description="A brief 2-sentence summary of the scene, suitable for notifications.",
)
confidence: float = Field(

View File

@ -517,10 +517,16 @@ class EmbeddingMaintainer(threading.Thread):
try:
event: Event = Event.get(Event.id == event_id)
except DoesNotExist:
for processor in self.post_processors:
if isinstance(processor, ObjectDescriptionProcessor):
processor.cleanup_event(event_id)
continue
# Skip the event if not an object
if event.data.get("type") != "object":
for processor in self.post_processors:
if isinstance(processor, ObjectDescriptionProcessor):
processor.cleanup_event(event_id)
continue
# Extract valid thumbnail

View File

@ -205,6 +205,7 @@ class AudioEventMaintainer(threading.Thread):
self.transcription_thread.start()
self.was_enabled = camera.enabled
self.was_audio_enabled = camera.audio.enabled
def detect_audio(self, audio: np.ndarray) -> None:
if not self.camera_config.audio.enabled or self.stop_event.is_set():
@ -363,6 +364,17 @@ class AudioEventMaintainer(threading.Thread):
time.sleep(0.1)
continue
audio_enabled = self.camera_config.audio.enabled
if audio_enabled != self.was_audio_enabled:
if not audio_enabled:
self.logger.debug(
f"Disabling audio detections for {self.camera_config.name}, ending events"
)
self.requestor.send_data(
EXPIRE_AUDIO_ACTIVITY, self.camera_config.name
)
self.was_audio_enabled = audio_enabled
self.read_audio()
if self.audio_listener: