Izoliuotų lietuvių kalbos garsų atpažinimo eksperimentai naudojant MATLAB

Izoliuotų lietuvių kalbos garsų atpažinimo eksperimentai naudojant MATLAB

Turinys

TURINYS 2

SUTRUMPINIMAI 3

SANTRAUKA 3

SUMMARY 3

EKSPERIMENTŲ TIKSLAI 4

EKSPERIMENTŲ APRAŠYMAS 4

EKSPERIMENTO KONFIGŪRAVIMAS 5

GARSŲ PAVYZDŽIŲ NUSKAITYMAS IŠ FAILŲ 6

PRADINIS GARSŲ APDOROJIMAS 7

GARSŲ POŽYMIŲ IŠSKYRIMAS 8

KLASIFIKATORIAUS APMOKYMAS 10

ATPAŽINIMAS 11

REZULTATŲ IR PARAMETRŲ PRISTATYMAS 12

PROGRAMINĖS REALIZACIJOS STRUKTŪRA 12

TYRIMŲ REZULTATAI 15

TYRIMAI SU BALSĖMIS 15

TYRIMAI SU ŽODŽIAIS 20

ISVADOS 27

NUORODOS TOLESNIEMS TYRIMAMS 27

LITERATURA 29

Sutrumpinimai

Darbe naudoti šie angliški sutrumpinimai (lietuvių kalboje dar nėra nusistovėjusių terminų).

Lentelė 1 – Ataskaitoje naudoti sutrumpinimai

Sutrumpinimas Angliškas terminas Lietuviškai

LPC Linear Predictive Coding Tiesinės prognozės kodavimas

MFCC Mel-Frequency Cepstral Coefficients Melų dažnių skalės kepstriniai koeficientai

DTW Dynamic Time Warping Dinaminis laiko kraipymas

HMM Hidden Markov Model Paslėpasis Markovo modelis

Santrauka

Ataskaitoje pateikiami izoliuotų (“iškarpytų”) lietuvių kalbos garsų – balsių a, e, o ir u bei žžodžių nulis, vienas, du, trys, keturi, penki, šeši, septyni, aštuoni, devyni, pradėk, baik, pakartok – atpažinimo tyrimų, naudojant MATLAB programinę įrangą, aprašymas ir rezultatai. Taip pat pristatoma sukurta programinė scenarijų ir fukcijų struktūra, leidžianti lengvai konfigūruoti ir keisti programinę struktūrą eksperimentams su kitais garsais, skirtingais požymių rinkiniais, apmokymo ir klasifikavimo algoritmais. Pateikiami ir palyginami atpažinimo rezultatai naudojant LPC, MFCC požymius bei Euklidinio atstumo ir vienasluoksnio perceptrono klasifikatorius. Nagrinėjama apmokymo pavyzdžių kiekio įtaka atpažinimo tikslumui. Pateikiamos eksperimento parametrų bei rezultatų lentelės iir palyginimo grafikai.

Summary

This paper is a technical report for experiments of recognition of isolated Lithuanian speech sounds – vowels a, e, o, u and words nulis (zero), vienas (one), du (two), trys (three), keturi (four), penki (five), šeši (six), septyni ((seven), aštuoni (eight), devyni (nine), pradėk (start), baik (end), pakartok (repeat). Experiments were executed using MATLAB software. Author also presents the framework created for speech experiments. The framework allows to easily configure and change the software framework for experiments with the other sounds, different feature sets, training and classification algorithms. Papers presents and compares the recognition results using LPC, MFCC feature sets, Euclidean distance and single layer perceptron classifiers. The influece of training samples quantity to recognition accuracy is also researched. Tables with experiment parameters and results are given together with comparison figures.

Eksperimentų tikslai

Eksperimentai vykdyti, siekiant šių tikslų:

1. Praktiškai išbandyti lietuvių kalbos balsių a, e, o ir u atpažinimą.

2. Praktiškai išbandyti izoliuotų lietuvių kalbos žodžių nulis, vienas, du, trys, keturi, ppenki, šeši, septyni, aštuoni, devyni, pradėk, baik, pakartok atpažinimą.

3. Atpažinimo bandymuose panaudoti LPC ir MFCC požymių rinkinius, įvairius apdorojimo parametrus, apmokymo ir klasifikavimo metodus. Palyginti atpažinimo tikslumą priklausomai nuo požymių rinkinių, apdorojimo paramterų, apmokymo ir klasifikavimo metodų taikymo.

4. Sukurti lengvai konfigūruojamą ir plečiamą programinę struktūrą izoliuotų (“iškarpytų”) garsų atpažinimo tyrimams, naudojant MATLAB programinę įrangą.

Eksperimentų aprašymas

Tyrimų metu buvo atliekami eksperimentai su dviem rinkiniais diskrečių (“iškarpytų”) lietuvių kalbos garsų:

1) balsėmis a, e, o, u;

2) skaitmenimis 0-9 ir žodžiais pradėk, baik, pakartok.

Abiem atvejais buvo ttaikoma ta pati eksperimento struktūra, kurios vykdymui realizuota konfigūruojama ir plečiama programinė struktūra (MATLAB funkcijų ir scenarijų rinkinys). Eksperimento struktūra atvaizduota žemiau pateiktoje lenetelėje:

Lentelė 2 – Eksperimento struktūra

1. Eksperimento konfigūravimas Nustatoma eksperimento konfigūracija: garsų failų katalogas, garsų apdorojimo parametrai, požymio išskyrimo, klasifikatoriaus apmokymo, klasifikavimo funkcijos, rezultatų pristatymo parametrai

2. Garsų pavyzdžių nuskaitymas iš failų Iš duomenų failų (.wav arba .au formatų) nuskaitomi garsų pavyzdžiai

