Fonemų atpažinimas

  1. Fonemos sąvoka
  2. Fonemų skaitmeniniai signalai
  3. Fonemų atpažinimo kompiuteriu uždavinys
  4. Lango funkcijos
  5. Paprasčiausi fonemos požymiai
  6. Tiesinė prognozės požymiai
  7. Adaptyvūs požymiai
  8. Kepstro požymiai
  9. Fonemų atpažinimas
  10. Praktinis darbas
  11. Literatūra

Fonemos sąvoka

Kalbant apie fonemų atpažinimą pirma reikėtų išsiaiškinti fonemos termino prasmę. Mes nuo mokyklos laikų žinome raidžių (a, ą, b, c, ... ,ž) prasmę. Raidės naudojamos rašytine forma užrašyti kalbą, mintis ir panašiai. Fizine prasme kalba susidaro kalbos padagrais (http://ualgiman.dtiltas.lt) generuojant atmosferinio slėgio mikropokyčius, kurie plinta oru ir yra priimami bei suvokiami žmogaus klausos aparatu.

Fonema yra vadinama neskaidoma elementari kalbą sudarančio garsinio signalo dalis. Panašiai kaip ir raidžių atvejų, kiekviena kalba turi jai būdingų fonemų (garsų) baigtinį sąrašą, kurį galima vadinti "fonemų abėcėle". Lietuvių kalbai fonemų abėcėlė kol kas nėra standartizuota, tačiau kuriant kalbos sintezavimo sistemas autoriai sudaro tokių fonemų sąrašus. Plačiau apie tai galite paskaityti P. Kasparaitis. Kompiuterinė lingvistika.

Fonemų skaitmeniniai signalai

Kalbos signalą sudarantys atmosferinio slėgio mikropokyčiai vadinami garso slėgiu. Matematine prasme garso slėgis yra reali vieno tolydaus kintamojo (laiko t) funkcija.
Inžinerijoje tokio tipo funkcijos vadinamos analoginiais signalais. Tačiau kompiuteriais apdoroti tiesiogiai analoginių signalų negalima, nes jie pritaikyti apdoroti skaitmeninę informaciją (t.y. informaciją, kuri išreiškiama baigtine 0/1 seka).
Todėl specialūs įrenginiai (pvz. asmeninių kompiuterių garso plokštės) diskretizuoja analoginį signalą laike ir kvantuoja garso slėgio reikšmes.

1 paveikslėlis iliustruoja analoginio signalo diskretizavimo ir kvantavimo operacijas, kurias atlikus, analogonis signalas (1) po diskretizavimo laike virsta diskretiniu signalu (2), o po reikšmių kvantavimo - skaitmeniniu signalu. Dabartiniuose kompiuteriuose saugomi tik skaitmeniniai signalai.

1 paveikslėlis. Analoginio signalo (1) diskretizavimas laike (2) ir reikšmių kvantizavimas (3)
http://www.mif.vu.lt/~pijus/CL/KircTr.pdf

Fonemų atpažinimo kompiuteriu uždavinys

Rašytinio teksto užrašymas fonemomis (garsais) vadinamas transkripcija. Sprendžiant kalbos atpažinimo uždavinį kompiuteriu galima imituoti skaitymo procesą. Mokykloje mes pirma išmokome atpažinti rašytinio teksto atskiras raides ("a", "b" ir t.t.), po to jas jungėme į skiemenis ir t.t. Pirmojo skaitymo išmokimo etapo ("raidžių atpažinimas") analogas kalbos kompiuterinio atpažinimo atveju būtų "fonemų atpažinimas". Šiuo atveju vietoje analoginių grafinių simbolių turime kalbos signalo skaitmenį signalą kompiuteryje, kurį reikia paversti vienu kokios nors fonemos simboliu.

2 ir 3 paveikslėliuose pateikti trumpojo balsio "a" ir sprogstamojo priebalsio "b" skaitmeninių įrašų pavyzdžiai. Atkreikite dėmesį, skiriant garsus nuo raidžių, garsų atveju susitarta naudoti balsis ar priebalsis terminus, o raidžių atveju sakoma balsė ar priebalsė.

2 paveikslėlis. Balsio "a" skaitmeninio įrašo pavyzdys

3 paveikslėlis. Priebalsio "b" skaitmeninio įrašo pavyzdys

Šnekamosios kalbos kompiuterinio atpažinimo uždavinys yra labai sudėtingas. Šio uždavinio sudėtingumą lemia tokie faktoriai:

  1. Kalbos tempas yra kintamas ir nuo jo ženkliai priklauso garsai.
  2. Garsų (ypač balsių) skaitmeniniai įrašai stipriai priklauso kalbančiojo pagrindinio tono (balso stygų virpėjimo dažnio).
  3. Fonemų (garsų) akustinė realizacija priklauso nuo gretimų fonemų. Šis reiškinys vadinamas koartikuliacija.
  4. Tas pats diktorius pakartotinai tardamas tą patį žodį naudoja skirtingą artikuliaciją, dėl ko ta pati fonema niekada neturės absoliučiai vienodų įrašų.
  5. Fonemų skaitmeniniai įrašai priklauso nuo įrašymui naudotos aparatūros, nuo aplinkos (įrašant kambario sąlygomis vieni aidai, lauko - kiti), nuo diktoriaus emocinės būsenos, aplinkinio triukšmo ir pan.
  6. Kalbos signale nėra aiškiai apibrėžtų ribų tarp fonemų.
  7. Tariamų garsų akustinės savybės stipriai priklauso nuo diktoriaus fiziologijos. Tarkime vaiko kalbos padargų matmenys ir proporcijos skiriasi nuo suaugusio ir dėl to kiekvieno diktoriaus akustinių rezonansinių dažnių rinkinys yra unikalus.

Tarp fonemos skaitmeninį signalą lemiančių faktorių mes nepaminėjome kalbos stiprumo (garsio) parametro. Jei diktorius kalba pastoviu garsiu, šis faktorius nėra esminis, kadangi nesunku normuoti garsį padauginant skaitmeninį fonemos signalą iš konstantos.

Šiame kurse nespręsime bendro šnekamosios kalbos atpažinimo kompiuteriu uždavinio, o tik susipažinsime kokiais būdais galima bandyti nustatyti kokią fonemą atitinka iškirtas atskiro garso skaitmeninis įrašas.

Lango funkcijos

Fonemų skaitmeninius signalus stengiamasi glaustai aprašyti nedideliu kiekiu skaitinių parametrų, kurie apskaičiuojami iš signalo. Gauti parametrai vadinami požymiais, kurie ir yra pateikiami atpažinimui.
Prieš pereidami prie fonemų skaitmeninių signalų konkrečių požymių aprašymo, susipažinsime su klasikiniu pirminiu signalo apdorojimu, vadinamu dauginimu iš lango funkcijos. Šio veiksmo esmė labai paprasta - kiekviena skaitmeninio signalo reikšmė yra dauginama iš fiksuotos lango funkcijos daugiklio ("svorio"), kurio reikšmė priklauso nuo taško indekso. Lango funkcija parenkama taip, kad svoriai būtų maži neneigiami skaičiai arti signalo kraštų ir arti vieneto indekso reikšmėms, kurios yra arti signalo centro. Tokiu būdu yra sprendžiama taip vadinama "krašto" problema, nes fonemos skaitmeninis signalas "išpjaunamas" iš kalbos signalo ir todėl kraštinės reikšmės yra nelabai natūralios fizikine prasme. Pavyzdžiui mažiausią indeksą atitinkanti reikšmė gali būti didelė, nors natūralūs signalai kaip taisyklė prasideda nuo artimomis nuliui reikšmėmis. Taip pat dažnai fonemų kraštinės reikšmės yra įtakojamos gretimų fonemų reikšmėmis, dėl ko padidėja tikimybė fonemą atpažinti neteisingai.

Tarkime skaitmeninės fonemos reikšmės yra

x0, x1, x2, ... , xN-1,

o lango "svorius" (angl. weights) žymėsime

w0, w1, w2, ... , wN-1. Tuomet trikampis, Haningo ir Hamingo langai bus apibrėžti tokiomis formulėmis:

  1. Trikampis (kai N nelyginis):

    wn = min(n,N-1-n)/((N-1)/2)

  2. Haningo:

    wn = 0.5(1-cos(2p n/(N-1))

  3. Hamingo:

    wn = 0.54-0.46cos(2p n/(N-1))

4 paveikslėlis iliustruoja skaitmeninės fonemos "a" apdorojimą Hamingo langu. Hamingo langas dažniau taikomas trumpiems signalams (iki 0.1 sek), o Haningo - ilgesnės trukmės signalams.

4 paveikslėlis. Balsis "a" apdorotas Hamingo langu

Paprasčiausi fonemos požymiai

Fonemoms atpažinti naudosime klasikinę schemą, t.y.

  1. Išskirsime fonemas aprašančius požymius
  2. Tarp visų įsivestų požymių rasime tokius požymius, kurie geriausiai skiria turimas apmokymo imties fonemas
  3. Įvertinsime atpažinimo kokybę pateikdami atpažinti į apmokymo imtį neįtrauktas fonemas
Šiame skyrelyje aprašysime keletą paprasčiausių fonemos požymių

Čia FS žymi imčių dažnį (kompaktinių diskelių įrašymui dažniausiai naudojama FS=44100),
o sn "pasvertos" fonemos skaitmeninės reikšmės, t.y

sn   =   wnxn .

Pailiustruosime kaip priklauso paprasčiausi fonemų parametrai nuo tų pačių fonemų skirtingų egzempliorių. Visose pateiktose iliustracijose
raudonas taškas vaizduos 2 paveikslėlyje pateiktos "a" fonemos, parametrus.
Morkavi taškai žymi kitų "a" fonemos egzempliorių parametrus. Viso analizuojami 144 skirtingi trumpojo "a" balsio variantai.
Žalsvai pilki taškai žymi kitų "b" fonemos egzempliorių parametrus. Viso analizuojami 86 skirtingi trumpojo "b" priebalsio variantai.

Priminsiu, kad visais atvejais, prieš skaičiuojant fonemos parametrus, jai buvo pritaikytas Hemingo langas (žiūr. 4 pav.). Vizualiai parametras laikytinas sėkmingu, jei morkavi ir raudonas taškai grupuojasi vienoje srityje, o mėlyni ir pilki - kitoje skirtingoje srityje.

5 paveikslėlis iliustruoja "a" ir "b" fonemų skirtingų egzempliorių galingumo (N) ir energijos (E) parametrų reikšmes. 6 paveikslėlyje abscisių atidėtos fonemų modulio vidurkio (M) reikšmės, o ordinačių - energijos E reikšmės. Visais atvejai parametrai išreiškiami decibelais, t.y. apskaičiuojama gauto parametro dešimtainis logaritmas ir dauginama iš 10 (N ir E atveju) arba iš 20 (M atveju). Decibelais patogu matuoti teigiamus plačiame diapazone kintančius dydžius (energiją aprašantys parametrai N, E ir M tokia savybe pasižymi). Kaip ir galima buvo tikėtis visų trijų parametrų reikšmės gana ryškiai koreliuoja. Pavyzdžiui, jei kokiu nors atveju fonemos vidutinis galingumas N santykinai didelis, tai tikėtina, kad fonemos energija bus santykinai taip pat didelė. Iš pirmo žvilgsnio gali būti kiek netikėta, kad fonemos energiją aprašantys parametrai gana neblogai skiria "a" ir "b" fonemų grupes. Tai galima paaiškinti tuo, kad sprogstamasis priebalsis "b" didelia dalimi tariamas esant suglaustom lūpoms. "a" tariamas visuomet atvertomis lūpomis, todėl plaučiuose sukauptas viršslėgis laisvai patenka į kalbos traktą ir dėl to gauname didesnės energijos (lyginant su "b" atveju) garso signalą.

5 paveikslėlis (kairiau). "a" ir "b" fonemų skirtingų egzempliorių energijos ir galingumo parametrai

6 paveikslėlis (dešiniau). "a" ir "b" fonemų skirtingų egzempliorių modulio vidurkio ir energijos parametrai

7 paveikslėlyje abscisių ir ordinačių ašyse atidėtos "a" ir "b" fonemų maksimalios (Ap) ir minimalios (Am) amplitudės, o 8 paveikslėlyje - nulio kirtimų vidutinio dažnio (Z)
ir amplitudės (A = Ap-Am) parametrų reikšmės. Kaip matyti iš paveikslėlių, ir viena ir kita parametrų pora puikiai skiria visus "a" ir "b" egzempliorus. Toks rezultatas netiesiogiai byloja, kad šių fonemų akustinės savybės gana ryškiai skiriasi. Kaip ir galima buvo tikėtis, dėl analogiškų samprotavimų apie pravertas ir suglaustas lūpas, "a" tipo fonemų maksimalios ir minimalios amplitudės moduliu yra didesnės nei "b" tipo fonemų. "b" fonemos egzempliorių vidutinis nulių kirtimų dažnis kinta nuo 300 iki 1000 (su retomis išimtimis), o "a" atveju - nuo 1000 iki 3000 hercų. Šie skaičiai atspindi vizualiai lengvai pastebimą 2 ir 3 paveikslėliuose faktą, kad "a" balsyje vyrauja aukštesnio dažnio kompenentės, lyginant su "b" atveju.

7 paveikslėlis (kairiau). "a" ir "b" fonemų maksimalios (Ap) ir minimalios (Am) amplitudės

8 paveikslėlis (dešiniau). "a" ir "b" fonemų nulio kirtimų vidutinio dažnio (Z)
ir amplitudės (A = Ap-Am) parametrų reikšmės

Adaptyvūs požymiai

Pereitame skyrelyje susipažinote su tiesinės prognozės požymiais. Šie požymiai arba išvestiniai iš jų dažnai ir sėkmingai naudojami kalbos atpažinime. Tačiau jie nesprendžia visų problemų. Vienas trūkumų - tiesinės prognozės (LPC) koeficientai nėra adaptyvūs, t.y. pvz. skiriant "a" ir "b", "b" ir "c", "c" ir "a" tipo fonemų poras bus naudojami vieni ir tie patys LPC požymiai. Todėl kyla mintis modifikuoti LPC metodą taip, kad jis adaptyviai skirtų poras, pvz. "a" ir "b" porai parinktų vienus parametrus, o "b" ir "c" porai - kitus. Šią idėją galima praplėsti ir toliau parenkant adaptyvius parametrus kiekvienai "a" ir "b" tipo fonemų egzempliorių porai.

Signalo

x0, x1, x2, ... , xN-1

LPC koeficientų reikšmes lemia tiesinės prognozės

xn = (-Sk=1)P akxn-k) en

išraiška. Kaip matyti šioje išraiškoje dalyvauja tik vienos fonemos "x" duomenys, todėl ir nėra LPC koeficientų adaptyvumo (prisitaikymo) prie norimų atskirto fonemų porų.

Tarkime turime signalų poros "x" ir "y" garso slėgio duomenis:

x0, x1, x2, ... , xN-1;

y0, y1, y2, ... , yM-1;

Užrašykime nuo dviejų parametrų a ir b priklausančią išraišką:

Ix,y(a,b) = (Sn=1N-2 (axn-1 + xn + bxn+1)2) / (Sn=1M-2 (ayn-1 + yn + byn+1)2)

Susitarkime Ix,y(a,b) minimizuoti atžvilgiu laisvų parametrų a ir b. Norint, kad iš axn-1 + xn + bxn+1 ir ayn-1 + yn + byn+1 būtų galima stabiliai rekonstruoti xn ir yn reikšmes, pareikalaukime papildomos sąlygos:

|a| + |b| ≤ 1 .

Nesunku apskaičiuoti, kad

Ix,y(a,b) = ( (1+a2+b2) Rxx[0] + 2 (a+b) Rxx[1] + 2 ab Rxx[2] ) /
                    ( (1+a2+b2) Ryy[0] + 2 (a+b) Ryy[1] + 2 ab Ryy[2] )

Čia Rxx ir Ryy žymi atitinkamai x ir y signalų autokoreliacinę funkciją. Gautą sąlyginio minimizavimo uždavinį galima spręsti apskaičiuojant Ix,y(a,b) dalines išvestines a ir b parametrų atžvilgiu ir prilyginant jas nuliui. Tačiau daugeliu atveju taip gautos a ir b reikšmės netenkins stabilumo sąlygos, todėl galima tiesiog kompiuteriu sudaryti Ix,y(a,b) reikšmių lentelę (imant a ir b reikšmes tenkinančias stabilumo sąlygą) ir išsirinkti mažiausią. Tokiu būdu rasite apytikslį sąlyginio minimizavimo uždavinio sprendinį.

Kokia gautų a ir b parametrų prasmė. Iš Ix,y(a,b) išraiškos matyti, kad a ir b vienu metu linkę xn aproksimacijos axn-1 + xn + bxn+1 paklaidą ( xn -(axn-1 + bxn+1) )2 minimizuoti, o yn aproksimacijos ayn-1 + yn + byn+1 paklaidą - maksimizuoti. Tokiu būdu pasiekiamas gaunamų parametrų adaptyvumas prie pasirinktos poros (šiuo atveju "x"/"y" poros).

Aprašytą procesą galima tęsti xn ir yn duomenis pakeičiant aproksimacijos paklaidomis:

xn -(axn-1 + bxn+1) ) ir

