Cos'è la diarizzazione dei parlanti? Come funziona e casi d'uso
- Scritto da
- Jack Limebear
- Pubblicato
- Ultimo aggiornamento
AscoltaAscolta questo articolo
La diarizzazione dei parlanti prende un flusso audio con un numero sconosciuto di interlocutori e produce una timeline 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 relative etichette per tutta la registrazione.
Questo processo rende utilizzabile l'audio con più parlanti. Gli appunti delle riunioni, l'analisi dei call center, le trascrizioni delle interviste, l'editing dei podcast e gli atti legali dipendono tutti dal sapere non solo cosa è stato detto, ma anche chi lo 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 misurare 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 è diversa dalla segmentazione dei parlanti, che individua quando cambia chi parla, 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 sta parlando. Una trascrizione con diarizzazione dei parlanti etichetta ogni segmento audio con l'identità di un parlante. In parole semplici, 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:

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. Solo i segmenti audio che contengono parlato effettivo passano alla fase successiva.
Eventuali errori in questa fase si propagheranno nelle fasi successive.
Segmentazione
Questi segmenti contenenti parlato vengono quindi divisi nei punti in cui è probabile che cambi il parlante, ad esempio in caso di variazione del tono vocale, di una pausa tra i turni di parola o di un cambiamento nel pattern dell'intonazione. La maggior parte dei sistemi rileva direttamente questi punti di cambiamento confrontando le caratteristiche acustiche ai due lati di un confine candidato.
Alcuni strumenti di segmentazione dividono l'audio in brevi finestre uniformi, ad esempio blocchi di due secondi, e poi si affidano 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 parla in quel segmento. Gli embedding dello stesso parlante si raggruppano nello spazio vettoriale, mentre quelli di parlanti diversi sono più distanti.
Clustering
Gli embedding vengono quindi raggruppati affinché i segmenti dello stesso parlante condividano un'etichetta. In genere il sistema non conosce in anticipo il numero di parlanti, quindi l'algoritmo di clustering deve inferirlo, stabilendo se quel segmento dal suono leggermente diverso appartenga a un nuovo parlante o alla stessa persona con un tono diverso.

L'output è un insieme di etichette dei parlanti associate a intervalli di tempo, solitamente abbinate a una trascrizione. Ad esempio, una trascrizione diarizzata di una chiamata tra due persone è così:
- [speaker_0] Grazie per aver chiamato. Come posso aiutarti?
- [speaker_1] Ciao, chiamo per la mia fattura del mese scorso.
- [speaker_0] Certo, controllo 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. Associare identità reali è un'attività diversa, che vedremo più avanti.
Differenze principali tra segmentazione e identificazione dei parlanti
La segmentazione e l'identificazione dei parlanti sono entrambe strettamente correlate alla diarizzazione, perciò i tre concetti vengono spesso confusi tra loro.
Ognuna risolve un problema leggermente diverso, quindi è importante comprenderne la distinzione quando si valutano gli strumenti.
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 cambia da una voce all'altra, senza assegnare etichette. La segmentazione ti indica che si è verificato 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à separata dalla diarizzazione, ma viene spesso combinata con essa. L'identificazione determina chi siano effettivamente i parlanti. Un sistema di identificazione confronta le voci con impronte vocali registrate, usando un riferimento di parlanti noti per restituirne le identità. Dopo l'identificazione, speaker_0 e speaker_1 diventano "Fergal" ed "Eric".
Molti prodotti combinano questi strumenti per creare una trascrizione finale più completa. Uno strumento per riunioni potrebbe farlo automaticamente, anche recuperando dati come il nome impostato da una persona su Teams o Meet, in modo che il contributo di ogni partecipante sia attribuito per nome senza alcuna revisione manuale.