3. Pradinis garsų apdorojimas Atliekamas pradinis garsų apdorojimas pagal nustatytus parametrus: normalizavimas, segmentavimas (jei reikalingas)

4. Garsų požymių išskyrimas Išskiriami požymiai kiekvienam kalbos garso pavyzdžiui. Požymių išskyrimo metodai gali būti įvairūs, pvz. LPC, MFCC, energija, formantės ir kt.

5. Klasifikatoriaus apmokymas Sukuriamas ir pagal dalį pavydžių apmokomas klasifikatorius. Galimi įvairūs klasifikatoriai, pvz. perceptronas, palyginimas su šabloniniais požymių rinkiniais ir kt.

6. Atpažinimas Naudojant apmokytą klasifikatorių, bandoma atpažinti apmokyme nenaudotus garsų pavyzdžius. Klasifikavimo specifika priklauso nuo sukurto ir apmokyto klasifikatoriaus.

7. Rezultatų ir parametrų pateikimas Pateikiami eksperimento rezultatai ir parametrai. Ši informacija gali būti surašoma į failą arba atvaizduojami ekrane tekstine informacija arba grafikais.

Eksperimento konfigūravimas

Eksperimentams vykdyti buvo realizuota programinė įranga, kurią reikia konfigūruoti atitinkamai pgal norimą įvykdyti eksperimentą. Šie eksperimento parametrai turi būti nustatyti eksperimento konfigūravimo metu:

• Garsų pavyzdžių failų katalogas – iš čia bus nustatomos garsų klasės ir nuskaitomi garsų pavyzdžiai kiekvienai iš klasių.

• Apdorojimo parametrai

o Naudotinas diskretizavimo dažnis – diskretizavimo dažnis, pakankamas atpažinimo eksperimentui. Garsų pavyzdžiai dažnai bbūna diskretizuoti didesniu dažniu nei reikalinga kalbos atpažinimui, todėl prieš atpažįstant

o Segmentavimo parametrai (kai kuriems požymių išskyrimo metodams signalą būtina segmentuoti)

 Ar segmentuoti signalą

 Segmentavimo lango dydis

 Segmentavimo lango poslinkis

 Analizuojamų segmentų kiekis

 Ar normalizuoti laiką (tiesiškai pagal analizuojamų segmentų kiekį)

• Požymių išskyrimo parametrai

o Požymių paskaičiavimo funkcija – kadangi eksperimentas gali būti vykdomas su įvairiais požymiais (LPC, MFCC, autokoreliacijos, energijos ir kt.), tai reikia nurodyti funkciją, kuri išskiria signalo požymius. Eksperimento metu funkcija vykdoma dinamiškai pagal nurodytą funkcijos vardą ir parametrus.

o Ar naudoti požymių normalizavimą pagal maksimalias reikšmes – daugumai klasifikatorių (pvz. perceptronas, Euklidinio atstumas nuo šablono) yra svarbu požymių normalizavimas, nes jeigu požymių vektoriaus elementaų vidurkiai

• Apmokymo parametrai

o Kokią dalį visų pavyzdžių naudoti apmokymui (koeficientas nuo 0 iki 1)

o Apmokymo scenarijaus vardas – eksperimente gali būti naudojami įvairūs klasifikatoriai, o apmokymas yra nuo klasifikatoriui specifinė procedūra, todėl, kaip ir požymių išskyrimas, apmokymas vykdomas dinamiškai pagal nurodytą scenarijaus vardą.

• Klasifikavimo parametrai

o Klasifikavimo funkcija – garso pavyzdžio klasifikavimas priklauso nuo eksperimente naudojamo apmokyto klasifikatoriaus, todėl klasifikavimas taip pat vykdomas dinamiškai pagal nurodytą funkcijos vardą ir parametrus.

• Rezultatų ir parametrų pateikimo parametrai

o Į kokį failą rašyti eksperimento parametrus ir rezultatus

o Ar pateikti garsų pavyzdžių statistiką (pavyzdžių kiekis, vidutiniai, didžiausi, mažiausi ilgiai kiekvienai klasei)

o Ar braižyti požymių vidurkių grafikus

o Ar pateikti apmokymo parametrus

o Ar pateikti atpažinimo rezultatus

o Ar pateikti vykdymo laikus

Garsų pavyzdžių nuskaitymas iš ffailų

Garsų pavyzdžiai nuskaitomi iš duomenų katalogo. Eksperimente naudojamame duomenų kataloge turi būti po katalogą kiekvienamai garsų klasei, kuriuose laikomi visi garso klasės pavyzdžiai .wav arba .au formato failuose. Tarkime, garsų duomenų katalogas yra c:speechexperimentdata, o jame yra katalogai a, e, o ir u – reiškiasi, eksperimente bandysime atpažinti šiuos garsus. Kataloguose a, e, o ir u saugomi atitinkamų garsų pavyzdžių .wav arba .au tipo failai.

Lentelė 3 – Garsų pavyzdžių failų katalogo struktūra

» pwd

c:speechexperimentdata

» dir

. .. a e o u

» dir a

. 1_fg1_a_1921_.wav 2_fh_a_698_.wav

.. 1_fn_a__302_.wav 2_fun__a_1644_.wav

0_fa__a__200_.wav 2_fa_a_1254_.wav 3_fbo_a9_3152_.wav

1_fam1_a_200_.wav 2_fal__a_200_.wav 3_fja_a_1792_.wav

» dir e

. 1_ff1_e4_2007_.wav 3_fe9nq1_e-_1773_.wav

.. 1_fp_e_1771_.wav 3_fn1_e__308_.wav

0_fe-_e-_448_.wav 2_fe4_e4_3681_.wav

1_fe9r_e9_329_.wav 2_fil1__e_2746_.wav

