Ce projet s'inscrit dans le cadre de l'édition 2025 du hackathon du Master Humanités Numériques de l'École Nationale des Chartes.
Porteur du projet : Baptiste Queuche
Contributeurs : Damien Conceicao, Maria Kirbasova, Marisol de Nazelle, Garance Raynaud, Manon Remot
Objectif : Détecter le temps de parole exact des personnes qui interviennent sur CNews, en identifiant précisément leur identité.
La pipeline traite des enregistrements audio de CNews pour :
- Découper les fichiers longs en segments gérables
- Identifier automatiquement les locuteurs (diarisation)
- Relier chaque segment de parole à une personne identifiée via des fichiers de présence
Les trois scripts s'exécutent dans cet ordre précis :
python decoupe_5_min.py
python pyannote_ssh.py
python correspondance_speaker_ssh.pycson_YYYY-MM-DD_HH-MM-SS.mp3
cson_YYYY-MM-DD_HH-MM-SS.wav
La date/heure dans le nom sert au recalage temporel
people-YYYY-MM-DD.csv
Format : colonnes ID, Debut, Fin (format datetime)
Rôle : Découpe chaque enregistrement CNews en segments de 5 minutes.
Ce qu'il fait :
- Parcourt tous les fichiers audio du dossier d'entrée
- Crée des segments de 5 min
- Note pour chaque segment : fichier d'origine + heure début/fin
Entrée : Fichiers cson_*.mp3/wav
Sortie : Segments + fichier récapitulatif
Rôle : Applique la diarisation automatique sur chaque segment de 5 min avec pyannote.audio.
Ce qu'il fait :
- Détecte les différentes voix et leurs périodes de parole
- Extrait les embeddings (empreintes vocales) de chaque locuteur
- Sauvegarde les résultats par segment
Techno : pyannote/speaker-diarization-3.1 (GPU si disponible)
Rôle : Recalage temporel + matching avec les personnes connues.
Ce qu'il fait :
- Recalage : timestamps relatifs → timeline absolue (via nom des fichiers)
- Matching : associe chaque parole au
Speaker_IDvia fichierpeople-YYYY-MM-DD.csv - Lissage : résolution des doublons (garde le locuteur le plus parlant)
- Agrégation : embeddings par personne + fichier récapitulatif global
Sortie finale :
df_total.csv: tous les segments avecstart,end,Speaker_ID,embeddingsknown_embeddings.json: embeddings par personne identifiéeunknown_embeddings.json: embeddings des inconnus
#To do
La pipeline produit un fichier CSV global prêt pour l'analyse du temps de parole par personne sur CNews :
| start | end | duration | Speaker_ID | embeddings |
|---|---|---|---|---|
| 2025-01-15 14:23:10 | 2025-01-15 14:23:45 | 35.2s | PERS001 | [0.12, -0.45, ...] |
voir fichier requirements.txt
Token HuggingFace requis (dans pyannote_ssh.py).





