WER liczy złe nazwisko, złą liczbę i pominięte „nie” tak samo jak pominięte „no”. Oceniaj system transkrypcji po tym, jakie błędy wyłapuje i czy widać jego poprawki, a nie po wskaźniku z nagłówka.
Współczynnik błędów słów (WER) to standardowa miara w rozpoznawaniu mowy. Bierze się przepisaną przez człowieka transkrypcję wzorcową, ustawia obok niej wynik maszyny słowo po słowie i liczy trzy rodzaje pomyłek: zamiany (złe słowo), wstawienia (słowo, którego nikt nie powiedział) i usunięcia (brakujące słowo). Sumuje się je i dzieli przez liczbę słów w transkrypcji wzorcowej.
WER = (zamiany + wstawienia + usunięcia) / liczba słów w transkrypcji wzorcowej
Dopasowania nie robi się na oko. Obie transkrypcje wyrównuje się według minimalnej odległości edycyjnej (odległości Levenshteina, liczonej na słowach, a nie na literach): spośród wszystkich sposobów zestawienia wyniku z wzorcem narzędzie oceniające wybiera ten z najmniejszą liczbą edycji i liczy właśnie je. Ponieważ wstawienia się liczą, a mianownikiem jest długość wzorca, WER może przekroczyć 100 procent: model, który wypełnia cichą minutę tekstem, wypada gorzej niż ten, który nie pisze nic.
Załóżmy, że wzorzec brzmi „spotkamy się z dr Okafor o dziewiątej w czwartek”, czyli dziewięć słów, a maszyna pisze „spotkamy się z lekarzem Makowskim o dziewiątej w piątek”. To trzy zamiany (dr, Okafor, czwartek) na dziewięciu słowach: WER wynosi 33 procent. Dwie trzecie słów są poprawne, a mimo to jesteś na złym spotkaniu w zły dzień. Gdyby zły był tylko „czwartek”, wynik wyniósłby 11 procent. Wersja, w której wszystkie słowa są dobre, ale dopisano „yyy”, którego nikt nie powiedział, też dostaje 11 procent, bo wstawienie liczy się tak samo jak zamiana.
Przed liczeniem oba teksty zwykle się normalizuje, a wybory dokonane na tym etapie przesuwają wynik tak samo jak sam model. Czy „dr” i „doktor” to to samo słowo? Czy „9” i „dziewięć” to to samo? Czy wielkość liter i interpunkcja się liczą? Ścisła ocena potraktuje „dr” i „doktor” jako zamianę. Większość publikowanych wyników zamienia wszystko na małe litery, usuwa interpunkcję i zapisuje każdą liczbę w jeden sposób, słownie albo cyframi, zanim porówna teksty. Wynik dostawcy zależy więc po cichu od normalizatora, którego nie widać. Języki pisane bez spacji między wyrazami, takie jak chiński, japoński i tajski, nie mają czytelnej granicy słów, więc ocenia się je współczynnikiem błędów znaków (CER): tym samym wzorem, zastosowanym do znaków.
Z tego wynikają dwie rzeczy. Po pierwsze, WER 5 procent to jedno słowo na dwadzieścia, czyli kilkaset słów w godzinnej rozmowie. Dla porównania ludzcy transkrybenci mają często podawane około 4–5 procent w mowie potocznej, a często cytowany wynik z 2017 roku na korpusie telefonicznym Switchboard wskazał dla maszyny około 5,1 procent, choć obie liczby zależą od nagrania i reguł oceny. Po drugie, wynik zależy całkowicie od nagrania testowego: czyste czytane nagranie daje jedną wartość, a hałaśliwa panelowa dyskusja z akcentami i nakładającymi się głosami daje zupełnie inną. Wskaźnik z nagłówka opisuje zestaw testowy dostawcy równie mocno, co jego system.
To jest liczenie. Czego nie uwzględnia, to koszt każdego błędu dla czytającego.
WER traktuje każde słowo jednakowo. Czytelnicy już nie:
Każdy z tych błędów to jeden albo dwa błędy w kolumnie WER. W kolumnie czytelnika mieszczą się od niczego do innego spotkania w innym dniu. Dlatego pytanie brzmi nie tylko „jaki jest wskaźnik błędów”, ale też „jakie to błędy i co je wyłapuje”.
Kilka warstw wyłapuje to, czego rozpoznawanie się myli, a każda zmiana jest zapisywana, żeby można ją było sprawdzić i cofnąć. Przy transkrypcji na żywo dzieje się to, gdy tekst wciąż napływa: każda linia pojawia się najpierw jako szkic, który może się jeszcze zmienić, a potem staje się ostateczna (Opóźnienie tłumaczenia na żywo, wyjaśnione wyjaśnia dlaczego).
Niektóre błędy pasują do dźwięku, ale nie do zdania: „morze” tam, gdzie zdanie wymaga „może”. Te błędy może wyłapać kontekst, a poprawka trafia do czytelników jako widoczna aktualizacja (transcript.amended w API), a nie jako cicha przeróbka. Kontekst dobrze radzi sobie ze słowami, które zdanie potrafi przewidzieć. Przy pozostałych jest bezradny.
Nazwy i terminy to błędy, których kontekst nie naprawi, bo nazwisko często pada tylko raz i nie ma wokół niego niczego, co by je przewidywało. Skrypt referencyjny rozwiązuje to: przed rozpoczęciem podaje się systemowi mowę, slajdy lub listę nazwisk i terminów, a jego słowa mają pierwszeństwo przed tym, co silnik źle usłyszał. Podczas nagrania skrypt podąża za transkrypcją jak teleprompter, więc prowadzący widzi, jak daleko zaszedł silnik. Skrypt obejmuje słowa, które da się przewidzieć; hałaśliwy dźwięk i akcenty dają te, których przewidzieć się nie da.
Niektórych błędów widzi tylko człowiek w sali. Ręczne poprawki pozwalają prowadzącemu przepisać dowolne słowo lub linię, dopóki transkrypcja trwa na żywo, a każdy słuchacz transmisji widzi zmianę. System wskazuje prawdopodobnych kandydatów: słowa, co do których silnik był niepewny, można podkreślić kolorem i podkreśleniem, a prowadzący przechodzi przez niepewne fragmenty jeden po drugim, zamiast czytać całą transkrypcję od nowa. Przez API GET /v1/recordings/{id}/corrections zwraca poprawki nagrania, a POST /v1/corrections/{id}/revert cofa jedną z nich; zob. dokumentację API. Nawet człowiek w sali nie poprawi jednak linii, której nikt nie usłyszał.
Ostatnia warstwa przyjmuje, że część dźwięku nie da się odzyskać. Gdy linia ma wynik poniżej progu pewności transkrypcji (confidence.hideBelow, domyślnie 0.60), słuchacze zamiast zgadywanki widzą „Dźwięk niewyraźny”, a linii nigdy nie odczytuje się na głos. Czytelnicy tracą linię; nie zyskują zmyślonej.
Te same pytania, które ukształtowały te warstwy, dotyczą każdej deklaracji dostawcy o dokładności, także naszej.
Krótka lista kontrolna do czytania każdej deklaracji dokładności:
VocalStack nie publikuje wewnętrznego wskaźnika WER, z pierwszego powodu podanego wyżej: opisywałby nasz zestaw testowy, a nie Twoje nagrania. Dokładność mierzymy w sposób ciągły. Gdy porównujemy inne systemy, korzystamy z opublikowanych niezależnych benchmarków i danych podanych przez dostawców, nigdy z prywatnych testów. Resztę rozstrzygną Twoje własne nagrania.