1_fe__e__200_.wav 2_ful1_e__596_.wav

» dir o

. 1_ful__o_814_.wav 3_fm_o__4029_.wav

.. 2_fe9nq_o_912_.wav 3_fvo_o_332_.wav

0_fo34_o34_1755_.wav 2_flo3_o_267_.wav

1_fe9u_o_2394_.wav 2_fu4_o_2724_.wav

1_fiu-_o__581_.wav 3_fai__o_1868_.wav

» dir u

. 1_fur1__u_200_.wav 3_fu-_u-_1521_.wav

.. 2_fil_u4_1577_.wav 3_funq__u-_899_.wav

0_fu-_u-_1558_.wav 2_fu-_u-_3670_.wav

1_fdo_u_5014_.wav 2_fur_u_333_.wav

1_flu_u_285_.wav 3_fiu9_u_842_.wav

Garsų akustiniai vektoriai, diskretizavimo dažnis ir amplitudės kvantavimui skirtų bitų kiekis nuskaitomi iš duomenų failų naudojant standartines MATLAB Signal Processing Toolbox funkcijas wavread arba auread, kurių aprašymai pateikti [6].

Pradinis garsų apdorojimas

Prieš išskiriant požymius iš garsų akustinių vektorių, dažniausiai reikia atlikti pradinį garsų apdorojimą. Šiame eksperimente buvo sumažinimas garsų diskretizavimo dažnis iki 11kHz, garsas prieš požymių išskyrimą buvo normalizuojamas pagal maksimalią amplitudę ir segmentuojamas, jeigu naudojama požymių išskyrimo funkcija reikalauja nedidelės

trukmės garso segmentų. Kai kurios garso požymių funkcijos segmentavimą atlieka pačios, tokiu atveju pradinio apdorojimo fazėje garso segmentuoti nereikia.

Eksperimente naudoti įrašai buvo diskretizuoti 44kHz dažniu, o kalbos atpažinimui pakanka daug mažesnio dažnio – visuotinai priimta, kad 11kHz – pakankamas diskretizavimo dažnis kalbos atpažinimui ([1], [5]). Natūralios žmogaus kalbos dažnis išsitenka diapazone apytikriai 100–8000Hz, o pagal Nyquist–Kotelnikov teoremą analoginis signalas pilnai atstatomas iš diskretizuoto įrašo, jeigu diskretizacijos dažnis nemažesnis nei , kur Fmax – didžiausias analoginio signalo dažnis ([2]). Pagal šią tteoremą reikėtų naudoti ~16kHz diskretizavimą, bet, kaip minėjome, visuotinai priimta, kad 11kHz diskretizavimas pakankamas kalbos atpažinimui, todėl nebuvo papildomai eksperimentuota su kitais dažniais ir visuose aprašytuose eksperimentuose naudotas 11kHz diskretizavimo dažnis.

Diskretizavimo dažnis sumažintas iki 11kHz naudojant standartinę MATLAB Signal Processing Toolbox funkciją resample, kurios detalų aprašymą galima rasti [6].

Garsas normalizuotas nesudėtinga MATLAB išsraiška:

wave = wave / max(abs(wave))

Garso normalizavimas pagal maksimalią amplitudę reikalingas tam, kad atpažinimui neturėtų įtakos atpažįstamo kalbos garso ištarimo garsumas (amplitudės dydis).

Kalbos garsai yra gana dinamiški, o daugelis ppožymių išskyrimo funkcijų skirtos sąlyginai statiniam, t.y. stipriai nekeičiančiam savybių signalui, todėl garsas yra segmentuojamas nedidelės trukmės atkarpomis (N diskrečių reikšmių), kuriose signalas yra sąlyginai statiškas, o segmentams išskirti požymiai apjungiami į bendrą požymių vektorių. Kad neprarasti garso savybių kitimo ppožymių kitas segmentas skaičiuojamas ne nuo praeito segmento galo, o nuo praeito segmento pradžios + poslinkis, mažesnis už segmento ilgį (M < N). Žemiau pateiktas segmentavimą iliustruojantis paveikslas. Segmento ir poslinkio ilgiai nustatomi eksperimento konfigūravimo metu.

Paveikslas 1 – Garso segmentavimas

Garsų požymių išskyrimas

Garsų atpažinimui naudojamas ne garso akustinis vektorius, o kompaktiškenis požymių rinkinys, išskiriamas iš akustinio vektoriaus. Nuo to kaip gerai požymių rinkinys charakterizuoja garsą labai stipriai priklauso atpažinimo tikslumas. Galimi įvairūs požymių rinkiniai. Dažniausiai naudojami – LPC (tiesinės prognozės) ir MFCC (melų skalės kepstriniai koeficientai) koeficientai. Tačiau galimi įvairūs kitokių požymių rinkiniai bei mišrūs rinkiniai, kombinuojantys įvairius požymius. Eksperimente bandyti tik LPC ir MFCC požymiai, tačiau požymių išskirimo funkcija vykdoma dinamiškai pagal konfigūracijoje nurodytą vardą, todėl galima realizuoti bet kokią kkitą požymių išskyrimo funkciją ir eksperimentuoti su ja.

LPC požymių išskyrimui buvo naudojama standartinė MATLAB Signal Processing Toolbox funkcija lpc, o MFCC požymių išskyrimui – Auditory Toolbox funkcija mfcc. Detalius LPC ir MFCC koeficientų paskaičiavimo algoritmus galima rasti [1] arba [5].

LPC požymių išskyrimui garsų signalai buvo segmentuoti naudojant 300 (~27ms) reikšmių trukmės langus ir 200 (~18ms) reikšmių ilgio postūmius. Maždaug tokio ilgio langai ir poslinkiai rekomenduojami literatūroje ([1]), o prieš tai atlikti tyrimai taip pat parodė, kad su tokios trukmės langais iir poslinkiais gaunami bene geriausi atpažinimo rezultatai ([5]). Eksperimentus galima vykdyti ir su kitokiomis trukmėmis – tiek segmentavimo lango, tiek poslinkio trukmė nurodomos eksperimento konfigūracijoje.

