(audio) assign users to diarization speaker results using VAD

Introduce a new user assignment mechanism to for more friendly output
than the current (SPEAKER_0, SPEAKER_1, ...). Use the VAD metadata to
compare speech intervals with those returned by WhisperX. User with the
highest overlap score above a defined threshold is assigned to each segment.
This method allows for multi-speaker scenarios for a single account.
This commit is contained in:
leo
2026-05-07 11:26:59 +02:00
committed by aleb_the_flash
parent f8937fc0a1
commit 1612d8b2d4
9 changed files with 929 additions and 6 deletions
+1
View File
@@ -363,6 +363,7 @@ class RoomViewSet(
):
try:
MetadataCollectorService().start(recording)
logger.debug("Started MetadataCollectorService")
except MetadataCollectorException:
logger.warning("Failed to start MetadataCollectorService")
@@ -213,7 +213,7 @@ class NotificationService:
payload = {
"owner_id": str(owner_access.user.id),
"recording_filename": recording.key,
"metadata_filename": metadata_filename, # For future use
"metadata_filename": metadata_filename,
"email": owner_access.user.email,
"sub": owner_access.user.sub,
"room": recording.room.name,
@@ -222,9 +222,7 @@ class NotificationService:
"download_link": f"{get_recording_download_base_url()}/{recording.id}",
"context_language": owner_access.user.language,
"recording_start_at": (started_at.isoformat() if started_at else None),
"recording_end_at": (
ended_at.isoformat() if ended_at else None
), # For future use
"recording_end_at": (ended_at.isoformat() if ended_at else None),
}
headers = {