Vai al contenuto

Cos'è la diarizzazione dei parlanti? Come funziona e casi d'uso

Scritto da
Jack Limebear
Pubblicato

AscoltaAscolta questo articolo

La diarizzazione dei parlanti prende un flusso audio con un numero sconosciuto di interlocutori e produce una sequenza temporale di segmenti etichettati: parlante A da 0:00 a 0:42, parlante B da 0:42 a 1:15, poi di nuovo parlante A da 1:15 in avanti. Il sistema non sa chi siano i parlanti, ma sa che sono persone diverse e mantiene coerenti le loro etichette per tutta la registrazione.

Questo processo rende utilizzabile l'audio con più parlanti. I verbali delle riunioni, le analisi dei call center, le trascrizioni di interviste, il montaggio di podcast e gli atti legali dipendono tutti dal sapere non solo cosa è stato detto, ma anche chi l'ha detto. 

Questa guida spiega come funziona la diarizzazione, in cosa differisce da tecniche correlate come la segmentazione e l'identificazione, quali strumenti open source la gestiscono e come valutare le prestazioni di un sistema di diarizzazione.

In sintesi

  • La diarizzazione dei parlanti segmenta una registrazione audio in base a chi sta parlando, producendo turni di parola etichettati senza identificare nessuno per nome.
  • La diarizzazione dei parlanti differisce dalla segmentazione dei parlanti, che rileva quando cambiano i parlanti, e dall'identificazione dei parlanti, che associa le voci a nomi reali.
  • Le prestazioni della diarizzazione si misurano con il tasso di errore di diarizzazione (DER) per l'accuratezza complessiva e il tasso di errore di Jaccard (JER) per verificare che l'accuratezza sia mantenuta per ogni parlante.

Cos'è la diarizzazione dei parlanti e come funziona?

La diarizzazione dei parlanti è il processo di suddivisione di un flusso audio in segmenti in base a chi parla. Una trascrizione con diarizzazione dei parlanti etichetta ogni segmento audio con l'identità di un parlante. In poche parole, risponde alla domanda: "Chi ha parlato e quando?" 

La trascrizione grezza di una riunione ti fornisce le parole, mentre una trascrizione diarizzata indica che il parlante 1 ha posto la domanda, il parlante 2 ha risposto e il parlante 3 ha interrotto a metà.

La maggior parte dei sistemi di diarizzazione dei parlanti segue una pipeline in quattro fasi:

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

Vediamo queste fasi più nel dettaglio.

Rilevamento dell'attività vocale (VAD)

Il rilevamento dell'attività vocale separa il parlato da tutto il resto: silenzio, rumore di fondo, musica, o clic della tastiera. Passano alla fase successiva solo i segmenti audio che contengono parlato effettivo.

Eventuali errori in questa fase si propagano a tutte le fasi successive.

Segmentazione

I segmenti che contengono parlato vengono quindi divisi nei punti in cui è probabile che cambi il parlante, ad esempio in caso di variazione del tono vocale, pausa tra i turni di parola o cambiamento nel pattern dell'intonazione. La maggior parte dei sistemi rileva direttamente questi punti di cambiamento confrontando le caratteristiche acustiche sui due lati di un confine candidato. 

Alcuni strumenti di segmentazione dividono l'audio in brevi finestre uniformi, ad esempio blocchi di due secondi, e si affidano poi alla fase di clustering per unire le finestre adiacenti che appartengono allo stesso parlante.

Estrazione degli embedding

Ogni segmento di parlato viene convertito in un embedding del parlante, ovvero un vettore numerico che cattura le caratteristiche vocali di chi sta parlando in quel segmento. Gli embedding dello stesso parlante si raggruppano nello spazio vettoriale, mentre quelli di parlanti diversi risultano più distanti.

Clustering

Gli embedding vengono quindi raggruppati affinché i segmenti dello stesso parlante condividano un'etichetta. Il sistema in genere non conosce in anticipo il numero di parlanti, quindi l'algoritmo di clustering deve dedurlo, decidendo se un segmento dal suono leggermente diverso appartenga a un nuovo parlante o alla stessa persona con un tono diverso.

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