MFCC koeficientų išskyrimo funkcija mfcc segmentavimą atlieka pati, todėl išskiriant šiuos požymius, garsai nebuvo segmentuojami.

Paveikslas 2 – Balsės u pavyzdžio segmento LPC koeficientai

Paveikslas 3 – Balsės u pavyzdžio segmento MFCC koeficientai

Daugelis klasifikavimo metodų yra jautrūs požymių dimensijoms, todėl tiek LPC, tiek MFCC požymius reikėjo normalizuoti. Normalizavimo funkcijos arba scenarijaus vardai taip pat nurodomi eksperimento konfigūracijoje. Tyrimai buvo atlikti normalizuojant požymius pagal požymių maksimalias arba vidutines absoliutinių dydžių reikšmes. Tarkime, kad turime N požymių rinkinių , tuomet normalizuojant Xi pagal maksimalias požymių reikšmes kiekvieną požymių rinkinio koeficientą dalinsime iš normalizavimo koeficiento , o normalizuojant pagal vidutinę absoliučią reikšmę – iš normalizavimo koeficiento . Normalizavimo koeficientai eksperimente buvo nustatomi naudojant visus garsų pavyzdžius. Realiose sistemos jie turėtų būti randami apmokymo metu, tačiau, esant pakankamam pavyzdžių skaičiui, tai esminio skirtumo nesudaro.

Taip pat buvo išbandytas literatūroje ([1]) siūlomas kepstrinių koeficientų normalizavimo koeficientas , čia Q – kepstrinės analizės eilė. Tačiau tyrimai parodė, kad normalizavimas pagal maksimalias ir vidutines absoliutines reikšmes duoda daug geresnius atpažinimo rezultatus, todėl tyrimuose buvo naudoti tik šie normalizavimo metodai.

Žemiau pateiktuose paveiksluose parodyti to paties balsės uu segmento LPC ir MFCC koeficientai po normalizavimo pagal maksimalias požymių absoliutines vertes.

Paveikslas 4 – Balsės u pavyzdžio segmento normalizuoti LPC koeficientai

Paveikslas 5 – Balsės u pavyzdžio segmento normalizuoti MFCC koeficientai

Klasifikatoriaus apmokymas

Klasifikatoriaus apmokymo fazėje sukuriamas ir pagal konfigūracijos metu nustatytą dalį (konfigūravimo metu nurodomas koeficientas nuo 0 iki 1) visų garsų pavyzdžių apmokomas klasikatorius, kuris bus naudojamas garsų, nenaudotų apmokymui, atpažinimui. Pavyzdžiai apmokymui buvo parenkami arba a) atsitiktinai arba b) imant pavyzdžius nustatytu žingsniu. Atsitiktinis metodas leidžia tiksliau įvertinti atpažinimo tikslumą, vykdant eksperimentą keletą kartų ir skaičiuojant rezultatų vidurkius, tačiau fiksuotas pavyzdžių parinkimas nustatytu žingsniu leidžia greičiau įvertinti parametrų keitimo įtaką atpažinimo tikslumui – eksperimentas gali būti kartojamas naudojant tuos pačius pavyzdžių rinkinius tiek apmokymui, tiek atpažinimui. Kadangi eksperimentuoti galima su įvairiais klasifikatoriais, tai tiek klasifikatoriaus sukūrimo/apmokymo scenarijus, tiek klasifikavimo funkcija nurodomos konfigūravimo metu ir eksperimento metu vykdomos dinamiškai pagal nurodytą vardą. Eksperimentas buvo atliktas su dviejų tipų klasifikatoriais: naudojant etalonus ir ieškant mažiausio atstumo pagal Euklidinį atstumo funkciją bei su vienasluoksniu perceptronu.

Klasifikavimas pagal etalonus ir Euklidinį atstumą buvo naudojamas tiek balsių, tiek žodžių atpažinimo eksperimentuose. Šiuo atveju, apmokymo fazėje reikia rasti klasių etalonus, pagal kuriuos atpažinimo fazėje bus klasifikuojami garsų pavyzdžiai. Naudojant po vieną etaloną kiekvienai garsų klasei, eetalonai randami gana paprastai – apskaičiuojant apmokymo fazėje dalyvaujančių garsų požymių vidurkius. Tarkime, kad turime N vienos klasės garsų požymių rinkinių , naudojamų apmokymui. Tuomet klasės etalonas bus , kurio elementai randami pagal formulę: . Naudojant po kelis etalonus kiekvienai garsų klasei, etalonai randami kiek sudėtingiau –pritaikant vektorių kvantizavimo algoritmą, kurio detalų aprašymą galima rasti [1] arba [5].

Kitas eksperimente naudotas klasifikatorius – vienasluoksnis perceptronas – buvo išbandytas tiktai balsių a, e, o, u atpažinimui. Vienasluoksnis perceptronas turi N įėjimų ir M neuronų, kurių kiekvienas grąžina reikšmę, paskaičiuojamą pagal formules:

, čia xi – įėjimai, – j-tojo neurono svoriai, j – j-tojo neurono postūmis (angl. treshold, bias), N – įėjimų skaičius, – neurono numeris.

, čia yj – j-tasis išėjimas, f – netiesinė aktyvacijos funkcija.

Eksperimente naudota paprasčiausia perdavimo funkcija, taip vadinama hard-limiter:

Paveikslas 6 – Perdavimo funkcijos hard-limiter grafikas

