Il WER assegna lo stesso peso a un nome sbagliato, a un numero sbagliato e a un «non» mancante come a un «ho» al posto di un «o». Valuta un sistema di trascrizione in base agli errori che riesce a cogliere e alla possibilità di vedere le sue correzioni, non in base al numero principale.
Il word error rate (WER) è il parametro di riferimento per il riconoscimento vocale. Prendi una trascrizione di riferimento controllata da una persona, allinea con essa, parola per parola, l'output della macchina e conta tre tipi di errore: sostituzioni (una parola sbagliata), inserimenti (una parola mai pronunciata) e cancellazioni (una parola mancante). Somma tutto e dividi per il numero di parole del riferimento.
WER = (sostituzioni + inserimenti + cancellazioni) / parole nel riferimento
L'allineamento non si fa a occhio. Le due trascrizioni vengono allineate con la distanza di modifica minima (la distanza di Levenshtein, applicata alle parole anziché alle lettere): tra tutti i modi di accoppiare l'output con il riferimento, lo scorer sceglie quello con il minor numero di modifiche e le conta. Poiché gli inserimenti vengono conteggiati e il denominatore è la lunghezza del riferimento, il WER può superare il 100 per cento: un modello che riempie di testo un minuto di silenzio ottiene un punteggio peggiore di uno che non scrive nulla.
Supponi che il riferimento sia «ci vediamo il dottor Okafor alle nove di giovedì», nove parole, e che la macchina scriva «ci vediamo il medico Rossi alle nove di martedì». Sono tre sostituzioni (dottor, Okafor e giovedì) su nove parole: un WER del 33 per cento. Due terzi delle parole sono giuste, eppure sei comunque all'appuntamento sbagliato, nel giorno sbagliato. Se fosse sbagliata solo «giovedì», il punteggio sarebbe dell'11 per cento. Una versione con tutte le parole giuste ma con un «ehm» aggiunto che nessuno ha pronunciato ottiene anch'essa l'11 per cento, perché un inserimento conta quanto una sostituzione.
Prima del conteggio, entrambi i testi vengono di solito normalizzati, e le scelte fatte in questa fase spostano il punteggio tanto quanto il modello. «Dott.» e «dottore» sono la stessa parola? «nove» è lo stesso di «9»? Maiuscole e punteggiatura contano? Un confronto rigido segnerebbe «Dott.» contro «dottore» come sostituzione. La maggior parte dei punteggi pubblicati mette tutto in minuscolo, toglie la punteggiatura e scrive tutti i numeri in un unico modo, a parole o in cifre, prima di confrontarli. Il dato di un fornitore dipende quindi, senza che lo si veda, da un normalizzatore che non si può ispezionare. Le lingue scritte senza spazi tra le parole, come cinese, giapponese e thai, non hanno un confine chiaro da contare, quindi si valutano con il tasso di errore sui caratteri (CER): la stessa formula, applicata ai caratteri.
Ne seguono due cose. Primo, un WER del 5 per cento equivale a una parola ogni venti, cioè diverse centinaia di parole in un discorso di un'ora. Come riferimento, le trascrizioni umane sono spesso indicate intorno al 4-5 per cento nel parlato conversazionale, e un risultato molto citato del 2017 sul corpus telefonico Switchboard attribuiva a una macchina circa il 5,1 per cento, anche se entrambe le cifre dipendono dall'audio e dalle regole di valutazione. Secondo, il numero dipende interamente dall'audio di prova: il parlato letto in modo pulito dà un valore, una tavola rotonda rumorosa con accenti e voci sovrapposte ne dà uno molto diverso. Un WER dichiarato descrive il set di test del fornitore tanto quanto il suo sistema.
Questo è il conteggio. Ciò che lascia fuori è il costo di ogni errore per chi legge.
Il WER tratta ogni parola allo stesso modo. Chi legge no:
Ognuno di questi è uno o due errori nella colonna del WER. Nella colonna di chi legge vanno da nulla a una riunione diversa in un giorno diverso. Quindi la domanda non è solo «qual è il tasso di errore», ma anche «quali tipi di errore, e che cosa li cattura».
Più livelli intercettano ciò che il riconoscimento sbaglia, e ogni modifica viene registrata, così può essere ispezionata e annullata. In una trascrizione in diretta questo accade mentre il testo sta ancora arrivando: ogni riga appare prima come bozza, che può ancora cambiare, e poi diventa definitiva (La latenza della traduzione in diretta, spiegata spiega perché).
Alcuni errori suonano giusti ma non stanno nella frase: «ho» dove la frase richiede «o». Questi possono essere individuati dal contesto, e una correzione arriva ai lettori come un aggiornamento visibile (transcript.amended nell'API), non come una riscrittura silenziosa. Il contesto funziona bene sulle parole che la frase rende prevedibili, ma non serve a nulla con quelle che non riesce a prevedere.
Nomi e termini tecnici sono gli errori che il contesto non può correggere, perché un nome compare spesso una sola volta, senza nulla intorno da cui dedurlo. Uno script di riferimento risolve il problema: prima di iniziare, dai al sistema il parlato, le slide o un elenco di nomi e termini, e le sue parole hanno la precedenza su ciò che il motore ha capito male. Durante la registrazione lo script segue la trascrizione come un gobbo elettronico, così chi conduce vede a che punto è arrivato il motore. Uno script copre le parole che puoi prevedere; l'audio rumoroso e gli accenti producono quelle che non puoi.
Alcuni errori li vede solo una persona nella stanza. Le correzioni manuali permettono a chi conduce di riscrivere qualsiasi parola o riga mentre la trascrizione è ancora in diretta, e ogni ascoltatore della trasmissione vede la modifica. Il sistema indica a chi conduce i candidati più probabili: le parole di cui il motore non era sicuro possono essere colorate e sottolineate, e chi conduce può scorrere i segmenti incerti uno alla volta invece di rileggere tutta la trascrizione. Tramite l'API, GET /v1/recordings/{id}/corrections elenca le correzioni di una registrazione e POST /v1/corrections/{id}/revert annulla una correzione; vedi il riferimento API. Anche una persona nella stanza, però, non può correggere una riga che nessuno ha sentito.
L'ultimo livello accetta che alcuni audio non siano recuperabili. Quando una riga ottiene un punteggio inferiore alla soglia di confidenza della trascrizione (confidence.hideBelow, 0,60 per impostazione predefinita), gli ascoltatori vedono al suo posto «Audio poco chiaro» invece di un'ipotesi, e quella riga non viene mai letta ad alta voce. Chi legge perde una riga; non ne riceve una inventata.
Le stesse domande che hanno dato forma a questi livelli valgono per qualsiasi dichiarazione di accuratezza di un fornitore, compresa la nostra.
Una breve lista di controllo per leggere qualsiasi dichiarazione di accuratezza:
VocalStack non pubblica un WER interno, per il primo motivo illustrato sopra: descriverebbe il nostro set di test, non il tuo audio. Misuriamo l'accuratezza in modo continuo. Quando confrontiamo altri sistemi, usiamo benchmark indipendenti pubblicati e cifre pubblicate dai fornitori, mai test privati. Il resto lo deve decidere il tuo audio.