L'output è un insieme di etichette dei parlanti associate a intervalli temporali, di solito accompagnato da una trascrizione. Ad esempio, una trascrizione diarizzata di una chiamata tra due persone è così:

  • [speaker_0] Grazie per aver chiamato. Come posso aiutarla?
  • [speaker_1] Buongiorno, chiamo per la fattura del mese scorso.
  • [speaker_0] Certamente, la recupero subito.

Le etichette sono anonime e coerenti internamente. Speaker_0 corrisponde alla stessa voce ogni volta che appare, ma il sistema non sa che speaker_0 si chiama Fergal. L'associazione di identità reali è un'attività diversa, che trattiamo di seguito.

Differenze principali tra segmentazione e identificazione dei parlanti

La segmentazione e l'identificazione dei parlanti sono entrambe strettamente correlate alla diarizzazione, perciò questi tre concetti vengono spesso confusi tra loro.

Ognuna risolve un problema leggermente diverso, quindi è importante comprenderne la distinzione quando valuti gli strumenti disponibili.

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

Come spiegato in precedenza, la segmentazione dei parlanti è una fase della diarizzazione che avviene all'inizio della pipeline. Individua i confini in cui il parlante passa da una voce a un'altra, senza assegnare etichette. La segmentazione ti dice che è avvenuto un cambiamento a 0:42. La diarizzazione va oltre, raggruppando i segmenti risultanti e producendo un output completamente etichettato: così sai che la voce a 1:15 è la stessa che ha parlato all'inizio della registrazione.

L'identificazione dei parlanti è una funzionalità distinta dalla diarizzazione, ma viene spesso combinata con essa. L'identificazione stabilisce chi siano effettivamente quei parlanti. Un sistema di identificazione confronta le voci con impronte vocali registrate, usando un riferimento di parlanti noti per restituire le identità. Dopo l'identificazione, speaker_0 e speaker_1 diventano "Fergal" ed "Eric".

Molti prodotti combinano questi strumenti per produrre una trascrizione finale più completa. Uno strumento per riunioni potrebbe farlo automaticamente, potenzialmente recuperando anche dati come il nome impostato da una persona su Teams o Meet, così che il contributo di ogni partecipante venga attribuito per nome senza alcuna revisione manuale. 

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

Strumenti e librerie open source popolari per la diarizzazione dei parlanti

Vale la pena considerare gli strumenti open source per la diarizzazione dei parlanti quando ti servono controllo, flessibilità o un deployment locale. La scelta migliore dipende dal tipo di audio che gestisci, ad esempio chiamate telefoniche, riunioni, podcast o trasmissioni, dai requisiti di latenza e dal tempo che puoi dedicare allo sviluppo. 

Ecco alcune delle opzioni più diffuse.

Pyannote.audio

Pyannote.audio è un toolkit basato su PyTorch, progettato specificamente per la diarizzazione dei parlanti, e una delle opzioni open source più utilizzate. Offre pipeline preaddestrate che coprono l'intero stack di diarizzazione, inclusi VAD, segmentazione, embedding e clustering, oltre ai componenti necessari per addestrare o ottimizzare i modelli sui tuoi dati. 

I suoi modelli preaddestrati sono distribuiti tramite Hugging Face e vengono spesso utilizzati come livello di diarizzazione in progetti di trascrizione più ampi.

WhisperX

WhisperX combina la trascrizione Whisper di OpenAI con la diarizzazione e l'allineamento forzato. Whisper da solo produce trascrizioni di qualità, ma non assegna etichette ai parlanti e i suoi timestamp sono solo approssimativi. WhisperX aggiunge l'allineamento dei timestamp a livello di parola e integra la diarizzazione basata su pyannote, producendo trascrizioni in cui ogni parola contiene sia un timestamp accurato sia un'etichetta del parlante.

NVIDIA NeMo