Naudotas perceptrono įėjimų skaičius , t.y. lygus požymių vektoriaus ilgiui, o išėjimų požymių skaičius , nes toks išėjimų skaičius pakankamas 4 balsių klasifikavimui, naudojant hard-limiter funkciją – perceptronas apmokomas taip, kad klasifikuotų balses pagal tokias išėjimų reikšmes:

a)

e)

o)

u)

Perceptronas buvo sukurtas ir apmokytas naudojant standartines MATLAB Neural Network Toolbox funkcijas newp ir adapt. Detalų vienasluoksnio perceptrono apmokymo

algoritmą galima rasti [1] arba [7].

Atpažinimas

Atpažinimo fazėje buvo klasifikuojami garsų pavyzdžiai, nenaudoti apmokymui. Klasifikavimo metodas yra visiškai priklausomas nuo apmokymo fazės metu sukurto ir apmokyto klasifikatoriaus, todėl jis irgi yra nurodomas konfigūracijos metu ir vykdomas dinamiškai. Praktiškai, apmokymo ir klasifikavimo metodai yra taip glaudžiai susiję, kad keičiant vieną, reikia keisti ir kitą. Naudojant etalonus, klasifikavimo metu garsai buvo priskiriami tai klasei, iki kurios etalono požymių rinkinys buvo mažiausiai nutolęs pagal Euklidinį atstumą. Naudojant perceptroną, garsų klasė buvo nustatoma simuliuojant perceptrono vveikimą, paduodant į įėjimus požymių vertes, ir klasifikuojant pagal apmokymo metu nustatytas išėjimo vertes.

Rezultatų ir parametrų pristatymas

Eksperimentuojant galima atlikti įvairius tyrimus – tyrinėti požymių statistinius rodiklius, atpažinimo tikslumą su įvairiais parametrais, galima vykdyti eksperimentų ciklus, keičiant įvairius parametrus ir lyginant gaunamą atpažinimo tikslumą. Paskutiniuju atveju, norint viską atlikti automatiškai, reikia pasirašyti vykdymo scenarijų (tam reikia žinoti programinės realizacijos struktūrą). Visais atvejais yra svarbu kuriuos eksperimento parametrus ir rezultatus reikia pateikti vartotojui ir kokia forma (rašyti į failą, išvesti į ekraną, bbraižyti grafikus). Todėl eksperimento parametrų ir rezultatų pateikimas nustatomas konfigūravimo metu, galima pasirinkti šių parametrų ir rezultatų pristatymą (ar pristatyti, ar rašyti į nurodytą rezultatų failą, ar išvesti į ekraną):

• Garsų pavyzdžių kiekių ir trukmės statistiką

• Apdorojimo ir požymių išskyrimo parametrus

• Požymių vidutinių vverčių grafikus

• Apmokymo parametrus

• Atpažinimo rezultatus

Programinės realizacijos struktūra

Visi eksperimento parametrai, duomenys ir rezultatai saugomi bendroje struktūroje experiment, kurios sudėtis pateikta žemiau esančioje lentelėje.

Lentelė 4 – Eksperimento konfigūracijos ir duomenų struktūra

Experiment pagrindinė eksperimento parametrų ir rezultatų struktūra

.dataHome eksperimento duomenų (pavyzdžių failų) katalogas

.sounds klasifikuojamų garsų klasių informacijos struktūros

.name garsų klasės vardas

.files garsų klasės pavyzdžių failų struktūros

.samples garsų pavyzdžių akustinių vektorių informacijos struktūros

.waves neapdorotas akustinis vektorius (nuskaitytas iš pavyzdžio failo)

.sampling diskretizavimo dažnis

.quantization kvantizavimui skirtų bitų skaičius

.features iš akustinio vektoriaus išskirtų požymių rinkinys

.initTime inicializavimui ir garsų nuskaitymui praleistas laikas sekundėmis

.processing garsų apdorojimo ir požymių išskyrimo fazės parametrų struktūra

.useSampling eksperimentui reikalingas diskretizavimo dažnis

.segment akustinio vektoriaus segmentavimo parametrų struktūra

.use ar naudoti segmentavimą (0 – nevartoti, 1 – vartoti)

.frameSize segmento dydis (diskretizuotomis reikšmėmis)

.frameShift segmento poslinkis (diskretizuotomis reikšmėmis)

.analysisFrames analizuojamų segmentų kiekis (0 – nustatyti automatiškai)

.featuresFunction požymių išskyrimo funkcijos vardas

.normalizeFeatures ar normalizuoti požymius pagal maksimalias reikšmes

.timeWarpingFunction laiko kraipymo funkcija (jei nenurodyta &– nekraipyti)

.executionTime požymių išskyrimui praleistas laikas sekundėmis

.training apmokymo fazės parametrų struktūra

.trainingRate kokią proporcinę (nuo 0 iki 1) pavyzdžių dalį skirti apmokymui

.samples apmokymo požymių rinkiniai kiekvienai klasei

.indexes apmokymo pavyzdžių indeksų rinkinys

.trainScript apmokymo scenarijaus vardas

.executionTime apmokymui praleistas laikas sekundėmis

.classifier apmokymo scenarijaus sukurtas klasifikatorius

.recognition atpažinimo (klasifikavimo) fazės parametrų struktūra

.classifyFunction klasifikavimo funkcijos (suderintos su klasifikatoriumi) vardas

.recognized atpažinimo (klasifikavimo) rezultatų matrica

.executionTime atpažinimui praleistas laikas sekundėmis

.presentation eksperimentų rezltatų pateikimo parametrų struktūra

.output rezultatų failo pavadinimas (nenurodytas, jei nerašyti į failą)

.sounds ar pateikti garsų pavyzdžių skaičių, ilgių statistikas

.features ar pateikti požymių statistikas

