O transcriere cu etichete are nevoie de ambele răspunsuri corecte, iar pentru că etichetele stau deasupra cuvintelor, unul greșit poate fi reparat fără să atingi textul.
Transcrierea unei ședințe răspunde la două întrebări deodată: ce s-a spus și cine a spus. Cititorul vede o singură sarcină, un nume lângă fiecare replică. Dedesubt sunt două probleme, fiecare cu intrările și modurile de eșec proprii.
Recunoașterea vorbirii ascultă cuvintele. Transformă audio în text și, când e făcută bine, dă un moment de început și de sfârșit pentru fiecare cuvânt. Nu o interesează dacă vocea s-a schimbat la mijlocul unei fraze; treaba ei este să facă fraza corectă.
Diarizarea vorbitorilor ascultă vocile. Nu cunoaște cuvintele. Sarcina ei este să împartă cronologia în replici și să spună ce replici aparțin aceleiași persoane: Speaker 1, Speaker 2. Cuvântul vine de la „diary” (jurnal), iar comparația este potrivită pentru rezultat: un jurnal al celor care au avut cuvântul și al momentului în care l-au avut.
Trei termeni apropiați se amestecă ușor cu acesta. Diarizarea spune cine a vorbit și când, fără să știe cine este vorbitorul. Identificarea vorbitorului spune cărei persoane cunoscute îi aparține o porțiune de vorbire, alegând dintr-un set de voci înregistrate. Verificarea vorbitorului răspunde la o întrebare cu da sau nu: este această voce chiar persoana X? Afirmațiile furnizorilor se înțeleg mai bine când cei trei termeni sunt ținuți separat, pentru că „etichetele de vorbitor” pot însemna orice, de la o estimare aproximativă a limitelor replicilor până la nume care urmează o persoană de la o înregistrare la alta. Ca să vezi ce pot și ce nu pot promite aceste etichete, privește în interiorul diarizorului.
Majoritatea sistemelor de diarizare funcționează în trei pași, niciunul nu implică limbajul.
Fiecare pas poate greși pe cont propriu. Un vorbitor încet este ratat. Două voci asemănătoare sunt unite. Un om care trece de la calm la entuziasmat este despărțit în doi.
Domeniul măsoară toate acestea cu eroarea de diarizare, DER: proporția din timpul de vorbire care a fost ratată, detectată fals ca vorbire sau atribuită vorbitorului greșit, de obicei cu o marjă de iertare (forgiveness collar) de aproximativ un sfert de secundă în jurul fiecărei limite. Marja există pentru că nimeni, om sau mașină, nu poate așeza o schimbare de vorbitor exact la milisecundă. Această toleranță este în regulă pentru evaluarea unui diarizor de sine stătător. Nu este în regulă pentru o transcriere, unde o limită decalată cu un sfert de secundă cade peste un cuvânt.
Aici se întâlnesc cele două probleme, și aici se decide calitatea unei transcrieri cu etichete. Un diarizor își plasează limitele cu o anumită imprecizie, adesea o fracțiune de secundă în una sau alta. Un recunoscător plasează cuvintele pe aceeași cronologie. Dacă le suprapui direct, o limită cade în interiorul unui cuvânt, astfel că jumătate din „mâine” aparține Speaker 1, iar cealaltă jumătate Speaker 2.
Etichetele pot fi greșite o vreme înainte de a deveni corecte. Un diarizor devine mai sigur de grupurile sale cu cât a auzit mai mult audio, așa că o etichetă timpurie poate părea greșită după standardele a ceea ce vine mai târziu. Într-o transcriere live, o etichetă poate fi revizuită după ce o linie a fost afișată: API-ul realtime al VocalStack trimite un cadru transcript.amended care corectează în loc textul sau vorbitorul unei linii deja confirmate, astfel că cititorul vede o revizuire, nu o contradicție.
Chiar și o etichetă perfect plasată și perfect stabilă este doar un număr. Un număr ajunge ca să urmărești o conversație; un nume este ceea ce vor oamenii să citească.
O etichetă devine nume în două moduri, care se construiesc unul pe altul.
Primul este denumirea în interiorul unei înregistrări. Fiecare vorbitor găsit de o transcriere primește un index, numărat de la 0. Oricine are acces poate denumi fiecare vorbitor în timpul sau după înregistrare. Numele este un strat peste cuvinte, deci poate fi setat, schimbat sau șters fără să atingi textul. Prin API, asta înseamnă PUT /v1/recordings/{id}/speakers/{idx} cu un name; un nume gol îl șterge. O linie al cărei speaker este -1 nu are etichetă, fie pentru că etichetele erau dezactivate, fie pentru că, într-o ciornă live, linia nu a fost încă atribuită.
Al doilea este recunoașterea între înregistrări, problema identificării din prima secțiune. Un diarizor poate spune doar că două voci sunt diferite, niciodată cine sunt. Ca să treci de la „diferit” la „aceasta este Ana”, sistemul are nevoie de o referință: o voce salvată, luată dintr-o înregistrare a acelei persoane. Minimul este treizeci de secunde de vorbire curată, iar câteva minute sunt mai bune. Proba trebuie să sune și ca înregistrările cu care va fi comparată: aceeași persoană pe microfonul unui laptop și pe microfonul de scenă poate suna mai puțin asemănător pentru o mașină decât doi străini înregistrați la fel. Odată ce o voce este salvată, fiecare vorbitor auzit de o transcriere este comparat cu ea, iar o potrivire duce numele în transcriere. În VocalStack, asta se găsește sub Voci; transcrierile de fișiere și sesiunile live din Dashboard se potrivesc automat cu vocile tale salvate, iar o sesiune prin API-ul realtime recunoaște doar vocile pe care le listezi în identifyVoices.
O voce salvată este un date biometrice: poate recunoaște o persoană în orice înregistrare, iar în VocalStack servește și drept clonă, care poate citi cu voce tare replicile ei. Dashboard-ul cere să confirmi că ai permisiunea persoanei înainte de a salva una, iar o voce poate fi ștearsă oricând.
Toate acestea presupun că vrei etichete. Adesea nu vrei.
Un singur om care citește o prelegere nu are nevoie de „Speaker 1” în fața fiecărei linii. Publicul știe deja cine are microfonul. Așa că setarea pentru etichete de vorbitori are trei poziții, iar ele sunt aceleași la o sesiune realtime, la o transmisiune, la o transcriere și la o înregistrare.
auto în API). Liniile sunt etichetate cu vorbitorul când se aude mai mult de o voce; o înregistrare cu un singur vorbitor rămâne text simplu, iar o a doua voce care intră târziu este tot prinsă. Formularul nou de transcriere live din Dashboard pornește de aici.Încărcarea unui fișier folosește aceeași opțiune speakerLabels, iar API-ul realtime îți permite să schimbi setarea în mijlocul fluxului; detaliile se află în referința API. Separarea și denumirea vorbitorilor nu adaugă niciodată la factură (pagina de prețuri are tariful), deci alegerea ține de ce ar trebui să vadă cititorul, nu de cât costă.
Odată activată, diarizarea este bună, dar nu magică. Două situații o depășesc încă.
Prima este suprapunerea. Când două persoane vorbesc deodată, o porțiune de audio poartă două voci. Diarizoarele conștiente de suprapuneri există în cercetare și, tot mai mult, în produse: diarizarea neuronală end-to-end (EEND), de exemplu, tratează „cine vorbește” ca pe un set de întrebări simultane cu da sau nu, nu ca pe un singur răspuns. Majoritatea sistemelor de producție, totuși, atribuie încă un singur vorbitor per porțiune, iar recunoscătorul de deasupra transcrie câte o voce pe rând. Vorbirea peste cap într-un panel aprins este cel mai greu audio din domeniu, iar etichetele oricărui furnizor se înrăutățesc acolo. Este, sigur, și partea pe care toți vor s-o citeze după aceea.
A doua este vocile foarte asemănătoare. Frații pot produce embedding-uri prea apropiate ca să fie separate sigur, mai ales când își schimbă replici scurte timp de o oră. Audio de telefon agravează lucrurile pentru toată lumea: o linie de bandă îngustă este eșantionată la 8 kHz și nu transportă nimic peste aproximativ 3,4 kHz, deși o mare parte din ceea ce deosebește o voce de alta se află peste această limită. Două persoane de pe aceeași linie de telefon sună mai asemănător pentru un diarizor decât sună pentru tine.
Cel mai practic remediu pentru amândouă se află înaintea oricărui model: dă fiecărei persoane propriul microfon. Cu un canal per vorbitor, diarizarea se reduce la a întreba care canal e cel mai tare, suprapunerea devine două piste curate în loc de una încurcată, iar embedding-urile nu sunt puse să facă partea grea. Un singur microfon de masă este mai ieftin și aproape întotdeauna ceea ce ai la îndemână, motiv pentru care restul acestui articol există.
Niciuna dintre limite nu trebuie să ajungă neschimbată la cititor. Pentru că etichetele sunt un strat peste cuvinte, o etichetă greșită nu te costă niciodată textul: numele vorbitorilor pot fi setate sau șterse pe o înregistrare în orice moment, iar într-o transcriere live gazda poate rescrie orice cuvânt sau linie cât timp rulează, fiecare corecție fiind marcată și putând fi anulată.
Pentru partea de cuvinte, ce măsoară rata de eroare a cuvintelor și ce ratează acoperă în detaliu straturile de corecție; WER este pentru recunoscător ceea ce DER este pentru diarizor, iar o transcriere are nevoie ca ambele să fie scăzute.