// diarize.mjs — diarización por turnos 100% en el navegador (ONNX). // pyannote-segmentation-3.0 (fronteras habla/silencio) → wespeaker resnet34 (embeddings) → // clustering greedy por coseno con filtrado de singletons. Devuelve turnos etiquetados por hablante. // // LÍMITE HONESTO: separar voces SIMULTÁNEAS en un único canal mono NO es fiable (el hablante más // fuerte domina el embedding). Eso se resuelve en la UX con una captura por interlocutor. Aquí // resolvemos el 95% real: quién habló en cada turno. // // // LICENCIAS (auditado 2026-09-01) — ambos modelos permiten uso comercial, pero el segundo obliga: // · onnx-community/pyannote-segmentation-3.0 MIT // · onnx-community/wespeaker-voxceleb-resnet34-LM CC BY 4.0 → EXIGE ATRIBUCION VISIBLE. // El credito vive en el