.training ar pateikti apmokymo statistikas

.recognition ar pateikti atpažinimo statistikas

.statistics paskaičiuotų statistikų struktūra

.sounds garsų pavyzdžių trukmės statistikos kiekvienai kklasei

.min mažiausia pavyzdžio trukmė garsų klasei

.max didžiausia pavyzdžio trukmė garsų klasei

.mean vidutinė pavyzdžio trukmė garsų klasei

.median garsų klasės pavyzdžių trukmės mediana

.features požymių rinkinių statistikos kiekvienai garsų klasei

.minLength mažiausias požymių rinkinio ilgis

.maxLength didžiausias požymių rinkinio ilgis

.meanLength vidutinis požymių rinkinio ilgis

.min mažiausios požymių rinkinio vertės

.max didžiausios požymių rinkinio vertės

.mean vidutinės požymių rinkio vertės

.std požymių rinkinio verčių standartiniai nuokrypiai

.recognizedPercent apažintų pavyzdžių procentų matrica (NxN)

.wellRecognizedPercent teisingai atpažintų pavyzddžių procentas

Eksperimento programinės struktūros funkcijos ir scenarijai

run – pagrindinis eksperimento vykdymo scenarijus

config – eksperimento konfigūravimo scenarijus

loadWaves – garsų pavyzdžių akustinių vektorių nuskaitymo scenarijus

extractFeatures – apdorojimo ir požymių išskyrimo scenarijus

lpcFeatures – LPC požymių išskyrimo funkcija

mfccFeatures – MFCC požymių išskyrimo funkcija

lifter – kepstrinių koeficientų normalizavimo funkcija, siūloma literatūroje

training – apmokymo scenarijus

selectTrainIndexes – atsitiktinio apmokymo pavyzdžių parinkimo scenarijus

selectTrainIndexes2 – apmokymo pavyzdžių parinkimo žingsniu scenarjus

meanPatterns – vidutinių etalonų nustatymo scenarijus

trainp2 – vienasluoksnio percpetrono sukūrimo ir apmokymo scenarijus

recognition – atpažinimo (klasifikavimo) scenarijus

classifydist – klasifikavimo pagal nustatytus etalonus funkcija

classifyp – klasifikavimo pagal appmokyto perceptrono išėjimus funkcija

euclideanDistance – Euklidinio atstumo funkcija

presentation – parametrų ir rezultatų pristatymo scenarijus

computeFeatureStatistics – požymių statistinių įverčių skaičiavimo scenarijus

computeStatistics – kitų statistinių įverčių skaičiavimo scenarijus

writeStatistics – statistikos rašymo į failą scenarijus

displayStatistics – statistikos išvedimo į ekraną scenarijus

displaySampleLengths – pavyzdžių trukmių grafinio atvaizdavimo scenarijus

abbreviate – pagalbinė funkcija, sutrumpinant garso pavadinimą

hmsStr – vykdymo laiko trukmės atvaizdavimas simbolių eilute

Detalūs funkcijų ir scenarijų aprašai pateikti anglų kalba pačiuose ..m failuose ir gali būti išvedami į ekraną standartine MATLAB funkcija help.

Tyrimų rezultatai

Atskirai pateikti tyrimų su balsėmis, bei tyrimų su žodžiais rezultatai. Su abiem garsų rinkiniais atlikti tyrimai siekiant eksperimentiškai įverti požymių rinkinių (LPC ir MFCC), požymių normalizavimo bei apmokymo pavyzdžių kiekio įtaką atpažinimo tikslumui. Abiem atvejais klasifikavimui naudotas palyginimas su apmokymo metu rastais etalonais pagal Euklidinio atstumo funkciją, o su balsėmis taip pat išbandytas vienasluoksnio perceptrono klasifikatorius.

Tyrimai su balsėmis

Žemiau pateiktoje lentelėje ir paveiksle nurodyti balsių a, e, o, u pavyzdžių, naudotų eksperimente, duomenys: pavyzdžių kiekiai, pavyzdžių trukmės statistiniai rodikliai.

Lentelė 5 – Tyrinėtų balsių a, e, o ir u pavyzdžių statistiniai duomenys

Balsė a Balsė e Balsė o Balsė u

Pavyzdžių sk. 1358 738 458 734

Pavyzdžių ilgio (trukmės) statistikos, ms

Mažiausias 27.44 52.81 56.87 38.37

Vidutinis 146.91 168.48 188.72 146.14

Mediana 134.29 155.26 185.67 131.79

Didžiausias 391.75 399.98 378.23 433.92

Paveikslas 7 – Balsių a, e, o, u pavyzdžių trukmės statistiniai duomenys

Paveiksle nubraižyti balsių trukmių statistiniai duomenys (pateikti aukščiau esančioje lentelėje) rodyklė į dešinę – mažiausia reikšmė, o – mediana, x – vidurkis, rodyklė į kairę – didžiausia reikšmė.

PASTABA: tyrimų rezultatuose pateikiamas bendras tikslaus atpažinimo procentas skaičiuojamas pagal svorinį vidurkį – balsių a, e, o, u pavyzdžių, naudotų eksperimente, skaičius buvo skirtingas.

Balsių atpažinimo eksperimentas buvo atliktas keičiant šiuos parametrus:

a) MFCC ir LPC požymiais

b) Požymių nenormalizuojant ir požymius normalizuojant

c) Apmokant bei klasifikuojant pagal etalonus ir apmokant bei klasifikuojant pagal vienasluoksnį perceptroną

d) Keičiant apmokymo pavyzdžių pproporcinį skaičių: 0.2, 0.3, 0.4 ir 0.5 visų pavyzdžių

Rezultatus pateiksiu atskirais grafikais pagal a, b, c parametrus, tikslaus atpažinimo procentą atvaizduojant Y ašyje, o apmokymo pavyzdžių kiekį atvaizduojant X ašyje.

