Commit Graph
22 Commits
Author SHA1 Message Date
Michael e59bdd1feb fix: sécuriser startRecording, stopRecording et utiliser la contrainte de micro ideal 2026-06-12 16:32:39 +02:00
Michael dd31090d3f fix: gestion des contextes non sécurisés, erreurs websocket et rechargement liste des réunions 2026-06-12 16:27:34 +02:00
Michael a343c90340 feat: configurer le nombre max de locuteurs via DIARIZATION_MAX_SPEAKERS (défaut 8) 2026-06-12 16:23:38 +02:00
Michael 8dbc657d7d fix: correction de la détection et du listing des micros au chargement 2026-06-12 16:21:13 +02:00
Michael a85051c4dd docs: ajout du fichier de suivi task.md 2026-06-12 16:19:09 +02:00
Michael d46ba02b39 fix: rafraîchir les étiquettes des micros après autorisation getUserMedia 2026-06-12 16:18:08 +02:00
Michael 86f94fc22c feat: sélecteur de microphone dans l'interface
- Select dropdown peuplé via enumerateDevices() au chargement
- Mise à jour automatique quand un périphérique est branché/débranché (devicechange)
- Le deviceId sélectionné est passé à getUserMedia() via exact constraint
- Option 'Micro par défaut' pour le comportement d'origine
2026-06-12 16:15:51 +02:00
Michael 284011428a feat: diarisation des locuteurs en temps réel (ECAPA-TDNN + clustering incrémental)
- Nouveau module diarizer.py : EmbeddingModel (SpeechBrain ECAPA-TDNN) + SpeakerDiarizer par session
- Backend : chargement modèle au lifespan, migration DB (colonne speaker), worker enrichi, exports avec locuteur
- Frontend : badges locuteurs colorés (8 couleurs), toggle activation, copie avec [Locuteur X]
- Config : DIARIZATION=on/off, DIARIZATION_THRESHOLD=0.70, PyTorch CPU-only dans Dockerfile
- Rétrocompatible : désactivé par défaut (DIARIZATION=off)
2026-06-12 16:03:43 +02:00
Michael ca936255e8 chore: update .gitignore to exclude non-project dirs 2026-06-12 15:49:58 +02:00
Claude 80176e9f82 ASR : repli automatique sans le paramètre language refusé par certains moteurs
vLLM avec Qwen3-ASR peut répondre 400 quand 'language' est fourni. L'app
retente alors en détection automatique, et les erreurs ASR remontent
désormais avec le corps de la réponse pour faciliter le diagnostic.
Ajout du favicon (404 dans la console).

https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-12 09:33:40 +00:00
Claude b8bef6327f Retrait de Watchtower : mise à jour via docker compose pull
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-12 09:23:15 +00:00
Claude de817e189e Mises à jour automatiques : image publiée sur ghcr.io via GitHub Actions + Watchtower
- Workflow build-image.yml : construit et pousse ghcr.io/r0m1k3/liveflow à
  chaque modification de app/
- Compose Unraid : image préconstruite au lieu du build local, service
  watchtower scopé par label pour redéployer l'app automatiquement

https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-12 09:04:07 +00:00
Claude 16f41d6303 Option LIVEFLOW_TLS=off pour servir en HTTP derrière un reverse proxy existant
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-12 09:01:26 +00:00
Claude 71ee13f845 Frontend : message d'erreur micro détaillé selon la cause (NotReadableError, etc.)
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-12 09:00:15 +00:00
Claude 8ba9cfb234 ASR : limite --max-model-len à 8192 pour tenir dans le cache KV du GPU
Par défaut vLLM réserve le contexte max du modèle (65k tokens = 7 Go de KV
cache), ce qui dépasse la mémoire restante après chargement des poids sur
les GPU modestes. 8192 tokens sont très largement suffisants pour des
segments audio de 25 s.

https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-12 07:06:10 +00:00
Claude 3c83b67538 Suppression de Caddy : l'app sert directement le HTTPS auto-signé
Un conteneur de moins. Le HTTPS reste nécessaire pour l'accès micro
(getUserMedia) depuis un autre appareil : certificat auto-signé généré au
démarrage pour LIVEFLOW_HOST, servi par uvicorn.

https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-11 22:52:41 +00:00
Claude 0101452bc1 Correction ERR_SSL_PROTOCOL_ERROR : certificat généré pour l'adresse du serveur
Un site catch-all :443 avec tls internal ne génère aucun certificat, ce qui
fait échouer la négociation TLS. Le Caddyfile prend désormais l'adresse via
LIVEFLOW_HOST (+ default_sni pour les connexions par IP, sans SNI).

https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-11 22:42:21 +00:00
Claude b986b23693 Unraid : suppression du port HTTP 8088 (conflit fréquent, redirection inutile)
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-11 22:37:18 +00:00
Claude a2f7398076 Ajout du docker-compose dédié Unraid
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-11 21:54:31 +00:00
Claude a8517c3597 Implémentation complète de LiveFlow (proposition 2, moteur Qwen3-ASR)
- docker-compose : Caddy (HTTPS local) + app FastAPI + Qwen3-ASR via vLLM (GPU)
- Backend : WebSocket audio, segmentation VAD (WebRTC), appel ASR compatible
  OpenAI, stockage SQLite, exports TXT/MD/SRT/JSON
- Frontend : capture micro (AudioWorklet, rééchantillonnage 16 kHz),
  transcription live, historique des réunions, copie et téléchargement
- README : démarrage, prérequis GPU, changement de moteur ASR

https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-11 16:28:17 +00:00
Claude 4fa5964988 Ajout du comparatif 2026 des moteurs ASR locaux (Qwen3-ASR, Parakeet, Whisper...)
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-11 16:20:34 +00:00
Claude b1551fe5f8 Ajout des 3 propositions d'architecture pour LiveFlow
https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
2026-06-11 16:17:17 +00:00