WER scorer et feil navn, et feil tall og en utelatt «ikke» like strengt som et utelatt «the». Vurder en transkripsjonsløsning etter hvilke feil den fanger, og om du kan se rettelsene, ikke etter tallet i overskriften.
Ordfeilrate (WER, word error rate) er standardmålet for talegjenkjenning. Ta en referansetranskripsjon som et menneske har kontrollert, legg maskinens utdata opp mot den ord for ord, og tell tre typer feil: erstatninger (et feil ord), innsettinger (et ord som aldri ble sagt) og utelatelser (et ord som mangler). Legg dem sammen og del på antall ord i referansen.
WER = (erstatninger + innsettinger + utelatelser) / antall ord i referansen
Oppstillingen gjøres ikke for hånd. De to transkripsjonene justeres etter minimal redigeringsavstand (Levenshtein-avstanden, brukt på ord i stedet for bokstaver): av alle måtene å pare utdataene med referansen velger scoreren den med færrest redigeringer, og teller dem. Fordi innsettinger teller, og nevneren er lengden på referansen, kan WER overstige 100 prosent: en modell som fyller et stille minutt med tekst scorer dårligere enn en som ikke skriver noe i det hele tatt.
Anta at referansen er «vi skal møte dr. Okafor klokka ni på torsdag», ni ord, og maskinen skriver «vi skal møte en lege klokka ni på tirsdag». Det er tre erstatninger (dr., Okafor, torsdag) over ni ord: en WER på 33 prosent. To tredeler av ordene er riktige, og du er likevel på feil møte, på feil dag. Hvis bare «torsdag» var feil, ville scoren vært 11 prosent. En versjon der alle ord er riktige, men med et lagt til «øh» som ingen sa, scorer også 11 prosent, fordi en innsetting teller like mye som en erstatning.
Før tellingen blir begge tekstene vanligvis normalisert, og valgene der flytter scoren like mye som modellen. Er «Dr» det samme som «Doctor»? Er «ni» det samme som «9»? Teller store og små bokstaver og tegnsetting? Streng scoring ville merket «Dr» mot «Doctor» som en erstatning. De fleste publiserte tall gjør alt med små bokstaver, fjerner tegnsetting og skriver alle tall på samme måte, enten som ord eller som siffer, før de sammenlignes. En leverandørs tall avhenger derfor stille av en normaliserer du ikke kan se. Språk som skrives uten mellomrom mellom ordene, som kinesisk, japansk og thai, har ingen tydelig ordgrense å telle på, og scores derfor med tegnfeilrate (CER) i stedet: samme formel, brukt på tegn.
To ting følger av dette. For det første: en WER på 5 prosent er ett ord av tjue, noe som utgjør flere hundre ord i en time lang tale. Til sammenligning oppgis menneskelige transkriberere ofte til omtrent 4 til 5 prosent i samtaletale, og et mye sitert resultat fra 2017 på det telefonbaserte Switchboard-korpuset plasserte en maskin på omtrent 5,1 prosent, selv om begge tallene avhenger av lydmaterialet og scoringsreglene. For det andre: tallet avhenger helt av testlyden. Ren opplest tale gir ett tall, og et støyende panel med aksenter og overlappende stemmer gir et helt annet. Et WER i overskriften beskriver leverandørens testsett like mye som leverandørens system.
Det er telleriet. Det det utelater, er hva hver feil koster leseren.
WER behandler hvert ord likt. Lesere gjør ikke det:
Hver av disse er én eller to feil i WER-kolonnen. I leserens kolonne spenner de fra ingenting til et annet møte på en annen dag. Så spørsmålet er ikke bare «hva er feilraten», men «hva slags feil, og hva fanger dem».
Flere lag fanger det talegjenkjenningen tar feil på, og hver endring blir registrert, slik at den kan inspiseres og reverseres. I en direkte transkripsjon skjer dette mens teksten fortsatt kommer: hver linje vises først som et utkast som kan endre seg, og blir så endelig (Forsinkelse i direkte oversettelse, forklart forklarer hvorfor).
Noen feil passer til lyden, men ikke til setningen: «der» der setningen trenger «dere». Disse kan fanges fra konteksten, og en rettelse når leserne som en synlig oppdatering (transcript.amended i API-et), ikke som en stille omskriving. Konteksten er god på ord setningen kan forutsi. Den er hjelpeløs med dem den ikke kan.
Navn og fagtermer er feilene konteksten ikke kan rette, fordi et navn ofte bare står én gang, uten noe rundt det å forutsi det ut fra. Et referansemanus løser dette: gi systemet talen, lysbildene eller en liste med navn og termer før du starter, og ordene deres får forrang foran det motoren hørte feil. Under opptaket følger manuset transkripsjonen som en teleprompter, slik at verten kan se hvor langt motoren er kommet. Et manus dekker ordene du kan forutse; støyende lyd og aksenter gir dem du ikke kan.
Noen feil kan bare en person i rommet se. Manuelle rettelser lar verten skrive om ethvert ord eller enhver linje mens transkripsjonen fortsatt er direkte, og hver lytter i sendingen ser endringen. Systemet peker verten mot de sannsynlige kandidatene: ord motoren var usikker på, kan markeres med farge og understrekes, og verten kan gå gjennom de usikre segmentene ett om gangen i stedet for å lese hele transkripsjonen om igjen. Gjennom API-et lister GET /v1/recordings/{id}/corrections en opptaksfils rettelser, og POST /v1/corrections/{id}/revert angrer en av dem; se API-referansen. Selv en person i rommet kan likevel ikke rette en linje ingen kunne høre.
Det siste laget godtar at noe lyd ikke kan gjenopprettes. Når en linje scorer under transkripsjonens konfidensgrense (confidence.hideBelow, 0,60 som standard), ser lytterne «Audio unclear» i stedet for et gjett, og linjen blir aldri lest opp. Leserne mister en linje; de får ingen oppdiktet.
Spørsmålene som formet disse lagene, gjelder for enhver leverandørs påstand om nøyaktighet, også vår.
En kort sjekkliste for å lese enhver påstand om nøyaktighet:
VocalStack publiserer ikke et internt WER-tall, av den første grunnen over: det ville beskrive vårt testsett, ikke din lyd. Vi måler nøyaktighet fortløpende. Der vi sammenligner andre systemer, bruker vi publiserte uavhengige benchmarker og leverandørpubliserte tall, aldri private tester. Resten er det din egen lyd skal avgjøre.