Izoliuotų lietuvių kalbos garsų atpažinimo eksperimentai naudojant matlab
5 (100%) 1 vote

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 ir 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, penki, š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 taikoma 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 bū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š failų

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ą teoremą 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].

Šiuo metu Jūs matote 32% šio straipsnio.
Matomi 1499 žodžiai iš 4642 žodžių.
Peržiūrėkite iki 100 straipsnių per 24 val. Pasirinkite apmokėjimo būdą:
El. bankininkyste - 1,45 Eur.
Įveskite savo el. paštą (juo išsiųsime atrakinimo kodą) ir spauskite Tęsti.
SMS žinute - 2,90 Eur.
Siųskite sms numeriu 1337 su tekstu INFO MEDIA ir įveskite gautą atrakinimo kodą.
Turite atrakinimo kodą?
Po mokėjimo iškart gausite atrakinimo kodą, kurį įveskite į laukelį žemiau:
Kodas suteikia galimybę atrakinti iki 100 straispnių svetainėje ir galioja 24 val.