Aller au contenu

Qu’est-ce que la diarisation des locuteurs ? Fonctionnement et cas d’usage

Rédigé par
Jack Limebear
Publié
Dernière mise à jour

ÉcouterÉcouter cet article

La diarisation des locuteurs analyse un flux audio comptant un nombre inconnu de locuteurs et produit une chronologie de segments étiquetés : locuteur A de 0:00 à 0:42, locuteur B de 0:42 à 1:15, puis à nouveau locuteur A à partir de 1:15. Le système ne sait pas qui sont les locuteurs, mais il sait qu’il s’agit de personnes différentes et conserve des étiquettes cohérentes tout au long de l’enregistrement.

C’est ce processus qui rend les contenus audio à plusieurs locuteurs exploitables. Les comptes rendus de réunion, les analyses de centres d’appels, les transcriptions d’entretiens, le montage de podcasts et les dossiers juridiques nécessitent tous de savoir non seulement ce qui a été dit, mais aussi qui l’a dit. 

Ce guide explique le fonctionnement de la diarisation, ses différences avec des techniques connexes comme la segmentation et l’identification, les outils open source qui la prennent en charge, ainsi que les méthodes pour évaluer les performances d’un système de diarisation.

En résumé

  • La diarisation des locuteurs segmente un enregistrement audio selon la personne qui parle et produit des prises de parole étiquetées, sans identifier personne par son nom.
  • La diarisation des locuteurs se distingue de la segmentation des locuteurs, qui détecte les changements de locuteur, et de l’identification des locuteurs, qui associe les voix à de vrais noms.
  • Les performances de la diarisation se mesurent avec le taux d’erreur de diarisation (DER) pour la précision globale et le taux d’erreur de Jaccard (JER) pour vérifier que cette précision se maintient pour chaque locuteur.

Qu’est-ce que la diarisation des locuteurs et comment fonctionne-t-elle ?

La diarisation des locuteurs consiste à diviser un flux audio en segments selon la personne qui parle. Une transcription avec diarisation attribue une identité de locuteur à chaque segment audio. En bref, elle répond à la question : « Qui a parlé, et quand ? » 

Une transcription brute de réunion vous fournit les mots, tandis qu’une transcription avec diarisation vous indique que le locuteur 1 a posé la question, que le locuteur 2 y a répondu et que le locuteur 3 a interrompu l’échange à mi-chemin.

La plupart des systèmes de diarisation des locuteurs suivent un pipeline en quatre étapes :

Diarization pipeline: voice detection, segmentation, embeddings, clustering, and anonymous labels.

Examinons ces étapes plus en détail.

Détection d’activité vocale (VAD)

La détection d’activité vocale distingue la parole de tout le reste : le silence, le bruit de fond, la musique ou les clics de clavier. Seuls les segments audio qui contiennent réellement de la parole passent à l’étape suivante.

Toute erreur à ce stade se répercutera sur les étapes suivantes.

Segmentation

Ces segments contenant de la parole sont ensuite divisés aux endroits où le locuteur est susceptible de changer, par exemple lors d’une variation du timbre vocal, d’une pause entre deux prises de parole ou d’un changement de hauteur. La plupart des systèmes détectent directement ces points de changement en comparant les caractéristiques acoustiques de part et d’autre d’une frontière potentielle. 

Certains outils de segmentation découpent l’audio en courtes fenêtres uniformes, par exemple en segments de deux secondes, puis s’appuient sur l’étape de regroupement pour fusionner les fenêtres adjacentes qui appartiennent au même locuteur.

Extraction d’embeddings

Chaque segment de parole est converti en embedding de locuteur, c’est-à-dire un vecteur numérique qui capture les caractéristiques vocales de la personne qui parle dans ce segment. Les embeddings d’un même locuteur se regroupent dans l’espace vectoriel, tandis que ceux de locuteurs différents sont plus éloignés.

Regroupement

Les embeddings sont ensuite regroupés afin que les segments du même locuteur partagent une même étiquette. Le système ne connaît généralement pas le nombre de locuteurs à l’avance : l’algorithme de regroupement doit donc l’inférer, en déterminant si un segment au son légèrement différent correspond à un nouveau locuteur ou à la même personne parlant sur un autre ton.

