fix return value and use requestor to embed description instead of passing embeddings

This commit is contained in:
Josh Hawkins 2025-05-26 10:01:50 -05:00
parent 43a3943c50
commit 8cf1e1cdf1
2 changed files with 9 additions and 11 deletions

View File

@ -9,6 +9,7 @@ from typing import Optional
from faster_whisper import WhisperModel from faster_whisper import WhisperModel
from peewee import DoesNotExist from peewee import DoesNotExist
from frigate.comms.embeddings_updater import EmbeddingsRequestEnum
from frigate.comms.inter_process import InterProcessRequestor from frigate.comms.inter_process import InterProcessRequestor
from frigate.config import FrigateConfig from frigate.config import FrigateConfig
from frigate.const import ( from frigate.const import (
@ -17,7 +18,6 @@ from frigate.const import (
UPDATE_EVENT_DESCRIPTION, UPDATE_EVENT_DESCRIPTION,
) )
from frigate.data_processing.types import PostProcessDataEnum from frigate.data_processing.types import PostProcessDataEnum
from frigate.embeddings.embeddings import Embeddings
from frigate.types import TrackedObjectUpdateTypesEnum from frigate.types import TrackedObjectUpdateTypesEnum
from frigate.util.audio import get_audio_from_recording from frigate.util.audio import get_audio_from_recording
@ -33,12 +33,10 @@ class AudioTranscriptionPostProcessor(PostProcessorApi):
config: FrigateConfig, config: FrigateConfig,
requestor: InterProcessRequestor, requestor: InterProcessRequestor,
metrics: DataProcessorMetrics, metrics: DataProcessorMetrics,
embeddings: Embeddings,
): ):
super().__init__(config, metrics, None) super().__init__(config, metrics, None)
self.config = config self.config = config
self.requestor = requestor self.requestor = requestor
self.embeddings = embeddings
self.recognizer = None self.recognizer = None
self.transcription_lock = threading.Lock() self.transcription_lock = threading.Lock()
self.transcription_thread = None self.transcription_thread = None
@ -130,8 +128,10 @@ class AudioTranscriptionPostProcessor(PostProcessorApi):
) )
# Embed the description # Embed the description
if self.config.semantic_search.enabled: self.requestor.send_data(
self.embeddings.embed_description(event_id, transcription) EmbeddingsRequestEnum.embed_description.value,
{"id": event_id, "description": transcription},
)
except DoesNotExist: except DoesNotExist:
logger.debug("No recording found for audio transcription post-processing") logger.debug("No recording found for audio transcription post-processing")
@ -190,7 +190,7 @@ class AudioTranscriptionPostProcessor(PostProcessorApi):
self.transcription_running = False self.transcription_running = False
self.transcription_thread = None self.transcription_thread = None
def handle_request(self, topic: str, request_data: dict[str, any]) -> bool | None: def handle_request(self, topic: str, request_data: dict[str, any]) -> str | None:
if topic == "transcribe_audio": if topic == "transcribe_audio":
event = request_data["event"] event = request_data["event"]
@ -199,7 +199,7 @@ class AudioTranscriptionPostProcessor(PostProcessorApi):
logger.warning( logger.warning(
"Audio transcription for a speech event is already running." "Audio transcription for a speech event is already running."
) )
return False return "in_progress"
# Mark as running and start the thread # Mark as running and start the thread
self.transcription_running = True self.transcription_running = True
@ -207,6 +207,6 @@ class AudioTranscriptionPostProcessor(PostProcessorApi):
target=self._transcription_wrapper, args=(event,), daemon=True target=self._transcription_wrapper, args=(event,), daemon=True
) )
self.transcription_thread.start() self.transcription_thread.start()
return True return "started"
return None return None

View File

@ -186,9 +186,7 @@ class EmbeddingMaintainer(threading.Thread):
] ]
if audio_transcription_cameras: if audio_transcription_cameras:
self.post_processors.append( self.post_processors.append(
AudioTranscriptionPostProcessor( AudioTranscriptionPostProcessor(self.config, self.requestor, metrics)
self.config, self.requestor, metrics, self.embeddings
)
) )
self.stop_event = stop_event self.stop_event = stop_event