From a343c90340ba2873bd331f1d8aa0c9ecd5652801 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Fri, 12 Jun 2026 16:23:38 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20configurer=20le=20nombre=20max=20de=20l?= =?UTF-8?q?ocuteurs=20via=20DIARIZATION=5FMAX=5FSPEAKERS=20(d=C3=A9faut=20?= =?UTF-8?q?8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 3 +++ app/main.py | 2 ++ docker-compose.yml | 1 + task.md | 3 +++ 4 files changed, 9 insertions(+) diff --git a/.env.example b/.env.example index cec5761..da8ccc8 100644 --- a/.env.example +++ b/.env.example @@ -19,3 +19,6 @@ DIARIZATION=off # Seuil de similarité cosinus pour regrouper deux segments au même locuteur. # Plus bas = plus permissif (risque de fusion), plus haut = plus strict (risque de split). DIARIZATION_THRESHOLD=0.70 + +# Nombre maximum de locuteurs à identifier (défaut : 8) pour éviter les faux positifs. +DIARIZATION_MAX_SPEAKERS=8 diff --git a/app/main.py b/app/main.py index f3f30fd..b0ba89b 100644 --- a/app/main.py +++ b/app/main.py @@ -21,6 +21,7 @@ ASR_API_KEY = os.environ.get("ASR_API_KEY", "sk-local") ASR_LANGUAGE = os.environ.get("ASR_LANGUAGE", "").strip() DIARIZATION = os.environ.get("DIARIZATION", "off").strip().lower() == "on" DIARIZATION_THRESHOLD = float(os.environ.get("DIARIZATION_THRESHOLD", "0.70")) +DIARIZATION_MAX_SPEAKERS = int(os.environ.get("DIARIZATION_MAX_SPEAKERS", "8")) db: aiosqlite.Connection | None = None http: httpx.AsyncClient | None = None @@ -149,6 +150,7 @@ async def ws_transcribe(ws: WebSocket): diarizer = SpeakerDiarizer( model=embedding_model, threshold=DIARIZATION_THRESHOLD, + max_speakers=DIARIZATION_MAX_SPEAKERS, ) while True: diff --git a/docker-compose.yml b/docker-compose.yml index 96dec93..1f43df3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,6 +16,7 @@ services: # Diarisation des locuteurs (off par défaut pour rétrocompatibilité) - DIARIZATION=${DIARIZATION:-off} - DIARIZATION_THRESHOLD=${DIARIZATION_THRESHOLD:-0.70} + - DIARIZATION_MAX_SPEAKERS=${DIARIZATION_MAX_SPEAKERS:-8} volumes: - liveflow-data:/data depends_on: diff --git a/task.md b/task.md index 0bc1fd7..77d5ec8 100644 --- a/task.md +++ b/task.md @@ -19,6 +19,8 @@ Vérification de la cohérence de tous les fichiers (backend et frontend) et tes - [x] Modifier `docker-compose.yml` — passer les variables d'environnement de diarisation - [x] Vérification de la cohérence de tous les fichiers et validation - [x] Correction de tout bug ou problème détecté +- [x] Rendre configurable le nombre maximal de locuteurs (DIARIZATION_MAX_SPEAKERS, défaut 8) dans main.py, .env.example et docker-compose.yml + ## Progress Log - Création du module `diarizer.py` pour l'extraction des embeddings et le clustering. @@ -28,3 +30,4 @@ Vérification de la cohérence de tous les fichiers (backend et frontend) et tes - Validation et commit des modifications pour le sélecteur de micro et la diarisation. - Amélioration du frontend pour rafraîchir les noms des micros après autorisation d'accès, commit et push sur main. - Correction de l'affichage de la liste des micros : demande initiale d'autorisation au chargement de la page et filtrage des périphériques sans identifiant. +- Ajout de la variable d'environnement DIARIZATION_MAX_SPEAKERS (défaut 8) et intégration dans l'instanciation de SpeakerDiarizer.