En transskription med labels kræver, at begge svar er rigtige, og fordi labels ligger oven på ordene, kan en forkert label rettes uden at røre teksten.
En transskription af et møde besvarer to spørgsmål på én gang: hvad der blev sagt, og hvem der sagde det. Læseren ser ét job, et navn ved siden af hver replik. Under overfladen ligger to problemer, hver med sine egne input og sine egne måder at fejle på.
Talegenkendelse lytter efter ord. Den omsætter lyd til tekst og giver, når det gøres godt, et start- og sluttidspunkt for hvert ord. Den er ligeglad med, om stemmen skifter midt i en sætning; dens opgave er at få sætningen rigtig.
Speaker diarization lytter efter stemmer. Den kender ingen ord. Dens opgave er at dele tidslinjen op i taler og afgøre, hvilke taler der hører til samme person: Speaker 1, Speaker 2. Ordet er lånt fra »diary«, og det er et rimeligt billede af resultatet: en logbog over, hvem der havde ordet, og hvornår.
Tre beslægtede begreber blandes ofte sammen med det. Diarization siger, hvem der talte hvornår, uden at kende nogen. Speaker identification er at afgøre, hvilken kendt person et stykke tale tilhører, ved at vælge blandt indlæste stemmer. Speaker verification besvarer et ja-eller-nej-spørgsmål: er denne stemme virkelig person X? Leverandørers påstande bliver lettere at læse, når de tre holdes adskilt, for »speaker labels« kan betyde alt fra et groft gæt på taleskift til navne, der følger en person fra den ene optagelse til den næste. For at se, hvad disse labels kan og ikke kan love, må man kigge ind i diarizeren.
De fleste diarization-systemer arbejder i tre trin, ingen af dem involverer sprog.
Hvert trin kan fejle for sig selv. En stille taler overses. To ens stemmer flettes sammen. Én person, der skifter fra rolig til ivrig, deles i to.
Feltet måler det hele med diarization error rate, DER: andelen af taletid, der blev overset, fejlagtigt registreret som tale eller tilskrevet den forkerte taler, typisk med en tilgivelsesmargin (collar) på ca. et kvart sekund omkring hver grænse. Margenen findes, fordi ingen, hverken menneske eller maskine, kan placere et talerskifte til millisekundet. Den tolerance er fin, når man bedømmer en diarizer alene. Den er ikke fin i en transskription, hvor en grænse, der er et kvart sekund forkert, lander på et ord.
Her mødes de to problemer, og her afgøres kvaliteten af en transskription med labels. En diarizer placerer sine grænser med en vis upræcision, ofte en brøkdel af et sekund i begge retninger. En recognizer placerer ord på samme tidslinje. Lægger man de to oven på hinanden uden omtanke, havner en grænse inde i et ord, så halvdelen af »tomorrow« tilhører Speaker 1 og den anden halvdel Speaker 2.
Labels kan også være forkerte i et stykke tid, før de er rigtige. En diarizer bliver mere sikker på sine grupper, jo mere lyd den har hørt, så en tidlig label kan se forkert ud set i lyset af det, der kommer senere. På en live-transskription kan en label rettes, efter en linje er vist: VocalStack's realtime API sender en transcript.amended-frame, der retter teksten eller taleren på en bekræftet linje på stedet, så læseren ser en revision i stedet for en modsigelse.
Selv en perfekt placeret og stabil label er stadig kun et tal. Et tal er nok til at følge en samtale; et navn er det, folk vil læse.
En label bliver til et navn på to måder, og de bygger oven på hinanden.
Den første er navngivning inden for en optagelse. Hver taler, en transskription finder, får et indeks, talt fra 0. Enhver med adgang kan navngive hver taler under eller efter optagelsen. Navnet er et lag oven på ordene, så det kan sættes, ændres eller fjernes uden at røre teksten. Via API'et sker det med PUT /v1/recordings/{id}/speakers/{idx} og et name; et tomt navn fjerner det. En linje, hvor speaker er -1, har ingen label, enten fordi labels var slået fra, eller fordi linjen i et live-udkast endnu ikke er tilskrevet nogen.
Den anden er genkendelse på tværs af optagelser, identifikationsproblemet fra første afsnit. En diarizer kan kun sige, at to stemmer er forskellige, aldrig hvem de er. For at komme fra »forskellig« til »det her er Ana« har systemet brug for en reference: en gemt stemme, optaget fra en optagelse af netop den person. Tredive sekunder ren tale er minimum, og et par minutter er bedre. Prøven bør også lyde som de optagelser, den skal matches mod: den samme person på en laptopmikrofon og på en scenemikrofon kan lyde mindre ens for en maskine end to fremmede, optaget på samme måde. Når en stemme er gemt, sammenlignes hver taler, en transskription hører, med den, og et match fører navnet ind i transskriptionen. I VocalStack ligger det under Voices. Filtranskriptioner og live-sessioner i Dashboardet matcher automatisk dine gemte stemmer, mens en realtime API-session kun genkender de stemmer, du angiver i identifyVoices.
En gemt stemme er biometriske data: den kan genkende en person i enhver optagelse, og i VocalStack fungerer den også som en klon, der kan læse vedkommendes replikker højt. Dashboardet beder dig bekræfte, at du har personens tilladelse, før du gemmer en stemme, og en stemme kan slettes når som helst.
Alt dette forudsætter, at du overhovedet vil have labels. Det vil du ofte ikke.
En enkelt person, der holder et foredrag, behøver ikke »Speaker 1« foran hver linje. Publikum ved allerede, hvem der har mikrofonen. Derfor har indstillingen for speaker-labels tre positioner, og de er ens på en realtime-session, en udsendelse, en transskription og en optagelse.
auto i API'et). Linjer får en taler-label, når mere end én stemme høres; en optagelse med én taler forbliver ren tekst, og en anden stemme, der kommer til sent, bliver stadig fanget. Dashboardets nye formular for live-transskription starter her.En filupload tager den samme speakerLabels-indstilling, og realtime API'et lader dig ændre den midt i en stream; detaljerne står i API-referencen. Taleradskillelse og navngivning lægger aldrig noget til regningen (se prissiden for satserne), så valget handler om, hvad læseren skal se, ikke om hvad det koster.
Når den er slået til, er diarization god, men ikke magisk. To situationer slår den stadig.
Den første er overlap. Når to personer taler på samme tid, bærer et stykke lyd to stemmer. Overlap-bevidste diarizers findes i forskningen og i stigende grad i produkter: end-to-end neural diarization (EEND) behandler for eksempel »hvem der taler« som et sæt samtidige ja-eller-nej-spørgsmål i stedet for ét svar. De fleste produktionssystemer tildeler dog stadig én taler pr. stykke, og recognizeren ovenpå transskriberer én stemme ad gangen. Krydstale i en ophidset paneldebat er det sværeste lyd i feltet, og alle leverandørers labels bliver dårligere dér. Det er også, pålideligt, den del, alle vil citere bagefter.
Den anden er stemmer, der ligner hinanden meget. Søskende kan give embeddings, der ligger for tæt på hinanden til at blive adskilt pålideligt, især når de bytter korte replikker i en time. Telefonlyd gør det værre for alle: en smalbåndslinje samples med 8 kHz og bærer intet over ca. 3,4 kHz, men meget af det, der adskiller én stemme fra en anden, ligger over den grænse. To personer på samme telefonlinje lyder mere ens for en diarizer, end de gør for dig.
Det mest praktiske middel mod begge dele ligger opstrøms for enhver model: giv hver person sin egen mikrofon. Med én kanal pr. taler reduceres diarization til at spørge, hvilken kanal der er høj, overlap bliver to rene spor i stedet for ét mudret, og embeddings bliver aldrig bedt om at klare det svære. En enkelt bordmikrofon er billigere og næsten altid det, du har, og derfor findes resten af denne artikel.
Ingen af grænserne behøver at nå læseren uændret. Fordi labels er et lag oven på ordene, koster en forkert label aldrig dig teksten: taler-navne kan sættes eller fjernes på en optagelse på et hvilket som helst tidspunkt, og i en live-transskription kan værten omskrive ethvert ord eller enhver linje, mens den stadig kører, med hver rettelse markeret og kan fortrydes.
For ordsiden dækker hvad word error rate måler, og hvad den overser rettelseslagene i detaljer. WER er for recognizeren, hvad DER er for diarizeren, og en transskription har brug for, at begge er lave.