WER vurderer et forkert navn, et forkert tal og et manglende »ikke« lige strengt som et udeladt »det«. Bedøm et transskriptionssystem ud fra, hvilke fejl det fanger, og om du kan se dets rettelser, ikke ud fra tallet på forsiden.
Word error rate er standardmålet for talegenkendelse. Tag en referencetranskription, som et menneske har kontrolleret, stil maskinens output op over for den ord for ord, og tæl tre slags fejl: erstatninger (et forkert ord), indsættelser (et ord, der aldrig blev sagt) og udeladelser (et ord, der mangler). Læg dem sammen og divider med antallet af ord i referencen.
WER = (erstatninger + indsættelser + udeladelser) / antal ord i referencen
Opstillingen sker ikke med øjet. De to transskriptioner justeres efter minimal redigeringsafstand (Levenshtein-afstanden, anvendt på ord frem for bogstaver): ud af alle måder at parre output med referencen på vælger scoreren den med færrest redigeringer og tæller dem. Fordi indsættelser tæller med, og nævneren er referencens længde, kan WER overstige 100 procent: en model, der fylder et stille minut med tekst, scorer dårligere end en, der ikke skriver noget.
Antag, at referencen er »vi mødes med dr. Okafor klokken ni på torsdag«, ni ord, og maskinen skriver »vi mødes med lægen Olsen klokken ni på tirsdag«. Det er tre erstatninger (dr., Okafor og torsdag) over ni ord: en WER på 33 procent. To tredjedele af ordene er rigtige, og du er stadig til det forkerte møde på den forkerte dag. Hvis kun »torsdag« var forkert, ville scoren være 11 procent. En version med alle ord rigtige, men et tilføjet »øh«, som ingen sagde, får også 11 procent, fordi en indsættelse tæller lige så meget som en erstatning.
Inden optællingen normaliseres begge tekster normalt, og de valg, der træffes der, flytter scoren lige så meget som modellen. Er »Dr« det samme ord som »Doctor«? Er »ni« det samme som »9«? Tæller store og små bogstaver og tegnsætning? Streng scoring ville markere »Dr« over for »Doctor« som en erstatning. De fleste offentliggjorte scorer skriver alt med småt, fjerner tegnsætning og skriver alle tal på én måde, som ord eller som cifre, før de sammenlignes. En leverandørs tal afhænger derfor stille og roligt af en normalisering, du ikke kan se. Sprog, der skrives uden mellemrum mellem ordene, som kinesisk, japansk og thai, har ingen ren ordgrænse at tælle på, og de scores derfor med tegnfejlrate (character error rate, CER) i stedet: samme formel, anvendt på tegn.
To ting følger heraf. For det første svarer en WER på 5 procent til ét ord ud af tyve, altså flere hundrede ord i en times tale. Til sammenligning angives menneskelige transskribenter ofte til cirka 4 til 5 procent på samtalesprog, og et meget citeret resultat fra 2017 på telefonkorpusset Switchboard placerede en maskine på cirka 5,1 procent, men begge tal afhænger af lyden og scoringsreglerne. For det andet afhænger tallet helt af testlyden: ren oplæsning giver ét tal, og et støjende panel med accenter og overlappende stemmer giver et helt andet. En headline-WER beskriver leverandørens testsæt lige så meget som leverandørens system.
Det er optællingen. Det, den udelader, er, hvad hver fejl koster læseren.
WER behandler alle ord ens. Det gør læserne ikke:
Hver af disse er én eller to fejl i WER-kolonnen. I læserens kolonne spænder de fra ingenting til et andet møde på en anden dag. Spørgsmålet er derfor ikke kun »hvad er fejlraten«, men også »hvilke slags fejl, og hvad fanger dem«.
Flere lag fanger det, genkendelsen tager fejl af, og hver ændring registreres, så den kan undersøges og tilbagerulles. Ved live-transskription sker det, mens teksten stadig kommer ind: hver linje vises først som et udkast, der stadig kan ændres, og bliver derefter endelig (Latenstid i live-oversættelse, forklaret forklarer hvorfor).
Nogle fejl passer til lyden, men ikke til sætningen: »der« hvor sætningen kræver »deres«. Disse kan fanges ud fra konteksten, og en rettelse når læserne som en synlig opdatering (transcript.amended i API'et), ikke som en stille omskrivning. Kontekst er god til ord, som sætningen kan forudsige. Den er hjælpeløs over for dem, den ikke kan.
Navne og tekniske termer er de fejl, som konteksten ikke kan rette, fordi et navn ofte kun optræder én gang, uden noget omkring sig, der kan forudsige det. Et referencemanuskript løser det: giv systemet talen, slides eller en liste over navne og termer, inden du starter, og dets ord har forrang frem for det, motoren har hørt forkert. Under optagelsen følger manuskriptet transskriptionen som en teleprompter, så værten kan se, hvor langt motoren er nået. Et manuskript dækker de ord, du kan forudse; støj og accenter giver dem, du ikke kan.
Nogle fejl kan kun en person i lokalet se. Manuelle rettelser lader værten omskrive ethvert ord eller enhver linje, mens transskriptionen stadig er live, og alle lyttere på udsendelsen ser ændringen. Systemet peger værten mod de sandsynlige kandidater: ord, motoren var usikker på, kan farves og understreges, og værten kan gennemgå de usikre segmenter ét ad gangen i stedet for at læse hele transskriptionen igen. Via API'et lister GET /v1/recordings/{id}/corrections en optagelses rettelser, og POST /v1/corrections/{id}/revert fortryder en; se API-referencen. Men selv en person i lokalet kan ikke rette en linje, ingen kunne høre.
Det sidste lag accepterer, at noget lyd ikke kan genskabes. Når en linje scorer under transskriptionens konfidensgrænse (confidence.hideBelow, som standard 0,60), ser lyttere »Audio unclear« i stedet for et gæt, og linjen bliver aldrig læst op. Læsere mister en linje; de får ikke en opdigtet én.
De samme spørgsmål, der formede disse lag, gælder for enhver leverandørs nøjagtighedspåstand, også vores.
En kort tjekliste til at læse enhver nøjagtighedspåstand:
VocalStack offentliggør ikke et internt WER-tal, af den første grund ovenfor: det ville beskrive vores testsæt, ikke din lyd. Vi måler nøjagtighed løbende. Hvor vi sammenligner med andre systemer, bruger vi offentliggjorte uafhængige benchmarks og leverandørers egne offentliggjorte tal, aldrig private tests. Resten er for din egen lyd at afgøre.