yn -(ayn-1 + byn+1) )

Atlikę tokių P žingsnių gautume P a ir b koeficientų porų, kurie kartu sudarytų xn ir yn tiesinio aproksimavimo operatorius. Skirtingai nuo klasikinės tiesinės prognozės schemos - xn ( analogiškai yn ) tiesinė prognozė atliekama iš abiejų pusių.

Atkreipkime dėmesį į vieną Ix,y(a,b) minimizavimo trūkumą. "x"/"y" poroje abi fonemos "x" ir "y" įeina simetriškai, tačiau minimizuojant atsiranda asimetrija, kadang skaitiklis, aprašomas "x" duomenimis yra minimizuojamas, o vardiklis, aprašomas "y" duomenimis yra maksimizuojamas. Galimi du šios problemos sprendimo būdai: arba atlikti atskirai Ix,y(a,b) maksimizavimą, arbą atskirai minimizuoti Iy,x(a,b) išraišką. Anttrasis būdas programavimo prasme priimtinesnis, nes pakaks realizuoti vieną minimizavimo procedūrą ir kreiptis į ją su (x,y) ir (y,x) parametrų poromis.

9 paveikslėlis (kairiau). "a" ir "b" fonemų autokoreliacijos pirmasis ir antrasis nuliai

10 paveikslėlis (dešiniau). "a" ir "b" fonemų adaptyvioji charakteristika ir autokoreliacijos 3pirmasis + antras nuliai