Embeddings cluster same-speaker samples together, but speaker count is unknown in advance in speaker diarization

Le résultat est un ensemble d’étiquettes de locuteurs associées à des plages temporelles, généralement accompagné d’une transcription. Par exemple, une transcription avec diarisation d’un appel entre deux personnes se présente ainsi :

  • [speaker_0] Merci de votre appel. Comment puis-je vous aider ?
  • [speaker_1] Bonjour, j’appelle au sujet de ma facture du mois dernier.
  • [speaker_0] Bien sûr, je vais regarder cela.

Les étiquettes sont anonymes et cohérentes en interne. Speaker_0 désigne la même voix chaque fois qu’il apparaît, mais le système ne sait pas que speaker_0 s’appelle Fergal. L’attribution d’identités réelles est une tâche distincte, que nous abordons ci-dessous.

Principales différences entre segmentation et identification des locuteurs

La segmentation et l’identification des locuteurs recoupent étroitement la diarisation, si bien que ces trois notions sont souvent confondues.

Chacune résout un problème légèrement différent ; il est donc important de comprendre cette distinction pour évaluer les outils.

Segmentation
Question it answers
Where do speaker changes occur?
Output
Change-point boundaries
Requires contextual information
No
Diarization
Question it answers
Who spoke when (anonymous labels)?
Output
Labeled segments (speaker_0, speaker_1)
Requires contextual information
No
Identification
Question it answers
Who are the speakers (real identities)?
Output
Named speakers matched to voiceprints
Requires contextual information
Yes

Comme expliqué précédemment, la segmentation des locuteurs est une étape précoce du pipeline de diarisation. Elle détecte les frontières où l’on passe d’une voix à une autre, sans attribuer d’étiquettes. La segmentation vous indique qu’un changement a eu lieu à 0:42. La diarisation va plus loin en regroupant les segments obtenus et en produisant une sortie entièrement étiquetée : elle vous indique ainsi que la voix entendue à 1:15 est la même que celle du début de l’enregistrement.

L’identification des locuteurs est une capacité distincte de la diarisation, mais elle lui est fréquemment associée. L’identification détermine qui sont réellement ces locuteurs. Un système d’identification compare les voix à des empreintes vocales enregistrées et s’appuie sur une référence de locuteurs connus pour renvoyer des identités. Après identification, speaker_0 et speaker_1 deviennent « Fergal » et « Eric ».

De nombreux produits combinent ces outils afin de produire une transcription finale plus complète. Un outil de réunion peut le faire automatiquement, éventuellement en récupérant le nom défini par une personne dans Teams ou Meet, afin d’attribuer les interventions de chaque participant par son nom, sans vérification manuelle. 

Comparison of segmentation, speaker diarization, and identification; diarize first, then identify.

Outils et bibliothèques open source populaires pour la diarisation des locuteurs

Les outils open source de diarisation des locuteurs sont à envisager lorsque vous avez besoin de contrôle, de flexibilité ou d’un déploiement local. Le meilleur choix dépend du type d’audio que vous traitez — appels téléphoniques, réunions, podcasts ou diffusion —, de vos exigences de latence et du temps d’ingénierie que vous pouvez y consacrer. 

Voici quelques-unes des options les plus utilisées.

Pyannote.audio

Pyannote.audio est une boîte à outils basée sur PyTorch, conçue spécifiquement pour la diarisation des locuteurs et comptant parmi les options open source les plus utilisées. Elle propose des pipelines préentraînés couvrant l’ensemble de la chaîne de diarisation, dont la VAD, la segmentation, les embeddings et le regroupement, ainsi que les composants nécessaires pour entraîner ou affiner des modèles sur vos propres données. 

Ses modèles préentraînés sont distribués via Hugging Face et couramment utilisés comme couche de diarisation dans de grands projets de transcription.

WhisperX

WhisperX combine Whisper d’OpenAI ASR avec la diarisation et l’alignement forcé. Whisper seul produit des transcriptions solides, mais n’attribue pas d’étiquettes de locuteurs et ses horodatages ne sont qu’approximatifs. WhisperX ajoute un alignement des horodatages au niveau du mot et intègre une diarisation basée sur pyannote, produisant des transcriptions où chaque mot comporte à la fois un horodatage précis et une étiquette de locuteur.

