WER telt een verkeerde naam, een verkeerd getal en een ontbrekend "niet" even zwaar als een weggevallen "de". Beoordeel een transcriptiesysteem op de fouten die het vangt en of je de correcties kunt zien, niet op het kopcijfer.
Word error rate (WER) is de standaardmaatstaf voor spraakherkenning. Neem een referentietranscript dat een mens heeft gecontroleerd, leg de uitvoer van de machine woord voor woord ernaast en tel drie soorten fouten: substituties (een verkeerd woord), invoegingen (een woord dat nooit is uitgesproken) en weglatingen (een woord dat ontbreekt). Tel ze op en deel door het aantal woorden in het referentietranscript.
WER = (substituties + invoegingen + weglatingen) / woorden in de referentie
Het naast elkaar leggen gebeurt niet met het oog. De twee transcripten worden uitgelijnd met de minimale editafstand (de Levenshtein-afstand, toegepast op woorden in plaats van letters): van alle manieren om de uitvoer aan de referentie te koppelen, kiest de scorer de manier met de minste bewerkingen en telt die. Omdat invoegingen meetellen en de noemer de lengte van de referentie is, kan WER boven de 100 procent uitkomen: een model dat een stille minuut vol tekst schrijft, scoort slechter dan een model dat niets schrijft.
Stel dat de referentie is "we spreken Dr Okafor om negen uur op donderdag", negen woorden, en dat de machine schrijft "we spreken de dokter om negen uur op dinsdag". Dat zijn drie substituties (Dr, Okafor, donderdag) op negen woorden: een WER van 33 procent. Tweederde van de woorden klopt, en je zit toch op de verkeerde afspraak op de verkeerde dag. Als alleen "donderdag" fout was, zou de score 11 procent zijn. Een versie waarin elk woord klopt maar met een extra "eh" die niemand zei, scoort ook 11 procent, omdat een invoeging even hard telt als een substitutie.
Voordat er geteld wordt, worden beide teksten meestal genormaliseerd, en de keuzes die daarbij worden gemaakt, verschuiven de score net zoveel als het model. Is "Dr" hetzelfde woord als "dokter"? Is "negen" hetzelfde als "9"? Tellen hoofdletters en leestekens mee? Strikte scoring zou "Dr" tegenover "dokter" als substitutie aanrekenen. De meeste gepubliceerde scores zetten alles in kleine letters, halen leestekens weg en schrijven elk getal op dezelfde manier, als woord of als cijfer, voordat ze vergelijken. Het cijfer van een leverancier hangt daardoor stilletjes af van een normaliseerder die je niet kunt zien. Talen die zonder spaties tussen de woorden worden geschreven, zoals Chinees, Japans en Thai, hebben geen duidelijke woordgrens om te tellen. Daarom worden ze gescoord met de character error rate (CER): dezelfde formule, maar toegepast op tekens.
Dat betekent twee dingen. Ten eerste: een WER van 5 procent is één woord op de twintig, wat in een uur praten al snel enkele honderden woorden zijn. Ter vergelijking: menselijke transcribenten worden bij gesprekken vaak op ongeveer 4 tot 5 procent gezet, en een vaak aangehaald resultaat uit 2017 op het Switchboard-telefooncorpus kwam voor een machine op ongeveer 5.1 procent uit, al hangen beide cijfers af van de audio en de scoringsregels. Ten tweede hangt het getal volledig af van de testaudio: schone voorgelezen spraak geeft het ene cijfer, en een luidruchtig paneel met accenten en door elkaar praten geeft een heel ander. Een kopcijfer voor WER beschrijft de testset van de leverancier evenveel als het systeem van de leverancier.
Dat is de telling. Wat ze weglaat, is de prijs van elke fout voor de persoon die het leest.
WER telt elk woord even zwaar. Lezers doen dat niet:
Elk van deze is één of twee fouten in de WER-kolom. In de kolom van de lezer loopt het uiteen van niets tot een andere vergadering op een andere dag. De vraag is dus niet alleen "wat is het foutenpercentage", maar ook "welke soorten fouten, en wat vangt ze".
Verschillende lagen vangen op wat de herkenning fout doet, en elke wijziging wordt vastgelegd, zodat ze kan worden gecontroleerd en teruggedraaid. Bij livetranscriptie gebeurt dit terwijl de tekst nog binnenkomt: elke regel verschijnt eerst als concept dat nog kan veranderen, en wordt daarna definitief (Live vertaling, vertraging uitgelegd legt uit waarom).
Sommige fouten passen bij het geluid maar niet bij de zin: "hier" waar de zin "er" nodig heeft. Die kunnen op basis van context worden gevangen, en een correctie bereikt lezers als een zichtbare update (transcript.amended in de API), niet als een stille herschrijving. Context is goed bij woorden die de zin kan voorspellen. Bij woorden die de zin niet kan voorspellen, helpt het niets.
Namen en technische termen zijn de fouten die context niet kan oplossen, omdat een naam vaak maar één keer voorkomt, zonder iets eromheen waaruit hij te voorspellen is. Een referentiescript lost dit op: geef het systeem vóór je begint de spraak, de slides of een lijst met namen en termen, en de woorden daaruit krijgen voorrang op wat de engine verkeerd heeft verstaan. Tijdens de opname volgt het script de transcriptie als een teleprompter, zodat de host ziet hoe ver de engine is. Een script dekt de woorden die je kunt voorspellen; ruis en accenten leveren de woorden op die je niet kunt voorspellen.
Sommige fouten ziet alleen een persoon in de zaal. Handmatige correcties laten de host elk woord of elke regel herschrijven terwijl de transcriptie nog live is, en elke luisteraar op de uitzending ziet de wijziging. Het systeem wijst de host op de waarschijnlijke kandidaten: woorden waar de engine onzeker over was, kunnen worden gekleurd en onderstreept, en de host kan de onzekere segmenten één voor één doorlopen in plaats van het hele transcript opnieuw te lezen. Via de API geeft GET /v1/recordings/{id}/corrections de correcties van een opname weer, en POST /v1/corrections/{id}/revert maakt er één ongedaan; zie de API-referentie. Zelfs een persoon in de zaal kan echter geen regel corrigeren die niemand kon horen.
De laatste laag accepteert dat sommige audio niet te herstellen is. Wanneer een regel onder de betrouwbaarheidsdrempel van de transcriptie scoort (confidence.hideBelow, standaard 0.60), zien luisteraars op die plek "Audio unclear" in plaats van een gok. De regel wordt nooit voorgelezen. Lezers missen een regel, maar krijgen geen verzonnen regel erbij.
De vragen die tot deze lagen hebben geleid, gelden voor elke accuraatheidsclaim van een leverancier, ook voor die van ons.
Een korte checklist voor het lezen van elke accuraatheidsclaim:
VocalStack publiceert geen intern WER-cijfer, om de eerste reden hierboven: het zou onze testset beschrijven, niet jouw audio. We meten de nauwkeurigheid voortdurend. Waar we andere systemen vergelijken, gebruiken we gepubliceerde onafhankelijke benchmarks en door leveranciers gepubliceerde cijfers, nooit privétests. De rest is aan jouw eigen audio om te beslissen.