Tyrimų, kurių metu gautas didžiausias bendras tikslaus atpažinimo procentas, pavyzdžių atpažinimo procentus pateiksiu atskiroje lentelėje.

Paveikslas 8 – LPC, nenormalizuoti, etalonai

Paveikslas 9 – LPC, nenormalizuoti, perceptronas

Paveikslas 10 – LPC, normalizuoti, etalonai

Paveikslas 11 – LPC, normalizuoti, perceptronas

Paveikslas 12 – MFCC, nenormalizuoti, etalonai

Paveikslas 13 – MFCC, nenormalizuoti, perceptronas

Paveikslas 14 – MFCC, normalizuoti, etalonai

Paveikslas 15 – MFCC, normalizuoti, perceptronas

Geriausias bendras tikslaus atpažinimo procentas – 80.76% – gautas naudojant MFCC požymius (analizuota 10 segmentų po 13 požymių), normalizuojant pagal maksimalias absoliutines reikšmes, apmokymui ir klasifikavimui naudojant perceptroną ir imant 0.3 dalį visų pavyzdžių apmokymui.

Lentelė 1 – Geriausio a, e, o, u atpažinimo procentų lentelė

Balsė a Balsė e Balsė o Balsė u

Atpažinta a 89.27% 08.62% 01.68% 00.42%

Atpažinta e 19.15% 79.11% 00.00% 01.74%

Atpažinta o 10.90% 01.56% 79.75% 07.79%

Atpažinta u 04.28% 06.61% 21.79% 67.32%

Tyrimai su žodžiais

Žemiau pateiktoje lentelėje ir paveiksle nurodyti eksperimente naudotų žodžių nulis, vienas, du, trys, keturi, penki, šeši, septyni, aštuoni, devyni, baik, pakartok, pradėk pavyzdžių trukmės statisniai rodikliai. Visiems garsams pavyzdžių kiekis buvo vienodas – po 221.

Lentelė 6 – Žodžių 0-9, baik, pakartok, pradėk pavyzdžių trukmių statistiniai duomenys, ms

Nulis Vienas Du Trys Keturi Penki Šeši Septyni Aštuoni Devyni Baik Pakartok Pradėk

Mažiausias 460.05 435.37 280.09 350.48 375.87 349.75 410.70 552.93 463.67 438.28 317.10 426.67 397.64

Vidutinis 677.37 718.86 457.88 537.44 611.19 606.04 666.77 807.58 726.44 688.71 517.54 713.23 685.43

Mediana 674.83 708.21 441.20 519.55 602.27 602.27 650.18 783.67 711.13 685.01 507.96 700.95 690.79

Didžiausias 952.02 1105.85 843.17 931.70 1091.34 902.68 1078.28 1200.20 1126.17 1079.73 763.36 969.43 1089.89

Paveikslas 16 – Skaitmenų ir baik, pakartok,

pradėk pavyzdžių trukmės statistiniai duomenys

Žodžių atpažinimo eksperimentas buvo atliktas keičiant šiuos parametrus:

a) MFCC ir LPC požymiai

b) Požymių nenormalizuojant ir požymius normalizuojant

c) Keičiant apmokymo pavyzdžių proporcinį skaičių: 0.2, 0.3, 0.4 ir 0.5 visų pavyzdžių

Rezultatus pateiksiu atskirais grafikais pagal a ir b parametrus, tikslaus atpažinimo procentą atvaizduojant Y ašyje, o apmokymo pavyzdžių kiekį atvaizduojant X ašyje.

Tyrimų, kurių metu gautas didžiausias bendras tikslaus atpažinimo procentas, pavyzdžių atpažinimo procentus pateiksiu atskiroje lentelėje.

Paveikslas 17 – LPC, nenormalizuoti, etalonai

Paveikslas 18 – LPC, normalizuoti, etalonai

Paveikslas 19 – MFCC, nenormalizuoti, etalonai

Paveikslas 220 – MFCC, normalizuoti, etalonai

Geriausias bendras tikslaus atpažinimo procentas – 90.58% – gautas naudojant MFCC požymius (analizuota 10 segmentų po 13 požymių), požymių nenormalizuojant, apmokymui ir klasifikavimui naudojant etalonus.

Pradėk Pakartok Baik Devyni Aštuoni Septyni Šeši Penki Keturi Trys Du Vienas Nulis

Pradėk 85.59 02.07 06.31 – – – 00.90 01.80 01.80 – – 02.70 –

Pakartok – 99.10 – – – – – – – – 0.90 – –

Baik 03.60 – 81.98 – – – – 00.90 01.80 – 08.11 – –

Devyni – – 06.31 90.09 – – – 05.41 – – – 00.90 –

Aštuoni 00.90 00.90 01.80 – 90.99 – – – 05.41 – – – –

Septyni – – – – – 95.50 – – 04.50 – – – –

Šeši – – – – 02.70 00.90 94.59 – 01.80 – – – –

Penki 01.80 – 01.80 – – – – 91.89 02.70 – 00.90 00.90 –

Keturi 04.50 – – 01.80 – 00.90 – – 91.89 – – 00.90 –

Trys – – 00.90 05.41 – – – – 00.90 92.79 – – –

Du – 02.70 01.80 00.90 – – – – – – 93.69 – 00.90

Vienas 00.90 – 00.90 04.50 – – – 00.90 00.90 – 00.90 82.88 08.11

Nulis – – 02.70 00.90 – – – – – 00.90 06.31 02.70 86.49

Išvados

