pyannote community-1 : la diarisation libre progresse sur les réunions, recule sur le corpus français
pyannote publie le successeur libre de speaker-diarization-3.1 : meilleure attribution des locuteurs, sortie « exclusive » prête à aligner sur une transcription, CPU suffisant. Sur le seul corpus francophone du tableau, le nouveau modèle fait pourtant moins bien que l'ancien.
speaker-diarization-community-1 est le successeur libre de speaker-diarization-3.1, l'un des pipelines de diarisation les plus téléchargés de Hugging Face. Il entre au classement Radar ce matin avec 5,4 M de téléchargements sur le mois et 2,8 k likes, d'après la fiche. La question pour un compte rendu de réunion en français n'est pas « est-il meilleur » mais « sur quel corpus ».
Ce que fait le pipeline
Il prend un fichier audio mono à 16 kHz (le stéréo est moyenné, les autres fréquences sont rééchantillonnées) et renvoie, pour chaque segment, un locuteur anonyme et ses bornes de temps. On peut fixer le nombre de locuteurs (num_speakers=2) ou l'encadrer (min_speakers, max_speakers). Il tourne sur CPU par défaut ; le GPU est un simple pipeline.to("cuda"). La fiche annonce quatre changements par rapport à la 3.1 : une meilleure attribution et un meilleur comptage des locuteurs, une sortie « exclusive » où aucun segment ne se chevauche, un usage hors ligne simplifié après clonage du dépôt, et un hébergement optionnel chez pyannoteAI.
La sortie exclusive est le point utile pour nous. Une transcription (Whisper, parakeet) donne des mots horodatés ; une diarisation classique donne des plages qui se recouvrent quand deux personnes parlent en même temps. Avec output.exclusive_speaker_diarization, chaque instant n'a qu'un locuteur, ce qui permet d'aligner les deux listes par simple comparaison d'horodatages, sans règle d'arbitrage à écrire. La fiche précise que cette fonction est « rétroportée » de leur modèle commercial precision-2.
Ce que la fiche annonce et ce qu'il faut vérifier
La licence passe de MIT (3.1) à CC-BY-4.0 : attribution obligatoire, usage commercial permis. Le dépôt reste à accès restreint (« gated ») : il faut un compte Hugging Face, accepter les conditions et fournir un token. La fiche ne donne aucune vitesse ni aucune consommation mémoire ; la 3.1 non plus.
Les taux d'erreur de diarisation (DER, plus bas est mieux) sont publiés sur douze corpus, dans la configuration la plus sévère : pas de tolérance aux bornes, parole superposée comptée, aucune aide manuelle. Les chiffres sont ceux de l'éditeur, datés de septembre 2025.
| Corpus | 3.1 | community-1 | precision-2 (cloud) |
|---|---|---|---|
| AMI (micro-casque) | 18,8 | 17,0 | 12,9 |
| AMI (micro de table) | 22,7 | 19,9 | 15,6 |
| AliMeeting | 24,5 | 20,3 | 15,2 |
| DIHARD 3 | 21,4 | 20,2 | 14,7 |
| VoxConverse | 11,2 | 11,2 | 8,5 |
| REPERE (TV française) | 7,9 | 8,9 | 7,4 |
Sur AMI, le corpus de réunions de référence, le gain est de 1,8 à 2,8 points. Sur REPERE, seul corpus francophone du tableau, community-1 recule d'un point par rapport à la 3.1. La fiche le reconnaît sans l'expliquer. Pour des réunions en français, ce point n'est donc pas tranché par les chiffres de l'éditeur. La troisième colonne montre aussi la stratégie de pyannote : le modèle libre progresse, le modèle payant garde 1,5 à 5,5 points d'avance.
Face aux alternatives déjà vues
Nemotron-3-Diarization, cité le 11 octobre comme complément de parakeet, compte 72 k téléchargements contre 5,4 M ici : l'écosystème (exemples, intégrations, tutoriels) est du côté de pyannote. La 3.1 reste disponible, sous MIT, avec 6,9 M de téléchargements ; elle demeure le choix si la licence CC-BY pose problème ou si le corpus REPERE est représentatif de vos enregistrements. Côté transcription, la chaîne locale reste la même : whistle (17 Mo) ou parakeet-redux (178 Mo, 25 langues) pour les mots, pyannote pour les voix.
Comment l'essayer
- Sur huggingface.co, accepter les conditions du dépôt et créer un token de lecture.
pip install pyannote.audio(la fiche indique la compatibilité avec la version 4.x).- Charger
Pipeline.from_pretrained("pyannote/speaker-diarization-community-1", token=...), puis appeler le pipeline sur un WAV mono 16 kHz. UnProgressHookaffiche l'avancement. - Lire
output.exclusive_speaker_diarizationet l'aligner sur les horodatages de la transcription. - Comparer avec la 3.1 sur deux ou trois réunions réelles de trente minutes : compter les changements de locuteur manqués et les locuteurs confondus, à la main, sur les cinq premières minutes.
À surveiller : une mesure indépendante sur du français conversationnel, et une version de pyannote.audio qui publierait enfin les temps de traitement sur CPU.