mirror of
https://github.com/R0m1k3/LiveFlow.git
synced 2026-10-12 01:37:29 +02:00
- diarizer.py (ECAPA-TDNN + clustering incrémental) repris tel quel de main - Hooks dans le pipeline : colonne speaker, identification par segment dans un thread, locuteur dans l'interface (étiquettes colorées) et les exports - Pause/reprise : bouton ⏸, le client coupe l'envoi, le serveur clôt le segment en cours - Case « Locuteurs » pour désactiver la diarisation par réunion - DIARIZATION=on par défaut dans les compose, PyTorch CPU dans l'image https://claude.ai/code/session_01YHMp3EKzr4s6o8w1ygxuUe
60 lines
2.2 KiB
HTML
60 lines
2.2 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>
|
|
<button id="logout-btn" title="Se déconnecter">Déconnexion</button>
|
|
</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)">
|
|
<select id="mic-select" title="Choix du micro">
|
|
<option value="">Micro par défaut</option>
|
|
</select>
|
|
<button id="record-btn" class="record">● Démarrer</button>
|
|
<button id="pause-btn" class="pause hidden">⏸ Pause</button>
|
|
<span id="timer">00:00</span>
|
|
<div id="vu" title="Niveau du micro"><div id="vu-bar"></div></div>
|
|
<label id="diarization-toggle" class="toggle" title="Identifier qui parle (Locuteur 1, 2...)">
|
|
<input type="checkbox" id="diarization-cb" checked> Locuteurs
|
|
</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>
|