NVIDIA NeMo include la diarizzazione come parte del suo più ampio framework di IA conversazionale. Offre modelli di diarizzazione addestrabili, inclusi approcci end-to-end che gestiscono il parlato sovrapposto, ed è pensato per team che sviluppano sistemi vocali personalizzati su larga scala con infrastrutture GPU.

Ognuno di questi strumenti richiede la gestione dell'infrastruttura di diarizzazione, inclusi deployment dei modelli, scalabilità, monitoraggio e aggiornamenti. Per i team che non vogliono questo carico operativo, le API gestite per la diarizzazione del parlato offrono un'alternativa più semplice. Possono integrarsi nei workflow esistenti o gestire l'intera pipeline di diarizzazione, risultando adatte a casi d'uso di produzione come le analisi dell'assistenza clienti, la trascrizione di riunioni e l'elaborazione di podcast.assistenza clienti analytics, meeting transcription, and podcast processing.

Diarizzazione in tempo reale: sfide e casi d'uso

La diarizzazione in tempo reale è molto più difficile della diarizzazione di una registrazione completata, perché il sistema deve prendere decisioni con un contesto incompleto.

Un sistema offline analizza l'intera registrazione prima di prendere qualsiasi decisione. Può confrontare una voce al minuto 2 con una al minuto 40 e stabilire con sicurezza che appartengono allo stesso parlante, perché ha entrambi i momenti disponibili contemporaneamente. Un sistema in tempo reale non ha questo vantaggio: deve etichettare il parlato appena arriva, senza accesso a ciò che verrà detto dopo e con poche o nessuna possibilità di rivedere una decisione una volta presa. 

L'assenza di contesto futuro rende tre problemi specifici molto più difficili da risolvere in tempo reale:

  • Latenza e accuratezza: Senza poter analizzare l'intera conversazione avanti e indietro, rispettare tempi di risposta più stretti va direttamente a scapito dell'accuratezza.
  • Parlato sovrapposto: Quando le persone parlano una sopra l'altra, un sistema che potesse rielaborare l'audio potrebbe separarle. Un sistema in tempo reale deve assegnare un'unica etichetta o ricorrere al volo a modelli specializzati nel rilevamento delle sovrapposizioni.
  • Interventi brevi: Un rapido "sì" o "vai pure" fornisce a malapena abbastanza materiale vocale su cui lavorare e, senza il contesto circostante, il sistema deve comunque assegnare subito un'etichetta.

Nonostante la difficoltà, alcune applicazioni non possono aspettare che una registrazione finisca. Sottotitoli in tempo reale per riunioni e trasmissioni richiedono etichette dei parlanti mentre le persone parlano. I software per call center che forniscono indicazioni agli agenti durante una chiamata devono sapere in tempo reale quali parole sta usando il cliente. Gli agenti vocali che gestiscono chiamate con più partecipanti devono tracciare senza ritardi chi sta chiedendo cosa. In ogni caso, un sistema leggermente meno accurato ma immediato è preferibile a uno più accurato ma in ritardo.

Per i carichi di lavoro che non richiedono davvero etichette in tempo reale, come analisi, revisioni di conformità normativa e generazione di trascrizioni, la diarizzazione batch resta la scelta migliore perché è molto più accurata.

Come valutare le prestazioni della diarizzazione dei parlanti

Quando misuri l'accuratezza della diarizzazione, le due metriche più importanti sono il tasso di errore di diarizzazione (DER), che rileva l'accuratezza complessiva, e il tasso di errore di Jaccard (JER), che verifica se questa accuratezza viene mantenuta per ogni parlante.

Il DER calcola nello specifico la frazione del tempo di parlato totale attribuita in modo errato. Combina tre tipi di errore:

  • Falso allarme di parlato: Il sistema ha etichettato un segmento come parlato quando nessuno stava parlando.
  • Parlato non rilevato: Qualcuno stava parlando, ma il sistema ha etichettato il segmento come silenzio.
  • Confusione del parlante: Il parlato è stato rilevato, ma attribuito al parlante sbagliato.

DER = (falso allarme + parlato non rilevato + confusione del parlante) / durata totale del parlato