Kepstro požymiai

"Kepstro" terminas kilęs iš dalinai apgręžto "spektro" žodžio. Plačiau apie šį žodžių žaismą ir kaip apskaičiuojami garso kepstriniai požymiai aprašyta čia.

Praktinis darbas

Realizuokite fonemų atpažinimo algoritmą Java kalba.
Jūsų atpažinimo algoritmas bus vertinamas pagal pateiktų algoritmui nežinomų fonemų atpažinimo kokybę.

Reikalingą algoritmui fonemų sąrašą ir duomenis rasite čia. Failuose su .raw galūne įrašytos vienos fonemos egzempliorių klasteris. Informacija apie klasterio atskiros fonemos ilgį pateikta to paties vardo .dat galūnės faile. Šiame faile surašytos iš eilės einančių fonemų fonogramų ilgiai (imčių kiekis). Failo pavadinimas yra vienos fonemos vardas. Šis fonemų sąrašas paimtas iš Pijaus Kasparaičio lietuvių kalbos sintezavimo sistemos. Čia mes laikome, kad skirtingai kirčiuotos fonemos skiriasi. Šiame sąraše yra 91 skirtinga fonema.

.raw faile surašytos iš eilės einančios imtys. Imčių diskretizavimo dažnis FS=22050. Vienai imčiai skirti du baitai, pirma eina vyresnysis baitas.