NVIDIA NeMo

NVIDIA NeMo inclut la diarisation dans son framework plus large d’IA conversationnelle. Il propose des modèles de diarisation entraînables, notamment des approches de bout en bout qui gèrent les chevauchements de parole, et s’adresse aux équipes qui développent des systèmes vocaux personnalisés à grande échelle sur une infrastructure GPU.

Chacun de ces outils vous impose de gérer l’infrastructure de diarisation, y compris le déploiement des modèles, le passage à l’échelle, la surveillance et les mises à jour. Pour les équipes qui ne souhaitent pas cette charge opérationnelle, les API de diarisation de la parole gérées offrent une alternative plus simple. Elles peuvent s’intégrer aux flux de travail existants ou prendre en charge l’ensemble du pipeline de diarisation, ce qui les rend adaptées aux cas d’usage en production, comme les analyses de support client, la transcription de réunions et le traitement de podcasts.

Diarisation en temps réel : défis et cas d’usage

La diarisation en temps réel est considérablement plus difficile que la diarisation d’un enregistrement terminé, car le système doit prendre des décisions avec un contexte incomplet.

Un système hors ligne examine l’intégralité de l’enregistrement avant de prendre toute décision. Il peut comparer une voix à la deuxième minute à une voix à la quarantième et déterminer avec certitude qu’il s’agit du même locuteur, car les deux passages sont disponibles simultanément. Un système en temps réel ne bénéficie jamais de ce luxe : il doit étiqueter la parole dès son arrivée, sans accès à ce qui sera dit ensuite et avec peu, voire aucune, possibilité de réviser une décision une fois prise. 

C’est cette absence de contexte futur qui rend trois problèmes particulièrement difficiles à résoudre en temps réel :

  • Latence ou précision : sans la possibilité d’analyser l’ensemble de la conversation, respecter des délais de réponse plus stricts se fait directement au détriment de la précision.
  • Chevauchement de parole : lorsque des personnes parlent en même temps, un système capable de retraiter l’audio pourrait démêler leurs voix. Un système en temps réel doit l’attribuer à une seule étiquette ou s’appuyer à la volée sur des modèles spécialisés dans la gestion des chevauchements.
  • Énoncés courts : un « oui » ou « allez-y » rapide fournit à peine assez de voix au système pour travailler et, sans contexte environnant sur lequel s’appuyer, il doit tout de même attribuer une étiquette immédiatement.

Malgré cette difficulté, certaines applications ne peuvent pas attendre la fin d’un enregistrement. Le sous-titrage en direct des réunions et des diffusions nécessite des étiquettes de locuteurs au moment où les personnes parlent. Les logiciels de centre d’appels qui fournissent des conseils aux agents en cours d’appel doivent savoir en temps réel quels mots emploie le client. Les agents vocaux qui gèrent des appels avec plusieurs participants doivent suivre sans délai qui demande quoi. Dans chaque cas, un système légèrement moins précis mais immédiat est préférable à un système plus précis mais retardé.

Pour les charges de travail qui n’exigent pas réellement d’étiquettes en temps réel, comme l’analyse, la vérification de conformité et la génération de transcriptions, la diarisation par lots reste le meilleur choix, car elle est nettement plus précise.

Comment évaluer les performances de la diarisation des locuteurs

Deux métriques sont essentielles pour mesurer la précision de la diarisation : le taux d’erreur de diarisation (DER), qui reflète la précision globale, et le taux d’erreur de Jaccard (JER), qui vérifie si cette précision se maintient pour chaque locuteur.

Le DER calcule précisément la part du temps de parole total qui est attribuée de façon incorrecte. Il combine trois types d’erreurs :

  • Fausse alarme de parole : le système a étiqueté un segment comme de la parole alors que personne ne parlait.
  • Parole manquée : une personne parlait, mais le système a étiqueté le segment comme du silence.
  • Confusion entre locuteurs : de la parole a été détectée, mais attribuée au mauvais locuteur.

DER = (fausse alarme + parole manquée + confusion entre locuteurs) / durée totale de parole

