O aplikaci detekce dyslexie
Tato aplikace demonstruje výsledky bakalářské práce Richarda Martince, vypracované pod vedením Ing. Igora Szőke, Ph.D.
Hlavním cílem práce bylo natrénovat a validovat klasifikátor dyslexie použitím datasetu nahrávek čtených projevů dětí, pořízeného FF MUNI. Součástí bylo samozřejmě ozkoušení více přístupů, například stran zpracování vstupních dat či typu klasifikátoru.
Logo aplikace (a práce na Excel@FIT) znázorňuje čtenáře (ať už dyslektika či intakta) a převod jeho řeči na feature vektor. Středem loga pak je znázornění feature prostoru s vektory (tečky) a hyperplane (křivka), oddělující vektory dle jejich klasifikace.
Více informací k práci lze vyčíst z plakátu či doprovodného článku.
Jak bude s audionahrávkou nakládáno?
Zaškrtnutím souhlasu o použití nahrávky k výzkumným účelům umožňujete, aby Vámi odeslaná audionahrávka byla používána k výzkumným účelům (zpracování řeči, trénování modelů umělé inteligence, atd.) zaměstnanci a studenty FIT VUT. Umožňujete rovněž případné zveřejnění anonymizovaného derivátu Vaší nahrávky (např. v podobě embeddingů) pro použití širší veřejností.
Ukázkové klasifikace
Při testování funkčnosti této webové aplikace pořídil autor i vedoucí práce několik nahrávek, které byly následně aplikací klasifikovány. Pro referenci, jak výsledné UI klasifikace vypadá, jsou zde uvedeny následující vzorky:
Zde je ukázková klasifikace nahrávky, ve které čte text intakt přirozenou rychlostí.
Zde je ukázková klasifikace nahrávky, ve které intakt napodobuje příznaky dyslexie nepravidelnou, pomalejší rychlostí čtení.
O klasifikátorech dyslexie
Výčet všech modelů, které se mohou použít ke klasifikaci dyslexie z audionahrávky. Ve všech případech se ke klasifikaci používá support vector machine (konkrétně lineární SVM).
V některých případech může dojít k chybě při extrakci některých features (např. aligner, který vyžaduje, aby se přečetl celý text). V takovém případě se přeskočí klasifikace těch modelů, které tyto features používají.
Linear SVM (mean)
Vstupní audionahrávka je zpracována modelem HuBERT. Výstupní features (konkrétně z 6. vrstvy), tj. sekvence 1024D vektorů (1 vektor / 20ms zvuku), jsou zprůměrovány do jediného 1024D vektoru, který je následně použit ke klasifikaci.
Linear SVM (align)
Podobný postup, jako u modelu výše. Features jsou nicméně nejprve rozděleny na oddělená slova (na základě dat získaných z forced alignmentu). Seskupené vektory se odděleně zprůměrují a jejich průměry se pak zprůměrují do jediného vektoru. Ve výsledku tedy features každého slova mají stejnou váhu.
Linear SVM (ASR)
Využije se přepisu pořízeného modelem Parakeet k sestavení vlastních features (např. rychlost čtení, poměr ticha a řeči). K features je rovněž zahrnuta hlasitost nahrávky (SNR).
Jelikož jsou u tohoto modelu features sestaveny známými metodami, je známo, co konkrétně reprezentují (narozdíl od features z modelu HuBERT). Při validaci modelů vyšlo najevo, že trénovací a validační datasety obsahují bias (dozvuk dvou odlišných místností), který koresponduje s klasifikací D/I a zkresluje úspěšnost modelů. Tento bias pravděpodobně na tento model nemá vliv, jelikož metody pro získání features dozvuk místnosti nezohledňují.
Nutno podotknout, že tento model nezohledňuje všechny příznaky dyslexie (např. komolení slov a jejich pořadí).
Linear SVM (transcript)
Využije se forced alignments k sestavení vlastních features (např. rychlost čtení, poměr ticha a řeči). K features je rovněž zahrnuta hlasitost nahrávky (SNR).
Tento model může mít oproti modelu výše (ASR) zhoršenou úspěšnost, jelikož aligner se v nahrávce snaží najít konkrétní slova dle transkriptu (narozdíl od ASR, kde se přepis pořizuje naslepo); ve výsledku pak může na místa v nahrávce přiřazovat slova, která se tam vůbec nevyskytují.
Detaily aplikace
Kromě Pythonu, který je používán k extrakci features a jejich klasifikaci, se na backendu užívá PHP frameworku Symfony. Vzhledem k časovým omezením nebylo možné zatím aplikaci umístit na adekvátnější server, proto nyní běží na domácím homelabu, přičemž vnější přístup je zařízen přes VPS s proxy.
Více informací