Un DER del 10% significa che gli errori corrispondono a un decimo del tempo di parlato totale, considerando questi tre tipi. Più è basso, meglio è; i punteggi sono confrontabili solo se misurati sugli stessi dati e nelle stesse condizioni. Il DER varia enormemente in base alla qualità audio, al numero di parlanti e alla quantità di sovrapposizioni nella registrazione.

Il tasso di errore di Jaccard (JER) misura l'accuratezza della diarizzazione per ciascun parlante separatamente, poi calcola la media del risultato su tutti i parlanti. Per ogni parlante di riferimento, il valutatore associa l'etichetta del parlante più vicina prodotta dal sistema e confronta il tempo di sovrapposizione corretta con il tempo totale assegnato a uno dei due parlanti.

Ad esempio, immagina una riunione di 60 minuti in cui il parlante A parla per 50 minuti e il parlante B per 10. Un sistema di diarizzazione etichetta correttamente 48 dei 50 minuti del parlante A, ma solo 4 dei 10 minuti del parlante B. Il suo DER complessivo potrebbe comunque sembrare relativamente buono, perché la maggior parte della riunione appartiene al parlante A. Il JER fa pesare allo stesso modo il risultato scarso del parlante B, perché valuta il parlante A e il parlante B in modo indipendente prima di calcolare la media dei punteggi.

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

Il JER finale è la media di questi tassi di errore per parlante:

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

Monitorare sia il DER sia il JER offre un quadro più completo dell'accuratezza della diarizzazione: il DER per l'accuratezza complessiva, il JER per verificare che sia mantenuta per ogni partecipante, comprese le persone che parlano meno spesso.

Test su audio rappresentativo della produzione

Quando valuti un sistema di diarizzazione dei parlanti, calcola sia il DER sia il JER su audio che rispecchia le tue condizioni di deployment effettive: il numero tipico di parlanti, la qualità del tuo audio e il livello di conversazioni sovrapposte. 

I punteggi benchmark pubblicati possono essere misurati su dataset puliti e controllati, come le registrazioni in studio, che raramente corrispondono al suono di vere registrazioni di chiamate o riunioni dal vivo. Un sistema con ottimi risultati nei benchmark può comunque offrire prestazioni significativamente inferiori su audio reale rumoroso e con sovrapposizioni. Testalo sui tuoi dati prima di scegliere un prodotto di diarizzazione.

Inizia con ElevenAPI per la diarizzazione dei parlanti

Se vuoi creare una funzionalità di trascrizione con supporto per più parlanti, Scribe v2 di ElevenLabs rende disponibile la diarizzazione dei parlanti tramite un'unica API di Speech to Text. Invia l'audio all'endpoint con diarize=true e la risposta JSON etichetta ogni parola con un ID del parlante, per un massimo di 32 parlanti, in oltre 90 lingue e su file lunghi fino a 10 ore.

Due opzioni estendono l'output standard della diarizzazione. Per le registrazioni delle chiamate, detect_speaker_roles=true etichetta i parlanti come agente e cliente anziché con numeri anonimi. Se il tuo workspace contiene profili dei parlanti registrati, use_speaker_library=true può associare i parlanti rilevati alle voci registrate, riunendo diarizzazione e identificazione in un'unica richiesta. 

Un parametro di soglia della diarizzazione ti consente di regolare il compromesso tra una segmentazione eccessiva e l'unione dei parlanti. E quando i parlanti sono già isolati su canali audio distinti, come nelle registrazioni stereo delle chiamate, la trascrizione multicanale assegna i parlanti in base al canale e salta completamente la diarizzazione.

La guida rapida Speech to Text illustra passo dopo passo la prima integrazione. Per i deployment regolamentati, la piattaforma è conforme a SOC 2, ISO 27001, PCI DSS L1 e HIPAA, con residenza dei dati nell'UE e modalità di conservazione zero disponibili.

Vuoi integrare la diarizzazione dei parlanti nei tuoi sistemi? Inizia ottenendo la tua chiave API oppure consulta la documentazione di ElevenLabs per saperne di più.

FAQ

Articoli simili

Crea con l'audio IA della massima qualità