Įvadas
Šnekos atpažinimo technologijos ateityje turėtų vaidinti svarbų vaidmenį žmogaus ir kompiuterio sąveikoje. Šiuo metu šnekai atpažinti daugiausia yra naudojamas vien tik garso signalas, kurio analizei taikomas paslėptųjų Markovo modelių metodas. Iš pasaulinės praktikos aiškėja, kad atpažinimo šiuo metodu tikslumas nebedidėja, nors ir dedama daug pastangų. Automatinį šnekos atpažinimą ypač veikia pašalinis triukšmas. Išeitis – ieškoti, kaip šneką atpažįsta žmonės, kurie tai daro kur kas tiksliau negu šiuolaikinės kompiuterinės sistemos.
Nagrinėjamos dvi galimybės, kaip būtų galima pagerinti šnekos atpažinimą:
- garso signalo intervalų klasifikavimas į fonemų grupes;
- vaizdo signalo analizė.
Diferencinius fonemų požymius siūloma naudoti todėl, kad tokios fonemų skirstymo schemos jau seniai yra naudojamos fonetikoje. Automatiniam šnekos atpažinimui pirmieji šiuos požymius pradėjo taikyti Masačusetso technologijos instituto mokslininkai [1,2]. D. Shipman ir W. Zue darbe [2] pateikiamas pavyzdys, kad angliškas žodis splint gali būti atpažintas net neatpažįstant priebalsinių fonemų /s/, /p/, /n/. Šis žodis 20 000 žodžių žodyne yra vienintelis, kuris tenkina šabloną: priebalsis – priebalsis – /l/ – balsė – nosinis garsas – sprogstamasis garsas. Fonetinių vienetų diskriminavimo lietuvių kalbai metodas yra tiriamas VU Kauno humanitariniame fakultete [3].
Gerai žinoma, kad žmonės su klausos negalia gali gana gerai išmokti suprasti šneką iš lūpų judesių. Todėl šnekai automatiškai atpažinti, burnos vaizdo informacija buvo pradėta kombinuoti su garso signalu. Mažiausias kalbos vienetas, išskiriamas vaizdo signale, buvo pavadintas vizema (angl. viseme). Vaizdinė informacija ypač naudinga triukšmingoje aplinkoje [4].
Fonemų klasifikavimo požymiai
Fonemų skirstymo į stambias grupes metodika ir požymiai išsamiai yra aptarti D. Childers monografijoje [5].
Siūloma atlikti šiuos veiksmus:
- Skardžiųjų bei duslių garsų ir tylos intervalų nustatymas (angl. voiced/unvoiced/silence detection);
- Balsingųjų garsų (sonorantų) nustatymas;
- Balsių nustatymas;
- Skardžiųjų priebalsių nustatymas;
- Balso juostos nustatymas (angl. voice bar detection);
- Nosinių garsų nustatymas;
- Pusbalsių nustatymas;
- Skardžiųjų frikatyvinių priebalsių nustatymas;
- Dusliųjų sprogstamųjų ir frikatyvinių priebalsių nustatymas.
Čia įgyvendinome 1–4 ir 7 veiksmus, pridėdami fonemų trukmės nustatymą. Nustatant daugumą požymių, yra naudojama garsumo funkcija V(i) [5] (angl. volume function). Indeksas i žymi intervalo numerį, kuriame apskaičiuota funkcija. Garsumo funkcija randama iš lygties:
Čia Ni – atskaitų skaičius i intervale, A – juostinio filtro apatinę ribą atitinkančio dažnio indeksas, B – viršutinę ribą atitinkančio dažnio indeksas, M – maksimalus dažnio indeksas. Funkcija H(z) surandama iš lygties:
Čia aj – koeficientai, gauti tiesinės prognozės (TP) analizės metu. Dydis G(i) surandamas iš lygties
Čia r(n) – TP analizės paklaidos.
Skardžių/duslių/tylos intervalų nustatymas. Iš pradžių signalas suskaidomas į vienodus 5 ms intervalus ir atliekama kiekvieno intervalo tiesinės prognozės (TP) analizė. Šios analizės rezultatas yra liekana, kuri parodo balsaskylės uždarymo taškus, ir atspindžio koeficientai kiekvienam intervalui. Intervalas yra žymimas kaip skardus, jei atspindžio koeficientai yra didesni nei 0,2, ir duslus – jei mažesnis ar lygus 0,2. Balsaskylės uždarymo indeksai toliau naudojami antrą kartą atliekant TP analizę. Antrosios analizės metu duslaus garso ir tylos zonose atliekama asinchroninė analizė, kai nagrinėjama zona yra suskaidoma į vienodo dydžio intervalus. Skardaus garso zonose pasirenkama sinchroninė analizė, kai nagrinėjama zona yra suskaidoma į tam tikrą skaičių intervalų, todėl skirtingose skardaus garso zonose intervalų ilgis skirtingas. Antroji TP analizė irgi atliekama kiekvienam intervalui.
Duslaus garso zona nustatoma ten, kur balsaskylė atvira, skardaus garso zona – ten, kur balsaskylė keičia būseną. Antroji sinchroninė TP analizė leidžia pažymėti tranzitines sritis. Tranzitinės sritys yra tokios sritys, kai duslaus garso zona keičiasi į skardaus garso zoną ir atvirkščiai. Tranzitinės sritys išskirtos todėl, kad šiose vietose yra didelė tikimybė padaryti klaidų. Taip pažymėtos zonos priskiriamos prie skardžiųjų garsų zonos, nes šiose zonose, ypač ten, kur skardžiojo garso zona pereina į dusliojo garso zoną, dėl spartaus energijos mažėjimo dažnai klaidingai gali būti priskirta prie duslaus garso zonos. Paskui reikia atskirti tylos ir duslumo zonas. Tam atvejui riekia apskaičiuoti garso funkciją ir lyginti su slenkstiniu triukšmo lygiu. Kai garso funkcija viršija slenkstinį triukšmo lygį ar yra jam lygi, nustatoma dusli zona, kai mažesnė, – nustatoma tylos zona. Po šio apdorojimo jau turime išskyrę tris skirtingas garso zonas: skardaus ir duslaus garso bei tylos.
Balsingųjų garsų nustatymas. Intervalas yra laikomas balsingu, kai jis yra skardus ir žemųjų dažnių garsumo funkcija gerokai didesnė už aukštųjų dažnių garsumo funkciją. Balsingųjų garsų grupei priklauso: balsiai, pusbalsiai, nosiniai priebalsiai, sprogstamųjų priebalsių pradžia. Balsingumui nustatyti naudojami du juostiniai filtrai (žemųjų ir aukštųjų dažnių srityse) ir surandami filtrų išėjimo signalų garsumai. Juostinio filtro žemųjų dažnių srityje pralaidumo juosta yra 98 Hz – 898 Hz, o juostinio filtro aukštesniųjų dažnių srityje – 3691 Hz – 5000 Hz [5]. Pirmosios reikšmės santykis su antrąja rodo balsingumo santykį R(i) (angl. sonorant ratio). Čia i – intervalo indeksas. Balsingumo santykis R(i) yra lyginamas su slenkstiniu skardumo lygiu Tson. Šitaip nustatomas balsingumo įvertis SS(i)) (angl. sonorant score). Jei R(i) ≥ Tson tai intervalas yra balsingas ir SS(i) = 1, priešingu atveju nebalsingas ir SS(i) = 0.
Balsių nustatymas. Balsiai nustatomi panašiai kaip ir balsingumas [5]. Keičiasi tik filtrų pralaidumo juostos. Jos atitinkamai yra 20 Hz – 996 Hz ir 1016 Hz – 5000 Hz. Tokiu pat principu apskaičiuojamas ir balsio santykis VWL(i) (angl. vowel ratio). Balsės įvertis VWLS(i) (angl. vowel score) yra apskaičiuojamas pagal formulę.
Dalies klaidų galima išvengti atlikus korekciją – intervalus laikyti neturinčiais balsių, kai intervalų trukmė yra trumpesnė nei 15 ms.
Skardžiųjų priebalsių nustatymas. Šiuo atveju naudojami juostiniai filtrai su ta pačia pralaidumo juosta, kaip ir nustatant balsius. Naudojami ir identiški slenkstiniai lygiai. Skardžiųjų priebalsių buvimo lygį VC(i) (angl. voiced consonant ratio) galima nustatyti minėtų garsumo funkcijų santykio metodu. Skardžiųjų priebalsių buvimo zonos nustatomos priešingai negu balsio buvimo zonos, t. y. skardusis priebalsis yra ten, kur VC(i) ≥ Tv, tada skardžiųjų priebalsių įvertis VCS(i)) (angl. voiced consonant score) lygus vienetui, o kur VC(i) < Tž, nustatoma, kad skardžiojo priebalsio nėra ir VCS(i)=0. Jeigu skardžiojo priebalsio buvimo lygis yra tarp abiejų slenkstinių lygių, tada tik su tam tikra tikimybe galima sakyti, kad tai yra skardusis priebalsis, (VCS(i) yra tarp 0 ir 1). Šiuo atveju reikia žiūrėti, prie kurio slenkstinio lygio arčiau yra skardžiojo priebalsio įvertis.
Pusbalsių nustatymas. Pusbalsių nustatymo algoritmas pagrįstas Espy ir Wilson metodu [6]. Pusbalsiams nustatyti naudojami du juostiniai filtrai. Pirmasis filtras – žemesniųjų dažnių srityje (20 Hz – 391 Hz), antrasis filtras – aukštesniųjų dažnių srityje (410 Hz – 977 Hz). Šiuo atveju iš pradžių nustatomas šniokštimo lygis MUR(i) (angl. murmur ratio), dalijant garsumo funkcijas vieną iš kitos. Nustatytas šniokštimo lygmuo lyginamas su viršutiniu (Tv) ir apatiniu (Tž) slenksčiu, kurie nustatomi eksperimentiškai. Jei MUR(i)≥Tv, tai tame segmente yra šniokštimas, o šniokštimo įvertis MS(i) (angl. murmur score) lygus vienetui. Jei MUR(i)<Tž, tai tame segmente nėra šniokštimo, o MS(i)=0. Kai MUR(i) yra tarp viršutinio ir apatinio slenksčio, tokiu atveju sunku tiksliai nustatyti, ar tame intervale yra šniokštimas, ar ne, MS(i) nustatomas tarp 0 ir 1. Toliau iš formulės galima nustatyti pusbalsio buvimo įvertį SVS(i)) (angl. semivowel score):
Intervaluose, kuriuose SVS(i)=1, nustatomas pusbalsio buvimo, kuriuose SVS(i)=0, nustatomas pusbalsio nebuvimas. Jeigu intervale SVS(i) yra tarp 0 ir 1, tada vienareikšmiškai sunku nustatyti pusbalsio buvimą. Patikslinant pusbalsio nustatymą naudojamos papildomos taisyklės [7].
Informacija apie lietuvių kalbos fonemų diferencinius požymius buvo paimta iš A. Girdenio [8] ir A. Pakerio [9].
Rezultatai
Buvo įrašyta vieno kalbėtojo vyro 30 žodžių tarimo garso ir vaizdo informacija. Segmentuojant, buvo išskirta 150 fonemų ir jas atitinkančių vizemų.
Įgyvendinus 2 dalyje aprašytus algoritmus (nepasiteisinus aprašytam skardžiųjų bei dusliųjų ir tylos intervalų nustatymo algoritmui, informacija paimta iš Praat programos), fonemos buvo suskirstytos į šias grupes:
- balsiai ir dvibalsiai;
- pusbalsiai;
- skardieji sprogstamieji priebalsiai;
- skardieji frikatyviniai priebalsiai;
- duslieji priebalsiai.
Iš rezultatų aiškėja, kad geriausiai iš balsių ir dvibalsių į savo grupę pateko balsiai „a“, „e“, „i“ ir dvibalsiai, į kuriuos įeina nors vienas iš šių balsių. Daugiausia kaip balsis klaidingai buvo suvokiamas pusbalsis „r“. Į balsius panašių savybių turi ir pusbalsis „l“. Tuo tarpu prie pusbalsių daugiausia buvo klaidingai priskirti balsiai „u“, „o“, „uo“. Skardžiuosius sprogstamuosius priebalsius „b“, „d“, „g“ daugeliu atveju leidžia teisingai klasifikuoti tik trumpesnė jų trukmė. Tiksliai kaip duslieji priebalsiai yra klasifikuojami garsai „s“, „š“.
Vizemų išskyrimas ir analizė buvo atlikti rankiniu būdu. 1 paveiksle pavaizduota balsių fonemų „o“ ir „a“ vizemos žodyje forma.
Kaip matome iš 1 paveikslo, yra didelis vizualus skirtumas tarp šių vizemų, atstovaujančių skirtingoms fonemoms. Priešingai nei 1 paveiksle, tarp 2 paveiksle pavaizduotų vizemų, atstovaujančių skirtingoms fonemoms akivaizdaus skirtumo nėra. Šiuo atveju taip yra todėl, kad abu garsai yra sprogstamieji ir lūpų padėtis yra visiškai vienoda.
Taip pat galima pastebėti, kad tos pačios fonemos vizemos, esančios skirtingose pozicijose (padėtis atsižvelgiant į prieš ir po einančias fonemas), gali gerokai skirtis. Tokį konkretų pavyzdį galima pamatyti 3 paveiksle. Taip yra todėl, kad tos pačios fonemos vizema priklauso nuo toliau esančių fonemų.
Diskusija
Remiantis garsų artikuliacijos informacija ir preliminariais vizemų tyrimo rezultatais, galima pasiūlyti toki lietuvių kalbos vizemų grupavimą, koks pateiktas 1 lentelėje.
Remiantis 1 lentele, buvo nubraižytas vizemų medis (4 pav.)
1. Balsius ir priebalsius galima atskirti pagal balsaskylės atvirumą: tariant balsius burna būna plačiai atverta. Taip pat balsius nuo priebalsių galima atskirti pagal ilgumą, balsiai gerokai ilgesni už priebalsius. Ilgumą galima nustatyti iš garsinės informacijos.
2. Lūpinius balsius ir dvibalsius nuo nelūpinių galima atskirti pagal lūpų formą. Lūpinių balsių ir dvibalsių tarimo metu lūpos būna apvalios. „u“ nuo „o“ būtų galima atskirti pagal lūpų atvirumą, tariant „o“ lūpos būna labiau atvertos. Dvibalsį „uo“ galima atpažinti, kai iš pradžių užfiksuojamas balsis „u“, paskui burna yra plačiai atveriama. Tariant nelūpinius balsius, burna pravira, bet lūpos neapvalios. Atskirai lengviau atskirti balsį „i“, nes tariant šį balsį burna yra mažiau atveriama negu tariant kitus nelūpinius balsius. Jei burna būna atvira, kaip tariant „a“ ar „e“, o vėliau plyšys labai susiaurėja, galima teigti, kad tai dvibalsis „ai“ arba „ei“. Jei burna pražiota vienodai, ir iš pradžių matoma įtampa (lūpos ištemtos į šonus), tai gali būti dvibalsis „ie“. Dvibalsius nuo balsių galima atskirti pagal ilgumą, dvibalsiai yra ilgesni už balsius. Aptarsime mišriųjų dvibalsių atskyrimą. Jei iš pradžių burna būna atvira kaip tariant balsį „a“, o vėliau apvalėja, tada toje vietoje yra dvibalsis „au“ arba „eu“. Jei burna iš pradžių būna apvali, o vėliau išsitiesia ir prisičiaupia, tada tai bus dvibalsis „oi“ arba „ui“.
3. Pagal aktyvųjį kalbos padargą lūpinius priebalsius nuo liežuvinių priebalsių galima atskirti iš lūpų padėties. Tariant lūpinius priebalsius pradžioje lūpos būna sučiauptos ir įtemtos. Tuo tarpu tariant liežuvinius priebalsius, lūpos būna truputi pravertos, atpalaiduotos (beveik nejuda) ir be jokių įtampos požymių.
4. Pagal pasyvųjį kalbos padargą lūpiniai (pagal aktyvųjį kalbos padargą) priebalsiai yra skirstomi į lūpinius ir dantinius. Tokiu atveju pirmieji ir pagal aktyvųjį ir pagal pasyvųjį kalbos padargą yra lūpiniai, o antrieji yra lūpiniai ir dantiniai. Lūpinius nuo dantinių galima atskirti pagal tai, kad tariant lūpinius priebalsius lūpos yra stipriau sučiaupiamos, labiau įtemtos, nei tariant dantinius. Taip pat tariant lūpinius lūpos yra apvalesnes nei tariant dantinius.
5. Pagal pasyvųjį kalbos padargą liežuviniai (pagal aktyvųjį kalbos padargą) priebalsiai yra skirstomi į dantinius, alveolinius ir gomurinius. Šiuo atveju, panaudojant vaizdinę informaciją, sunku atskirti šias priebalsių grupes, nes tarimo skirtumus lemia liežuvio padėtis (artikuliacija) burnoje: jis remiasi į priekinius dantis arba savo viduriu remiasi į gomurį, arba liežuvio galas remiasi gomurį. Kadangi liežuvio padėties kamera užfiksuoti negalima, tai, naudojant vizemas, beveik neįmanoma atskirti šių priebalsių tarpusavyje.
Pasinaudojant tokiu vizemų klasifikavimu ir garso signalo informacija, galima sudaryti sprendimų medį, kuris geriau klasifikuotų fonemas. Pagal tyrimo [3] duomenis blogai atpažįstama „m“ fonema (atpažinimo tikslumas 5 %), nors 90 % ji atpažįstama kaip pusbalsis. Tarp pusbalsių jis yra vienintelis, priklausantis abilūpinių vizemų grupei. Fonemos „b“ atpažinimo tikslumas 15,3 %. Kaip sprogstamasis priebalsis jis atpažįstamas 52,5 % tikslumu ir taip pat yra vienintelis priklausantis abilūpinių vizemų grupei. Mūsų tyrime „r“ pagal garsinę informaciją dažnai patenka prie balsių. Pagal burnos atvirumą ši fonema lengvai atskiriama nuo balsių.
Išvados
Vien garsinio signalo šnekai atpažinti neužtenka, nes triukšmingoje aplinkoje signalas gali būti negrįžtamai iškraipytas. Todėl šnekos atpažinimą, reikėtų kombinuoti remiantis tiek garsine, tiek vaizdine informacija. Kaip parodė atlikta analizė, tada kai kurie garsai atpažįstami kur kas geriau nei vien pagal garsinę informaciją. Pasiūlyta vizemų klasifikavimo sistema. Vizemų atpažinimo automatizavimo darbus planuojame tęsti.
Literatūros sąrašas
- Weinstein C. J., McCandless S.S., Mondshein L.F., Zue V.W. A system for acoustic-phonetic analysis of continous speech // IEEE Transactions on Acoustics, Speech, and Signal Processing. – 1975. – V. 23, No. 1. – P. 54–67.
- Shipman D., Zue V.W. Properties of large lexicons: Implications for advanced isolated word recognition systems // IEEE Proceedings of the International Conference on on Acoustics, Speech and Signal Processing. – 1982. – V. 7. – P. 546–549.
- Driaunys K., Rudžionis V., Žvinys P. Hierarchinė fonemų struktūra grindžiamo LTDIGITS fonemų klasifikavimo tyrimas// Informacinės technologijos. – Kaunas: Technologija, 2005. – P. 283–288.
- Chen T., Rao R. R. Audio-Visual Integration in Multimodal Communication // Proceedings of the IEEE. 1998. – V. 86, No 5. – P. 837–852.
- Childers D. G. Speech processing and synthesis toolboxes. John Wiley & Sons, 2000. – 484 p.
- Espy Wilson C. Y. A phonetically based semivowel recognition system // IEEE Proceedings of the International Conference on Acoustics, Speech and Signal Processing. – 1986. – P. 2775–2778.
- Daunys G., Balbonas D. Garsų klasifikavimas panaudojant sprendimo medžius // Informacinės technologijos. – Kaunas: Technologija, 2005. – P. 277–282.
- Girdenis A. Teoriniai lietuvių fonologijos pagrindai. Vilnius, Mokslo ir enciklopedijų leidybos institutas, 2003. – 388 p.
- Pakerys A. Lietuvių bendrinės kalbos fonetika. Vilnius, Enciklopedija, 2003. – 244 p.
D. Balbonas, G. Daunys. Fonemų klasifikavimas panaudojant garso ir vaizdo informacija // Elektronika ir elektrotechnika. – Kaunas: Technologija, 2005. – Nr. 5(61). – P. 74–77.