Ataskaitoje pristatyti eksperimentai su dviem rinkiniais izoliuotų lietuvių kalbos garsų: balsėmis a, e, o, u ir žodžiais nulis, vienas, du, trys, keturi, penki, šeši, septyni, aštuoni, devyni, baik, pakartok, pradėk. Eksperimentų metu tirti LPC, MFCC požymių rinkiniai, požymių normalizacijos įtaka, klasifikavimas pagal etalonus ir naudojant vienasluoksnį perceptroną, taip pat tirta apmokymo pavyzdžių kkiekio įtaka tikslaus atpažinimo procentui.

Geriausi rezultatas su balsėmis – 80.76% tiksliai atpažintų pavyzdžių – gautas naudojant MFCC požymius (analizuota 10 segmentų po 13 požymių), normalizuojant pagal maksimalias absoliutines reikšmes, apmokymui ir klasifikavimui naudojant perceptroną ir imant 0.3 dalį visų pavyzdžių aapmokymui.

Geriausias rezultatas su žodžiais – 90.58% tiksliai atpažintų pavyzdžių – gautas naudojant MFCC požymius (analizuota 10 segmentų po 13 požymių), požymių nenormalizuojant, apmokymui ir klasifikavimui naudojant etalonus.

Eksperimentiškai nustatyta, kad:

• MFCC požymiai geresni nei LPC, duoda aukštesnį atpažinimo procentą

• Normalizavimas balsių atveju pagerino atpažinimo procentą, tačiau žodzžių atveju – sumažino

• Kartais apmokymo kiekiui didėjant sumažėja atpažinimo procentas, kas paaiškintina neidealiu apmokymo algoritmu – didėjant apmokymo pavyzdžių kiekiui atpažinimas turėtų gerėti

• Balsių atpažinimui klasifikavimas, naudojant perceptroną davė daug geresnius rezultatus nei naudojant etalonus ir lyginant pagal Euklidinį atstumą

Nuorodos eksperimentų tobulimui ir papildymui pateiktos sekančiame skyriuje.

Nuorodos tolesniems tyrimams

Eksperimentų metu gautas atpažinimo tikslumas yra per mažas praktiniam pritaikymui. Nurodomi šios galimybės gerinti atpažinimo tikslumą tolesniuose tyrimuose:

• Panaudoti DTW (dinaminio laiko kraipymo) algoritmą, lyginant garsų požymius. Eksperimente nebuvo atsižvelgta įį garso požymių nesutapimus laiko atžvilgiu. Garsai gali būti pasakomi greičiau, lėčiau, užtęsiant ar “nukandant” kurią nors garso dalį. Todėl šiam efektui kompensuoti paprastai naudojamas dinaminis kaiko kraipymo algoritmas, kuris šiame tyrime nebuvo pritaikytas. Pritaikius šį algoritmą, atpažinimo tikslumas turėtų žymiai pagerėti.

• Balsuojantys klasifikatoriai. Galima atpažinimui naudoti keletą klasifikatorių arba klasifikuoti pagal keletą požymių rinkinių ir pagal “balsų daugumą” spręsti, kuriai klasei priklauso analizuojamas garsas. Toks metodas taip pat turėtų sumažinti klaidų procentą.

• Kombinuoti požymių rinkiniai. Galima ieškoti efektyvesnių požymių rinkinių kombinuojant įįvairius kitus požymius – segmentų energiją, nulio kirtimų skaičių, formantes, tiesinės prognozės paklaidą, tačiau čia jau kiek euristinis, labai priklausantis nuo tyrinėjamų garsų, metodas.

• Dinaminiai požymiai. Į LPC ir MFCC koeficientų požymių rinkinius galima įtraukti dinaminius požymius, nusakančius segmentų koeficientų kitimą. Šį faktorių galima įvertinti ir pritaikant sudėtingesnę atstumo skaičiavimo funkciją.

• Klasifikuojant pritaikyti HMM (paslėtuosius Markovo modelius). Daugelis šiuolaikinių kalbos atpažinimo sistemų naudoja HMM, todėl yra pagrindo manyti, kad HMM pritaikymas leistų pagerinti atpažinimo tikslumą.

• Stabdyti perceptrono apmokymą. Eksperimente perceptronui apmokyti naudotas fiksuotas iteracijų skaičius (1000), kuris buvo parinktas eksperimentiškai. Tačiau, esant skirtingam pavyzdžių rinkiniui,

• Klasifikuojant naudoti daugiasluoksnį perceptroną arba kitokios (sudėtingesnės) struktūros dirbtinį neuroninį tinklą. Eksperimente išbandytas vienasluoksnis perceptronas yra gana paprastas klasifikatorius, ir, esant sudėtingeniam duomenų išsibarstymui, reikėtų naudoti sudėtinesnės struktūros dirbtinį neuroninį tinklą.

Literatūra

[1] Lawrence Rabiner. Fundamentals of Speech Recognition. Prentice Hall, 1993.

[2] John G. Proakis, Dimitris G. Manolakis. Digital Signal Processing: Principles, Algorithms and Applications. Prentice Hall, 1995.

[3] В.Г.Потёмкин, П.И.Рудаков. MATLAB 5 для студентов. Диалог-Мифи, 1999.

[4] Vinay K. Ingle, John G. Proakis. Digital Signal Processing Using MATLAB. Brooks/Cole, 2000.

[5] Darius Šilingas. Atskirai sakomų lietuvių kalbos žodžių atpažinimo tyrimas. Magistro tezės. VDU, 2001.

[6] MATLAB Signal Processing Toolbox User’s Guide. http://www.mathworks.com/access/helpdesk/help/pdf_doc/signal/signal_tb.pdf

[7] MATLAB Neural Network Toolbox User’s Guide.

http://www.mathworks.com/access/helpdesk/help/pdf_doc/nnet/nnet.pdf

[8] Auditory Toolbox.

http://rvl4.ecn.purdue.edu/~malcolm/interval/1998-010/