Strumenti e librerie open source più diffusi per la diarizzazione dei parlanti
Vale la pena considerare gli strumenti open source per la diarizzazione dei parlanti quando ti servono controllo, flessibilità o distribuzione locale. La scelta migliore dipende dal tipo di audio che gestisci (telefonate, riunioni, podcast, trasmissioni), dai requisiti di latenza e dal tempo di sviluppo che puoi investire.
Ecco alcune delle opzioni più diffuse.
Pyannote.audio
Pyannote.audio è un toolkit basato su PyTorch, progettato specificamente per la diarizzazione dei parlanti, nonché 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 eseguire il fine-tuning dei modelli sui tuoi dati.
I suoi modelli preaddestrati vengono distribuiti tramite Hugging Face e sono spesso usati come livello di diarizzazione in progetti di trascrizione più ampi.
WhisperX
WhisperX combina Whisper di OpenAI ASR 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 ha sia un timestamp accurato sia un'etichetta del parlante.
NVIDIA NeMo
NVIDIA NeMo include la diarizzazione nel suo più ampio framework di IA conversazionale. Offre modelli di diarizzazione addestrabili, inclusi approcci end-to-end che gestiscono il parlato sovrapposto, ed è progettato 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 di diarizzazione del parlato offrono un'alternativa più semplice. Possono integrarsi nei workflow esistenti oppure gestire l'intera pipeline di diarizzazione e sono quindi adatte a casi d'uso in produzione, come l'analisi del customer support, la trascrizione di riunioni e l'elaborazione di podcast.
Diarizzazione in tempo reale: sfide e casi d'uso
La diarizzazione in tempo reale è molto più difficile della diarizzazione su una registrazione completata, perché il sistema deve prendere decisioni con un contesto incompleto.
Un sistema offline vede 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é entrambi i momenti sono disponibili contemporaneamente. Un sistema in tempo reale non ha mai questo vantaggio: deve etichettare il parlato nell'istante in cui arriva, senza accesso a ciò che verrà detto e con poche o nessuna possibilità di rivedere una decisione dopo averla presa.
L'assenza di questo 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 discapito 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 oppure affidarsi al volo a modelli specializzati che riconoscono le sovrapposizioni.
- Enunciati brevi: Un rapido "sì" o "vai pure" fornisce a malapena al sistema abbastanza voce su cui lavorare e, senza il contesto circostante su cui basarsi, deve comunque assegnare subito un'etichetta.
Nonostante la difficoltà, alcune applicazioni non possono aspettare la fine di una registrazione. Sottotitolazione in tempo reale per riunioni e trasmissioni richiede etichette dei parlanti mentre le persone parlano. Software per call center che fornisce indicazioni agli agenti durante la chiamata deve sapere in tempo reale quali parole sta usando il cliente. Gli agenti vocali che gestiscono chiamate con più partecipanti devono tenere traccia senza ritardi di chi chiede 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 realmente etichette in tempo reale, come l'analisi, la revisione della conformità normativa e la generazione di trascrizioni, la diarizzazione batch rimane la scelta migliore perché è molto più accurata.
Come valutare le prestazioni della diarizzazione dei parlanti
Quando misuri l'accuratezza della diarizzazione, contano soprattutto due metriche: il tasso di errore di diarizzazione (DER), che rileva l'accuratezza complessiva, e il tasso di errore di Jaccard (JER), che verifica che tale accuratezza sia 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 lo ha etichettato 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% indica che gli errori equivalgono a un decimo del tempo di parlato totale, considerando questi tre tipi. Più basso è il valore, meglio è; i punteggi sono confrontabili solo se misurati sugli stessi dati e alle stesse condizioni. Il DER varia enormemente in base alla qualità dell'audio, al numero di parlanti e alla quantità di sovrapposizioni presenti nella registrazione.
Il tasso di errore di Jaccard (JER) misura separatamente l'accuratezza della diarizzazione per ciascun parlante, per poi calcolare la media del risultato su tutti i parlanti. Per ogni parlante di riferimento, il valutatore associa l'etichetta del sistema più vicina e confronta il tempo in cui coincidono correttamente 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 DER complessivo potrebbe comunque sembrare relativamente buono perché la maggior parte della riunione appartiene al parlante A. Il JER attribuisce lo stesso peso allo scarso risultato del parlante B, perché valuta i parlanti A e B in modo indipendente prima di calcolare la media dei loro 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] con i = 1..N
Monitorare sia il DER sia il JER offre un quadro più completo dell'accuratezza della diarizzazione: il DER misura l'accuratezza complessiva, il JER verifica se tale accuratezza è mantenuta per ogni partecipante, incluse 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 rispecchi le condizioni effettive di deployment: il numero tipico di parlanti, la qualità dell'audio e la quantità di conversazioni sovrapposte.
I punteggi dei benchmark pubblicati potrebbero essere misurati su dataset puliti e controllati, come registrazioni in studio, che raramente corrispondono al suono delle vere registrazioni di chiamate o delle riunioni dal vivo. Un sistema che ottiene buoni risultati nei benchmark può comunque avere prestazioni significativamente inferiori su audio reale rumoroso e con sovrapposizioni. Testalo sui tuoi dati prima di scegliere un prodotto di diarizzazione.
Inizia a usare ElevenAPI per la diarizzazione dei parlanti
Se sei pronto a 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 etichetterà ogni parola con un ID del parlante, per un massimo di 32 parlanti, in oltre 90 lingue e su file della durata massima di 10 ore.
Due opzioni estendono l'output standard della diarizzazione. Per le registrazioni di chiamate, detect_speaker_roles=true etichetta i parlanti come agente e cliente anziché con numeri anonimi. Se il tuo workspace contiene profili di parlanti registrati, use_speaker_library=true può associare i parlanti rilevati alle voci registrate, unendo diarizzazione e identificazione in un'unica richiesta.
Un parametro della soglia di diarizzazione ti permette di regolare il compromesso tra l'eccessiva suddivisione e l'unione dei parlanti. Quando i parlanti sono già isolati su canali audio separati, come nelle registrazioni stereo delle chiamate, la trascrizione multicanale assegna i parlanti in base al canale e ignora completamente la diarizzazione.
La guida rapida di 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 dai un'occhiata alla documentazione di ElevenLabs per saperne di più.



