Files
LiveFlow/app/static/index.html
T
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

55 lines
1.9 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LiveFlow — Transcription de réunions</title>
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ctext y='.9em' font-size='90'%3E%F0%9F%8E%99%EF%B8%8F%3C/text%3E%3C/svg%3E">
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>🎙️ LiveFlow</h1>
<span id="status" class="badge idle">Prêt</span>
</header>
<div class="layout">
<aside>
<h2>Réunions</h2>
<ul id="meeting-list"></ul>
</aside>
<main>
<section class="controls">
<input id="title" type="text" placeholder="Titre de la réunion (optionnel)">
<button id="record-btn" class="record">● Démarrer</button>
<span id="timer">00:00</span>
<label id="diarization-toggle" class="toggle" title="Identifier les locuteurs">
<input type="checkbox" id="diarization-cb">
<span>👥 Locuteurs</span>
</label>
</section>
<section id="transcript-panel">
<div class="panel-head">
<h2 id="transcript-title">Transcription</h2>
<div id="export-bar" class="hidden">
<button id="copy-btn" title="Copier le texte">📋 Copier</button>
<a id="export-txt" download>TXT</a>
<a id="export-md" download>MD</a>
<a id="export-srt" download>SRT</a>
<a id="export-json" download>JSON</a>
<button id="delete-btn" title="Supprimer la réunion">🗑️</button>
</div>
</div>
<div id="transcript">
<p class="placeholder">Appuyez sur « Démarrer » et parlez : le texte apparaît ici au fil de l'eau.</p>
</div>
</section>
</main>
</div>
<script src="app.js"></script>
</body>
</html>