Un DER de 10 % signifie que les erreurs représentent un dixième du temps de parole total, pour ces trois catégories. Plus le score est faible, mieux c’est ; les scores ne sont comparables que s’ils sont mesurés sur les mêmes données et dans les mêmes conditions. Le DER varie fortement selon la qualité audio, le nombre de locuteurs et l’importance des chevauchements dans l’enregistrement.

Le taux d’erreur de Jaccard (JER) mesure séparément la précision de la diarisation pour chaque locuteur, puis calcule la moyenne pour l’ensemble des locuteurs. Pour chaque locuteur de référence, l’évaluateur associe l’étiquette de locuteur du système la plus proche et compare la durée de chevauchement correct avec la durée totale attribuée à l’un ou l’autre locuteur.

Par exemple, imaginons une réunion de 60 minutes dans laquelle le locuteur A parle pendant 50 minutes et le locuteur B pendant 10 minutes. Un système de diarisation étiquette correctement 48 des 50 minutes du locuteur A, mais seulement 4 des 10 minutes du locuteur B. Son DER global peut sembler relativement bon, car le locuteur A occupe la majeure partie de la réunion. Le JER accorde le même poids au faible résultat du locuteur B, car il évalue indépendamment les locuteurs A et B avant de calculer la moyenne de leurs scores.

JER_speaker = 1 - (correct_overlap / (ref_time + sys_time - correct_overlap))

Le JER final est la moyenne de ces taux d’erreur par locuteur :

JER = (1 / N) * Σ[JER_speaker_i]  où i = 1..N

Suivre à la fois le DER et le JER offre une vision plus complète de la précision de la diarisation : le DER pour la précision globale, le JER pour déterminer si cette précision se maintient pour chaque participant, y compris ceux qui parlent moins souvent.

Tester sur des contenus audio représentatifs de la production

Lorsque vous évaluez un système de diarisation des locuteurs, calculez à la fois le DER et le JER sur des contenus audio correspondant à vos conditions de déploiement réelles : nombre habituel de locuteurs, qualité audio et volume de parole croisée. 

Les scores de référence publiés peuvent être mesurés sur des jeux de données propres et contrôlés, tels que des enregistrements en studio, qui correspondent rarement à la réalité des enregistrements d’appels ou des réunions en direct. Un système performant sur les benchmarks peut tout de même être nettement moins performant sur des contenus audio réels, bruyants et marqués par des chevauchements. Testez vos propres données avant de vous engager sur un produit de diarisation.

Premiers pas avec ElevenAPI pour la diarisation des locuteurs

Si vous êtes prêt à créer une fonctionnalité de transcription compatible avec plusieurs locuteurs, Scribe v2 d’ElevenLabs met la diarisation des locuteurs à disposition via une seule API Speech to Text. Envoyez l’audio au endpoint avec diarize=true, et la réponse JSON étiquette chaque mot avec un ID de locuteur, pour un maximum de 32 locuteurs, dans plus de 90 langues et sur des fichiers d’une durée maximale de 10 heures.

Deux options étendent la sortie de diarisation standard. Pour les enregistrements d’appels, detect_speaker_roles=true étiquette les locuteurs comme agent et client plutôt qu’avec des numéros anonymes. Si votre Workspace contient des profils de locuteurs enregistrés, use_speaker_library=true peut associer les locuteurs détectés à des voix enregistrées, réunissant diarisation et identification dans une seule requête. 

Un paramètre de seuil de diarisation vous permet d’ajuster le compromis entre la sur-segmentation et la fusion des locuteurs. Lorsque vos locuteurs sont déjà isolés sur des canaux audio distincts, comme dans les enregistrements d’appels stéréo, la transcription multicanale attribue les locuteurs par canal et évite entièrement la diarisation.

Le guide de démarrage rapide Speech to Text vous accompagne pas à pas dans la première intégration. Pour les déploiements réglementés, la plateforme est conforme aux normes SOC 2, ISO 27001, PCI DSS L1 et HIPAA, avec hébergement des données en Europe et un mode de conservation nulle disponibles.

Prêt à intégrer la diarisation des locuteurs à vos systèmes ? Commencez par obtenir votre clé API ou consultez la documentation ElevenLabs pour en savoir plus.

FAQ

Articles similaires

Créez avec l'audio IA de la plus haute qualité