Kuriant atpažinimo algoritmą jums reikės apskaičiuoti tiesinės prognozės koeficientus. Jų skaičiavimui galite panaudoti LPC.zip, 22 k Java LPC klasę ir jos kodą.

Derinant atpažinimo algoritmą susidursite su testinių duomenų problema. Tuo tikslu galite pasinaudoti tokia tradicine metodika. Išsirinkite iš pateikto fonemų duomenų banko pirmosios fonemos pirmąjį egzempliorių X ir išmeskite šį egzempliorių iš fonemų duomenų banko, bei pritaikykite fonemai X savo atpažinimo algoritmą. Kartokite šią procedūrą vietoje X imdami pirmosios fonemos antrąjį, trečiąjį ir t.t. egzempliorius. Po to kartokite tą pačią procedūrą su antrąja, trečiąja, ..., 91-ąja fonema. Tokiu būdu jūs sukaupsite statistiką apie "nežinomų" fonemų atpažinimo kokybę (procentą teisingai atpažintų fonemų) ir galėsite parinkti laisvus algoritmo parametrus maksimizuodami teisingai atpažįstamų fonemų procentą.

Reikalavimas programai:

Jūsų klasė turi praplėsti (extends) fonemos paketo Fonemos klasę.

fonemos paketo klasių kodas yra čia.


Literatūra

  1. http://ualgiman.dtiltas.lt
  2. P. Kasparaitis. Kompiuterinė lingvistika
  3. A. Bastys. LPC kodavimas
    algirdas.bastys@maf.vu.lt

    2004 m. spalio 4 d.