WER väger ett fel i ett namn, ett tal och ett saknat ”not” lika tungt som ett bortfallet ”the”. Bedöm ett transkriptionssystem efter vilka fel det fångar och om du kan se dess rättelser, inte efter dess huvudsiffra.
Word error rate är standardmåttet för taligenkänning. Ta en referenstext som en person har kontrollerat, ställ upp maskinens utdata mot den ord för ord och räkna tre slags fel: substitutioner (ett fel ord), insertioner (ett ord som aldrig sades) och deletioner (ett saknat ord). Summera dem och dela med antalet ord i referenstexten.
WER = (substitutioner + insertioner + deletioner) / antal ord i referenstexten
Uppställningen görs inte med blicken. De två texterna jämförs med minimal redigeringsdistans (Levenshtein-distans, tillämpad på ord i stället för bokstäver): av alla sätt att para ihop utdata med referensen väljer räknaren det som kräver minst redigeringar och räknar dem. Eftersom insertioner räknas och nämnaren är referensens längd kan WER överstiga 100 procent: en modell som fyller en tyst minut med text får ett sämre resultat än en som inte skriver något alls.
Anta att referensen är ”we will meet Dr Okafor at nine on Thursday”, nio ord, och att maskinen skriver ”we will meet the doctor at nine on Tuesday”. Det är tre substitutioner (Dr, Okafor, Thursday) på nio ord: en WER på 33 procent. Två tredjedelar av orden är rätt, och du är ändå på fel möte en fel dag. Om bara ”Thursday” var fel skulle siffran bli 11 procent. En version där alla ord är rätt men ett tillagt ”um” som ingen sade får också 11 procent, eftersom en insertion räknas lika mycket som en substitution.
Innan räkningen normaliseras båda texterna vanligtvis, och valen som görs där flyttar poängen lika mycket som modellen. Är ”Dr” samma ord som ”Doctor”? Är ”nine” samma sak som ”9”? Räknas versaler och skiljetecken? Strikt poängsättning skulle markera ”Dr” mot ”Doctor” som en substitution. De flesta publicerade siffror gör allt till gemener, tar bort skiljetecken och skriver alla tal på ett enda sätt, antingen som ord eller siffror, innan de jämförs. En leverantörs siffra beror alltså tyst på en normaliserare som du inte kan se. Språk som skrivs utan mellanslag mellan orden, som kinesiska, japanska och thai, har ingen tydlig ordgräns att räkna på, och därför poängsätts de i stället med teckenfelsfrekvens (CER): samma formel, tillämpad på tecken.
Två saker följer. För det första är en WER på 5 procent ett ord av tjugo, vilket blir flera hundra ord i ett timmeslångt föredrag. Som jämförelse anges mänskliga transkriptörer ofta till ungefär 4 till 5 procent på vardagligt samtal, och ett ofta citerat resultat från 2017 på telefonkorpusen Switchboard placerade en maskin på cirka 5,1 procent, men båda siffrorna beror på ljudet och poängreglerna. För det andra beror siffran helt på testljudet: rent uppläst tal ger en siffra, och en bullrig panel med accenter och överlappande röster ger en helt annan. En huvudsiffra för WER beskriver leverantörens testset lika mycket som leverantörens system.
Det var räkningen. Vad den utelämnar är kostnaden för varje fel för den som läser.
WER behandlar varje ord som lika viktigt. Läsare gör inte det:
Var och en av dessa är ett eller två fel i WER-kolumnen. I läsarens kolumn sträcker de sig från ingenting till ett annat möte på en annan dag. Så frågan är inte bara ”vad är felfrekvensen” utan ”vilka slags fel, och vad fångar dem”.
Flera lager fångar det igenkänningen missar, och varje ändring registreras så att den kan granskas och ångras. Vid livetranskribering sker detta medan texten fortfarande kommer in: varje rad visas först som ett utkast som kan ändras och blir sedan slutgiltig (Latens i liveöversättning, förklarad förklarar varför).
Vissa fel passar ljudet men inte meningen: ”their” där meningen behöver ”there”. Sådana kan rättas utifrån sammanhanget, och en rättelse når läsarna som en synlig uppdatering (transcript.amended i API:et), inte som en tyst omskrivning. Sammanhang är bra på ord som meningen kan förutsäga. Det är hjälplöst för de ord det inte kan förutsäga.
Namn och tekniska termer är de fel som sammanhang inte kan rätta, eftersom ett namn ofta bara förekommer en gång, med ingenting runt omkring att förutsäga det av. Ett referensmanus löser detta: ge systemet talet, bilderna eller en lista med namn och termer innan du börjar, så tar dess ord företräde framför det motorn hörde fel. Under inspelningen följer manuset transkriptet som en teleprompter, så att värden kan se hur långt motorn har kommit. Ett manus täcker de ord du kan förutse; brusigt ljud och accenter ger dem du inte kan förutsäga.
Vissa fel kan bara en person i rummet se. Manuella rättelser låter värden skriva om vilket ord eller vilken rad som helst medan transkriberingen fortfarande är live, och varje lyssnare i sändningen ser ändringen. Systemet pekar värden mot de troliga kandidaterna: ord som motorn var osäker på kan färgas och understrykas, och värden kan gå igenom de osäkra segmenten ett i taget i stället för att läsa om hela transkriptet. Via API:et listar GET /v1/recordings/{id}/corrections en inspelnings rättelser och POST /v1/corrections/{id}/revert ångrar en av dem; se API-referensen. Men inte ens en person i rummet kan rätta en rad som ingen kunde höra.
Det sista lagret godtar att en del ljud inte går att återställa. När en rad får en poäng under transkriptionens konfidensgräns (confidence.hideBelow, 0,60 som standard) ser lyssnarna ”Otydligt ljud” i dess ställe i stället för en gissning, och raden läses aldrig upp. Läsarna förlorar en rad; de får inte en påhittad.
Samma frågor som formade dessa lager gäller för alla leverantörers noggrannhetspåståenden, inklusive våra.
En kort checklista för att läsa vilket noggrannhetspåstående som helst:
VocalStack publicerar inte någon intern WER-siffra, av den första anledningen ovan: den skulle beskriva vårt testset, inte ditt ljud. Vi mäter noggrannheten fortlöpande. Där vi jämför andra system använder vi publicerade oberoende riktmärken och leverantörspublicerade siffror, aldrig privata tester. Resten får ditt eget ljud avgöra.