Gépi beszédfelismerés oktatási segédanyag BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM Fegyó Tibor Mihajlik Péter Gépi beszédfelismerés oktatási segédanyag 31-1 oldal
Tartalomjegyzék 1 BESZÉDFELISMERŐ RENDSZEREK FELÉPÍTÉSE...2 1.1 BESZÉDFELISMERÉS...2 1.1.1 Jelfeldolgozási módszerek a beszédfelismerésben...2 1.1.2 Mintaillesztés...7 1.1.3 Utófeldolgozás...19 1.1.4 Modellek paraméterbecslése...22 1.2 KUTATÁS...24 1.2.1 Kutatás és a fejlesztés kapcsolata...24 1.2.2 Használhatóság, robusztus felismerés...24 1.2.3 Akusztikus technológiák...26 1.2.4 Nyelv modellezés...27 2 FÜGGELÉK...29 2.1 RÖVIDÍTÉSEK...29 2.2 ÖSSZEFOGLALÓ TÁBLÁZATOK...29 2.2.1 Megvalósított információs rendszerek...29 2.2.2 Megvalósított internetes beszédfelismerő rendszerek...30 2.2.3 Megvalósított folyamatos beszédfelismerő rendszerek...30 2.2.4 Megvalósított beszédfelismerő hardver rendszerek...31 1 Beszédfelismerő rendszerek felépítése 1.1 Beszédfelismerés A beszédfelismerő rendszerek számos tudományterület eredményeit egyesítik magukban, ilyenek a statisztikus mintaillesztés, a kommunikációelmélet, a jelfeldolgozás, a kombinatorikus matematika, a nyelvészet és egyebek. Ennek megfelelően az egyes komponensek megismeréséhez széles körű mérnöki és informatikai ismeretek szükségesek. A technológiai rendszerek legalább három komponensből épülnek fel: jelfeldolgozó bemeneti egység, mintaillesztő egység és a végső döntést meghozó nyelvi modell alapú utófeldolgozó egység. Az utóbbi évtizedek kutatásai és tapasztalatai alapján sokat tanultunk arról, hogy hogyan kell használható, praktikus felismerő rendszereket írni, mégis messze vagyunk a végső céltól, illetve folyamatosan tágul az elérendő célok köre. Mindenesetre annak ellenére, hogy már kaphatóak az üzletekben beszédfelismerésen alapuló rendszerek, diktáló programok, még alapvető kérdésekben is sok feladat vár a kutatókra. Azt tudjuk, hogy a beszédjel az egyik legkomplexebb jel, továbbá azonos beszédelemeknek különböző akusztikus realizációit is kezelni kell és így a jellemzés igen bonyolult feladat. Sok megközelítés született a feladat különböző részeinek megoldására, melyek párhuzamosan fejlődnek, hisz egyelőre nincs egyértelműen optimális megoldás. A következőkben a jelenleg használt eljárásokat mutatjuk be a beszédjel feldolgozásától kezdődően, a teljesség igénye nélkül. 1.1.1 Jelfeldolgozási módszerek a beszédfelismerésben A beszédfelismerő rendszerek legalsó szintje a jelfeldolgozó egység. Különböző rendszerek különböző megközelítéseket használnak, de közös bennük, hogy a beszédjelből a felismerés számára fontos, számítógéppel feldolgozható adatokat állítanak elő. A beszédkutatók jelentős eredményeket értek el a beszédkeltő és beszédfelfogó szervek működésének feltárásában, és elkészítették ezek matematikai modelljét. Ezeken a modelleken alapulnak a jelfeldolgozás alapvető lépései. A leírás nem tökéletes, és általában a gyakorlat dönti el, hogy melyik út vezet a legjobb eredményekhez az adott feladat szempontjából. 31-2 oldal
A jelfeldolgozó egység tehát a beszédjelből transzformációk sorával a számítógép által értelmezhető adatsorozatot állít elő, amit jellemzőknek, vagy tulajdonságvektoroknak hívunk, mivel valamilyen tulajdonságát jellemzik a beszédjelnek. A kiindulás a digitalizált beszédjel, és ebből állíthatók elő különböző jellemzők mind az idő, mind a frekvencia tartományban. Ilyen jellemzők időtartományban pl. a rövid idejű energia illetve amplitúdó burkoló, a nullátmenetek száma, a szintátmenetek száma, stb. Spektrális tartományban általánosan elterjedten használják a rövid idejű spektrumot, valamint az erre épülő további feldolgozási algoritmusokat, melyekről a következőkben bővebben esik szó. A beszédjel mellett a környező zaj jellemzőinek mérése is ide tartozó feladat. Erre a zaj adaptációhoz, illetve kompenzációhoz van szükség - egy mikrofonos esetben az előbbi, több mikrofon illetve mikrofon sorok esetén az utóbbi alkalmazható. Minden valós feladatnál komoly feladatot jelent a környezeti zajok kezelése, kezdve a számítógépek ventillátorának a zúgásától, egészen az elhaladó mentőautó szirénájáig. 1.1.1.1 Spektrális analízis A tudomány mai állása szerint a fül harmónikus rezgéselemzést végez, amit kísérletek is bizonyítanak. Ezen álláspont szerint kézenfekvő jelfeldolgozási módszer az összetett rezgések elemzésére kidolgozott Fourier féle elemzés, mely szerint bármely periodikus rezgés felbontható olyan szinuszos rezgésekre, melynek frekvenciái az alaphang többszörösei. Ennek az elemzési módszernek a folyamatát mutatja a 3.1-es ábra. A feldolgozás elemeit a következőkben részletesen ismertetjük. anti-aliasing szűrő mintavételezés kvantálás ablakozás FFT további lépések 3.1 ábra. A spektrális jelfeldolgozás folyamata A beszédjel mind időben, mind amplitúdóban folytonos jel, így - mivel a számítógép digitális jelekkel dolgozik - az első lépés a mintavételezés és az amplitúdó kvantálás. Beszédfelismerőkben tipikus a 11kHz-22kHz-es mintavételezés, valamint a 16 bites kvantálás. Telefonos rendszerek esetén ezek az értékek alacsonyabbak lehetnek a telefonvonal karakterisztikája miatt (8kHz, 12 bit). A mintavételezést megelőzően azonban a mintavételezési tétel alapján egy sávkorlátozó szűrőt kell a jelútba iktatni, tipikusan egy aluláteresztő szűrőt, melynek határfrekvenciája a mintavételi frekvencia fele. A feldolgozás során nem a teljes jelet egyszerre (folyamatos beszédnél lehetetlen is lenne), hanem annak egy rövid darabját elemezzük, amit ablaknak, vagy keretnek nevezzük. Az ablak hossza illeszkedik az emberi beszédhangok időtartamához, tipikusan 10-30 ms hosszú és a keretek 50%-os átlapolással követik egymást. A feldolgozás pontosságának növelése érdekében az adott jelszakaszt (ablakot) egy un. ablakfüggvénnyel módosítjuk. Ilyen ablakfüggvényből az irodalomban többféle is szerepel, a beszédfeldolgozásban tipikusan a Hamming, Blackmann illetve a Hann ablakokat használják. A spektrális analízis alapja a diszkrét Fourier transzformáció (DFT), melynek hatékony végrehajtására dolgozták ki az FFT (Fast Fourier Transformation) algoritmust. Ez egy-egy ablakhoz meghatározza a rövid idejű spektrális paramétereket. A DFT kiszámítását a 3.2-es képlet írja le. N ( ) = A k = n 1 0 a( n) e 2 jnk π N ; k = 0,1,2... N 1 3.2 képlet. DFT számítása A beszédfelismerő rendszerek általában további transzformációkat (akár párhuzamosan többet is) hajtanak végre az FFT paramétereken. Ezek között a feladat jellege alapján, illetve kísérletekkel lehet választani, vagy egyszerűen megbízunk az irodalomban aktuálisan 31-3 oldal
elfogadott technikákban. A következőkben néhány további feldolgozási technikát mutatunk be a teljesség igénye nélkül. 1.1.1.1.1 Szűrősoros elemzés Az egyszerű diszkrét Fourier analízis önmagában is egyfajta szűrősoros elemzésnek tekinthető lineáris frekvencia felosztással, hisz az egyes paraméterek egy adott (szűk) frekvencia sávba eső energiát adnak meg. A hallásmodell szerint a fülben lévő érzékelő szerveken a frekvencia felosztás nem lineáris, hanem alacsony frekvencián közel lineáris, magasabb frekvenciákon pedig exponenciálisan nő a sávok szélessége. A hallásmodellhez igazodó felosztásból is több féle használatos, pl. a Bark, illetve a Mel skála. A szűrősoros elemzés végezhető valódi, hangolt hardver szűrőkkel, azonban a gyakorlatban szinte kivétel nélkül szoftveres megvalósítás terjedt el. Az egy kerethez tartozó beszédjelnek az egyes szűrők által meghatározott frekvenciatartományba eső energiája adja meg a tulajdonságvektort, melynek elemszáma megegyezik a szűrők számával. A szűrők egyenkénti megvalósítása helyett egyszerűbb a DFT paraméterekkel közelíteni az eredményt. A kísérletekkel megállapított szűrőkarakterisztikáknak megfelelően, a DFT paraméterek lineáris kombinációjaként állnak elő a sávszűrők kimeneteit közelítő eredmények. A szűrők karakterisztikáját szokás kernelfüggvénynek is nevezni. A függvény a sáv közepén csúcsosodó és a szélek felé ereszkedő jelleget mutat. 1.1.1.1.2 Kepsztrum elemzés A kepsztrum elemzés a 3.1 ábrán látható Fourier elemzés folytatásaként a 3.3 ábra szerinti folyamattal írható le. A kepsztrum komponenseket úgy kapjuk, hogy a Fourier komponensekből kiszámítjuk a teljesítményspektrumot, majd ennek a logaritmusán végrehajtjuk az inverz Fourier transzformációt. A kepsztrum komponenseken alkalmazott szűrést lifteringnek nevezik. Ez gyakran a magasabb komponensek figyelmen kívül hagyását jelenti, ami gyakorlatilag spektrum szűrésnek felel meg. Az alaphang, illetve a formánsfrekvenciák meghatározásához jól használhatóak ezek a jellemzők. Az FFT frekvencia skálájának transzformációjával állítható elő a Mel-kepsztrum (MFCC Mel Frequency Cepstral Coefficients), ami gyakran használt paraméter a beszédfelismerésben. Ebben az esetben a szűrősoroknál említett módszert alkalmazzák, azaz az FFT paraméterek segítségével közelítik a Mel skálájú szűrősort, ami durván egyenletes felosztású 1 khz alatt és exponenciális felette. A további lépések (logaritmus, IFFT, liftering) megegyeznek a kepsztrum számítás lépéseivel. FFT (F(ϖ)) W(ϖ)= F(ϖ) 2 lg(w(ϖ)) IFFT Liftering 3.3 ábra. Kepsztrum analízis Mind a szűrősorokkal, mind a kepsztrum paraméterekkel jobb felismerési eredmények érhetőek el, mint önmagában az FFT együtthatókkal, továbbá az egy kerethez tartozó jellemzők számát, azaz a tulajdonságvektor dimenzióját is csökkentik ezek az eljárások, így a további feldolgozás sebességét növelik. 1.1.1.2 Normálás A beszédfelismerés során nem a beszédhang abszolút tulajdonságai, mint magassága, ereje számítanak, hanem a hangok egymáshoz képesti relatív tulajdonságai. Megértjük ha valaki lassabban vagy gyorsabban, hangosabban vagy halkabban beszél, sőt még azt is ha énekel. Ezen hatások némelyike jelfeldolgozási módszerekkel, a jelek normálásával, kompenzálható. A beszédjel átlagos tulajdonságait megmérjük egy hosszabb időablakban, és az így kapott 31-4 oldal
számértéket a tulajdonságtól függően levonva, vagy a számértékkel osztva előállítjuk a normált jelet. Néhány általánosan használt normálási eljárás: Egyenszint kompenzáció: A beszédjel egyenszintjét (a jel átlagát) ki kell vonni a jelértékekből, mivel ez nem hordoz lényeges információt. Jelszint normálás: úgy növeljük a jel amplitúdóját, hogy a legnagyobb érték a teljes kivezérlést adja. Csökkentésről itt nem lehet szó, mivel akkor túlvezérelt jelet kellene lehalkítani. Ezzel nagyjából egyformán hangosra állítjuk a feldolgozandó jeleket. Rövid idejű de nagy amplitúdójú zajok esetén előfordul, hogy azokhoz igazítja a maximumot, így a beszédjel továbbra is halk marad. Kepsztrum átlag kivonás: A logaritmikus spektrum tartományban a lineáris torzítás eltolásként jelentkezik a hosszúidejű átlagban. Ennek kompenzálására a hosszúidejű átlagot kivonjuk az egyes log-spektrum elemekből. Lineáris torzítás kompenzálására ez jól használható, amit pl. a különböző mikrofonok okoznak. Numerikus pontatlanságok miatt szélsőséges esetekben ronthatja a felismerés pontosságát, azonban általában hatékonyan használható. 1.1.1.3 Lényeges információ kiszűrése A beszéd során egy véges értékkészletű jelsorozatot (pl. a betűk sorozatát) folyamatos időtartományi jellé alakítjuk, azonban ebben a jelben sok egyéb információ is kódolva van. Ilyenek a beszélő személye, annak hangulata, sőt a környező zajok is. A beszédfelismerés az inverz feladat, tehát ebből a jelből kinyerni a jelen feladat számára lényeges információt, azaz az elhangzott szöveget. Ennek alapjául szolgál a korábban ismertetett spektrumelemzés. További elemzések is végezhetőek a jelen, hogy értékes jellemzőket határozzunk meg, pl. alapfrekvenciát vagy a formáns frekvenciákat. Jelenleg nem ismerünk olyan jellemzőhalmazt ami egyértelműen jellemzi a beszédhangokat. Sőt, az egyes beszédhangok különböző reprezentációihoz tartozó tulajdonságvektorok által alkotott térrészek nem diszjunktak az eddig ismertetett paraméterek esetén. Az emberi fül sem tökéletes: rövid - néhány hangból álló - egységeket nehezen, néha hibásan értünk, mégsem jelent problémát a folyamatos szöveg megértése, mivel az agyban működő komplex nyelvi feldolgozás korrigálja a hibákat. A cél tehát olyan jellemzők keresése, melyek minél hatékonyabb mintaillesztést tesznek lehetővé. A korábban bemutatott spektrális jellemzők mellé a teljesség igénye nélkül felsorolunk még néhány jellemzőt. Alapfrekvencia (pitch) Formáns frekvenciák: a spektrumképen egyértelműen kiemelkedő frekvenciákat nevezzük formáns frekvenciáknak. A formánsstruktúra jellemző az egyes hangokra, azonban az értéke változik a beszélő személye, a beszédtempó, és a környező hangok függvényében. Beszédjel - beszédszünet: szavankénti felismerésnél a szóhatárok, folyamatos felismerésnél pedig a frázishatárok megállapítására szolgál. Legegyszerűbbel a jel energiájából határozható meg egy küszöbszint megadásával. A pontosságnak gátat szabnak a környezeti zajok, valamint a szavak elején és végén található szájzörejek. Zöngés - zöngétlen részek elkülönítése is fontos jellemző lehet. Meghatározható a rövid idejű energia függvényeként, ami kiemeli a nagy energiájú, többnyire zöngés részeket. Más módszer erre a nullátmenetek számolása, illetve az autókorrelációs függvény alkalmazása. 1.1.1.4 Tulajdonság vektor előállítása Összefoglalva tehát a beszédjelet felbontjuk periodikusan egyenlő méretű (tipikusan 10-30 ms), átlapolódó darabokra, és minden ablakra kiszámítjuk a tulajdonság vektort, ami az előző fejezetben leírt tulajdonságok alapján jellemzi a beszédjel egy részét. A vektorban az egyes tulajdonságok adott időablakra jellemző számértékei foglalnak helyet egymás alatt. Ez a vektorsorozat képezi a mintaillesztő egység bemenetét. A paraméterek kiválasztása függ a feldolgozó rendszer képességeitől (sávszélesség, memória, sebesség), valamint a feladattól is. Minél komplexebb a feladat, annál pontosabb és komplexebb paraméterek számítására van 31-5 oldal
szükség. Pl. beszéddetektor esetén akár egyetlen elem, az energia is elegendő, de felismerőkben tipikus a 20 elemű kepsztrum, vagy Mel-kepsztrum vektor. Általában a paramétervektorok mellett megadjuk azok változását is ezek a delta esetleg delta-delta paraméterek. Ezek az aktuális ablak előtti ill. utáni néhány (2-3) vektor lineáris kombinációjaként számíthatóak. A paraméter vektorok előállítása során az egymást követő ablakokat (kereteket) függetleneknek tekintettük, ami nyilván helytelen feltételezés, hiszen a beszédjel erősen redundáns, de jelenleg nem ismert ezt hatékonyan kezelő módszer. A delta paraméterek számítása során figyelembe vesszük ezt az összefüggést, hiszen több egymást követő keretből (szegmens) jön létre az eredmény. Ennél hosszabb idejű összefüggések kezelésére az utófeldolgozó modul nyújt lehetőséget. A mai hagyományos és célprocesszorokon sem jelent problémát a fent említett vektorok előállítása, a valós idő töredéke, néhány százaléka szükséges csupán. A feldolgozási idő nagyobb részét a következő szint, a mintaillesztés veszi el. Ezért is szükséges minél kompaktabb paraméterhalmaz előállítása. Amennyiben 20 ms-os ablakkal és 22kHz-es mintavételi frekvenciával dolgozunk, akkor egyetlen keretben 440 beszédminta van, míg a tulajdonságvektor a fentiek szerint kb. 60 elemet tartalmaz, ami jelentős adatmennyiség csökkenést jelent. 31-6 oldal
1.1.2 Mintaillesztés A mintaillesztő feladata a bemenetként kapott tulajdonságvektor-sorozat leképezése felismert szimbólumok nyelvi elemek sorozatává, melyek további processzálásra az utófeldolgozóba kerül(het)nek. Fontos látni, hogy a bemeneti jel még akusztikus információkat tartalmazó állandó ütemezésű jelfolyam, míg a kimenet a már sokkal absztraktabb nyelvi egységek sorozata. Vagyis a kritikus lépés, az akusztikus/nyelvi konverzió azaz felismerés itt történik meg. A mintaillesztő tehát a beszédfelismerők kulcsfontosságú része, ezért ez a témakör alaposabb tanulmányozást igényel. Két alapvető megközelítésről írnunk: Templétbázisú mintaillesztés (pl. DTW Dynamic Time Warping, azaz dinamikus idővetemítés alapú eljárások) Statisztikus (adatbázis alapú) eljárások (pl. HMM Hidden Markov Model, ill. ANN Artificial Neural Networks, azaz rejtett Markov-modell és mesterséges neuronhálós alkalmazások.) Az első módszer történetileg előbb alakult ki, vele folytatjuk a tanulmányt. A korszerű felismerők túlnyomó többsége azonban a második típusú mintaillesztést alkalmazza, a gyakorlatban a leghasználhatóbbnak a tisztán rejtett markov-modelles felismerők bizonyultak, így főleg velük foglalkozunk. 1.1.2.1 Templétbázisú mintaillesztés A templét (vagy referencia) alapú mintaillesztés feladata, hogy előre tárolt mintákhoz hasonlítsa (illessze) a tulajdonságvektor-sorozat egyes elemeit. A beszédfelismerőnek meg kell adni az összes felismerendő szimbólumot, valamint az ezekhez tartozó jellemzővektorokat. A feladattól függően egy vagy több embertől gyűjtött minták átlagolásával áll elő a referencia minta egy betanítási folyamat eredményeként. A szimbólumoktól és a felismerő algoritmustól is függ, hogy egy referencia szimbólumhoz milyen hosszú vektorsorozat tartozik. Nyilván egy szóhoz tartozó referencia több vektort tartalmaz, mint egy hanghoz tartozó. Egy-egy szimbólumhoz akár több különböző referencia is megadható az esetleges nagy különbségek esetén, amennyiben a felismerő algoritmus nem képes ezt kezelni. Pl. ugyanazt a hangot néha hosszabban máskor rövidebben ejtjük, ezt akár különböző referenciával is ábrázolhatjuk, ugyanígy kezelhető a tájszólás is. A mintaillesztő tehát a beérkező vektorsorozat minden elemét sorban összehasonlítja az összes tárolt referenciával és meghatározza, hogy melyiktől milyen "távol" van. A vektoronkénti távolságszámításnak különböző módjai vannak. Alapvető és egyben a legelterjedtebb módszer a térben a legközelebbi elemre döntés az Euklideszi távolság alapján. h = arg min dr ( k, t)) r k 3.4 képlet. t tesztvektor esetén a legkisebb d távolságot eredményező r k referenciára dönt a mintaillesztő A távolságszámítást koordinátánkénti paramétersúlyozással lehet kombinálni, így optimális esetben jobb döntést kapunk, azonban nagyon nagy mennyiségű mintára van szükség ennek a betanításához, így viszonylag ritkán alkalmazzuk. Statisztikus módszerek esetén a jellemzővektoroknak statisztikus jellemzőit (pl. átlagát, szórását) számítjuk ki, és ilyenkor valószínűségekkel dolgozunk, minden referencia - teszt vektor összehasonlítás eredménye egy valószínűség, mely megadja, hogy az adott teszt vektor milyen valószínűséggel tartozik az adott referenciához. Mindkét esetben lehetőség van kiválasztani a legközelebbi, vagy legvalószínűbb értéket, azonban tipikusan az első néhány legjobb jelöltet (hipotézist) is megadja a mintaillesztő, hogy 31-7 oldal
a következő szinten a nyelvi modul ezek közül válassza ki a megfelelőt. A következőkben néhány mintaillesztési eljárást mutatunk be. 1.1.2.1.1 Dinamikus idővetemítés A mintaillesztés egy klasszikus módszere a dinamikus idővetemítés. Ez a módszer kis szótáras, izolált szavas, beszélőfüggő feladatoknál nyújt kézenfekvő megoldást. Az első alapvető feladat két mintasorozat egymáshoz viszonyított "távolságának" meghatározása. Adott egy felismerendő teszt mintasorozat és sok tárolt referencia sorozat. Meg kell mondani, hogy melyikhez illeszthető legjobban a teszt. Nagy valószínűséggel a referenciák hossza különböző, és a teszt is különbözhet ezektől, mivel ugyanazt a szót különböző sebességgel mondhatjuk ki. A teszt és a referencia mintákat azonban valahogy párba kell állítani a távolság méréséhez. Erre a legegyszerűbb, bár önmagában nem használható módszer a lineáris idővetemítés. Egyszerűen valamelyik időtengelyt a másikhoz nyújtjuk lineárisan. Az így párba állított minták távolságát összegezzük, és a legkisebb távolságra, azaz a "leghasonlóbb" referenciára döntünk. Ezen algoritmus alkalmazhatóságának az szab határt, hogy a szavakat nem arányosan mondjuk gyorsabban, vagy lassabban, hanem a szavakon belül is lehetnek sebességkülönbségek. Erre használható a dinamikus idővetemítés (DTW). Ez egy nemlineáris transzformációt hajt végre az időtengelyeken, és ezek mentén hasonlítja össze a mintasorozatokat. A referencia mintasorozat: r = r[0]..r[r], a teszt mintasorozat: t = t[0]..t[t], és a vetemítőfüggvények az F t (i), és F r (i) függvények; ezek közül keressük az optimálist. Így a távolság: D( r, t ) = min d( r F ( i), t F ( i ) ) F r t i 3.5 képlet. A t tesztvektor-sorozat távolsága r referenciavektor-sorozattól A vetemítő út az (r[0],t[0]) pontból indul, és (r[r],t[t]) pontba érkezik; monoton nő, hisz nem beszélünk visszafelé; nem lehet akármekkorát ugrani, hisz nem beszélhetünk tetszőlegesen lassan, vagy gyorsan. A konkrét implementációban lokális feltételeket lehet megadni a továbblépésre, így az F függvény által megadott út nem lehet tetszőleges. r (R,T) (0,0) 3.5 ábra. Példa a DTW útválasztására Nagy előnye ennek a rendszernek, hogy igen gyorsan - akár egyetlen mintával is hatékonyan tanítható. Robosztusabbá tehető a felismerő több tanító minta alkalmazásával, ezek a vetemítő út mentén átlagolhatóak. Amennyiben elegendő mennyiségű tanító minta áll rendelkezésre, akkor már általában statisztikus módszereket alkalmaznak, pl. a rejtett Markov-modelleken alapuló felismerőt, mely gyakorlatilag magában foglalja a DTW algoritmust is. t 31-8 oldal
1.1.2.2 Statisztikus mintaillesztési módszerek A statisztikus eljárások közös tulajdonsága, hogy valamilyen akusztikus modellt használnak, melyekben akusztikus információ tárolása és felhasználása hatékonyabban valósul meg, mint a templét alapú módszernél. Az ár a modellparaméterek becsléséhez szükséges nagyobb adatbázis és számítási idő. Fontos megjegyezni, hogy a statisztikus jelző nem magára a mintaillesztési folyamatra vonatkozik, hanem a modell-paraméterek kiszámítására, becslési módjára. A következőkben megpróbálunk a templétbázisú (DTW) módszerből kiindulva eljutni a rejtett Markov-modell (HMM) alapú mintaillesztésig. 1.1.2.2.1 A templéttől a rejtett Markov-modellig Induljunk ki a legegyszerűbb izoláltszavas felismerésből. Ilyenkor minden szót, azaz felismerési szimbólumot egy referencia tulajdonságvektor-sorozat reprezentál ezt hívjuk templétnek, ehhez hasonlítjuk az aktuális bemondás tulajdonságvektorait. Felfoghatjuk úgy is, hogy a szótárban szereplő minden szónak van egy modellje, ami adott esetben úgy keletkezett, hogy a szó egyetlen realizációjának tulajdonságvektor-sorozatát egyszerűen eltároltuk. Ennek a modellezési eljárásnak azonban több gyengéje is van. Először is, egyetlen beszélő egyetlen bemondása nyilvánvalóan nem tudja visszaadni azt a nagymérvű akusztikai változatosságot, ami a beszéd minden szavára jellemző. Másodszor, a templétmodell erősen redundáns. A vektorok általában 10 ms-onként érkeznek, a beszédben pedig egyes hangzók 100-200 ms ideig is tarthatnak, következésképpen nagyon sok egymáshoz nagymértékben hasonló tulajdonságvektort kell eltárolnunk. Egy lehetőség a redundancia csökkentésére, hogy az egy hangrészlethez tartozó, hasonló vektorokat egybevonjuk, és egyetlen állapottal modellezzük a szórészletet. A szó egésze pedig nyilvánvalóan állapotsorozatként áll elő. k í n a Templét-modell k í n a Állapot-modell 3.6 ábra Templétből állapot-modell kialakításának szemléltetése Kérdés, hogy az egyetlen állapot hogyan adja vissza az elnyelt nagyobb számú tulajdonságvektort. A válaszhoz tisztáznunk kell, mit várunk a modelltől: képes legyen egy teszt tulajdonságvektorra minden állapotban egy hasonlósági mérőszámot adni, teljesen hasonlóan a DTW-hez, ahol azt minden keretben az euklideszi távolság adta meg. Járható út lenne, hogy az állapotot a középső vektorral, vagy egy átlagvektorral képviseljük és továbbra is euklideszi távolságot számolunk. Több előnnyel jár viszont az a megközelítés, hogy minden állapothoz egy eloszlásfüggvényt rendelünk, melynek bemenő mennyisége a tulajdonságvektor, a kimenete pedig a hasonlósági mérőszám mely megmutatja, mennyire illeszkedik az adott vektor a modellezett hangrészlethez. Így az elsőként említett, a beszédhangok akusztikai változatosságából eredő probléma kezeléséhez is közelebb kerültünk. Az adott állapotra jellemző eloszlásfüggvényt természetesen az állapotba elnyelt tulajdonságvektorok statisztikai feldolgozásával alakítjuk ki. Minél több vektor áll rendelkezésre egy állapothoz, minél több beszélő minél többször mondta ki ugyanazt a szót vagy szórészletet, annál jobb lehet az eloszlásfüggvényünk és így a modellünk is. A 31-9 oldal
gyakorlatban megkötéseket tesznek az eloszlásfüggvényre pl. legyen Gauss függvények lineáris kombinációja így csak az átlagértékeket és szórásokat (kovarianciát) kell eltárolni. Egyetlen probléma van csak a modellünkkel: nincs semmilyen információnk arról, hogy az egyes állapotok milyen sokáig (hány keretnyi ideig) tartanak. Bár az egy állapothoz tartozó vektorok megszámlálása és az átlag eltárolása kézenfekvőnek tűnik, előnyösebb, ha az állapothossz-információt állapotátmeneti valószínűségek bevezetésével reprezentáljuk. Alapesetben csak a következő állapotba jutás illetve helyben maradás valószínűségét érdemes 0-nál nagyobbra választani (minden ütemben lépni kell egyet, legfeljebb az addigi állapotba lépünk). Ekkor világos, hogy a hosszabb állapotoknál a saját állapotba való jutás (azaz helyben maradás) valószínűsége nagy lesz, a következőbe jutásé kisebb. Rövidebb állapotoknál a különbség kisebb lesz ezen valószínűségek között, tehát a két átmeneti valószínűség aránya jelzi az állapot hosszát. Itt megállhatunk, hiszen eljutottunk a beszédfelismerésben oly sikerrel alkalmazott folytonos megfigyelési-sűrűségfüggvényű rejtett Markov-modellig. A következőkben egy egzaktabb matematikai definíciót adunk meg, majd a mintaillesztési felismerési folyamatot mutatjuk be. 1.1.2.2.2 Rejtett Markov-modell A Markov-modell (használatos a Markov-lánc elnevezés is) diszkrét állapotok és az állapotok közötti átmenetekre értelmezett valószínűségek összessége. Az állapotokat q-val jelöljük (az i-ik állapotot q i -val), az ún. állapotátmeneti valószínűségeket pedig a-val. a ij jelenti az i-edikből a j-edik állapotba való kerülés valószínűségét, formálisan: a = P q q ). Grafikus reprezentációnál az állapotokat ellipszisekkel jelöljük, a i j ( i j lehetséges állapotátmeneteket pedig (ahol a i j > 0 ) nyíllal. a11 a12 a21 2 a321 a23 1 3 a33 a11 =0.6, a12=0.2, a13=0.2, a21 =0.5, a22=0, a23=0.5, a31 =0, a32=0.9, a33=0.1. a13 3.7 ábra Illusztráció: egy háromállapotú Markov-modell A Markov láncokat gyakran használják valamilyen fizikai folyamat modellezésére, ahol különböző megfigyelések alapján kell szimulálni modellezni a folyamatot. Ha a megfigyelés egyértelműen azonosítja, hogy a folyamat milyen állapotban van, akkor a használt modellt megfigyelhető Markov-modellnek vagy egyszerűen Markov-láncnak nevezzük. Ilyen eset pl. a kockadobálás, hiszen összesen 6 állapot lehetséges, a dobás végrehajtása után végzett megfigyelés pedig egyértelműen azonosítja az állapotot (tulajdonképpen az állapot megfigyelés szétválasztásra itt nincs is szükség). Számos folyamat létezik viszont, melyekre ugyan az állapotok jól definiálhatók, rájuk a megfigyelések alapján mégsem következtethetünk egyértelműen. Vegyük a következő egyszerű példát: Van három dobozunk, mindegyikben 6 db labda. Az elsőben 3 fehér, 2 piros, 1 fekete, a másodikban 3 piros, 2 fehér, 1 fekete, a harmadikban 4 fekete, 1 piros, 1fehér. Legyen a megfigyelésünk az, hogy egy dobozból kihúzunk egy labdát. A megfigyelés alapján el szeretnénk dönteni, melyik állapotban vagyunk, vagyis, hogy mi a sorszáma a doboznak, amelyikből húztunk. Világos, hogy bár az első dobozban főleg pirosak vannak, a másodikban főleg fehérek, az harmadikban meg feketék, a megfigyelés nem determinálja az állapotot. Csak valószínűségeket tudunk mondani előzetes ismereteink birtokában. Legyen például a gondolatkísérletben a megfigyelésünk a piros labda. A következő megállapításokat tehetjük: 31-10 oldal
feltéve, hogy az 1. dobozból húztuk, az esemény valószínűsége 1/3. Feltéve, hogy az 2. dobozból húztuk, a valószínűség 1/2, míg ha azt tesszük fel, hogy a 3. dobozból húztuk, akkor 1/6. Valószínűsíthetjük, hogy a 2. dobozból húztuk a piros labdát, de nem lehetünk biztosak benne. Az ilyen és ehhez hasonló folyamatok modellezésére alkalmasak a rejtett Markovmodellek. A rejtett szó arra utal, hogy a megfigyelő nem látja az állapotokat, azok mintegy rejtve maradnak. Minden állapothoz tartozik egy diszkrét vagy folytonos eloszlásfüggvény, ami azt mutatja meg, hogy az állapotban értelmezett egyes (diszkrét vagy folytonos) megfigyeléseknek mi a valószínűsége. A j-ik állapotban az o esemény (megfigyelés) valószínűségét (o) -val jelöljük. A fenti példán keresztül szemléltetve: b j Az első doboz (állapot) eseményeinek valószínűség-eloszlása: b 1 1 ( piros) = 1, b1 ( fehér) =, b ( ) 2 1 fekete = 3 Hasonlóan, a többi állapot eloszlása is könnyen számolható, ezt az olvasóra bízzuk. Természetesen a megfigyelésnek nem kell diszkrétnek lennie. Lehet például valós szám N- es azaz vektor, ilyenkor b (o) egy vektor-skalár függvény, egy N-dimenziós eloszlás j sűrűségfüggvénye. Lényegében ugyanarról van szó mint korábban, a megfigyeléshez egy valószínűségi mértéket rendelünk. Az utóbbi típusú modelleket folytonos megfigyelésisűrűségfüggvényű rejtett Markov-modelleknek hívjuk, ilyeneket használnak a korszerű beszédfelismerőkben is. 1.1.2.3 Beszédfelismerés HMM-alapú mintaillesztéssel 1.1.2.3.1 Izoláltszavas felismerés A tárgyalás egyszerűsítése végett tételezzük fel, hogy a felismerendő szavakat egymástól szünetekkel elválasztva ejti ki a beszélő. Így az egyes szavak izolálva vannak egymástól, elegendő egyszerre eggyel foglalkozni. Tételezzük fel továbbá, hogy egy beszéddetektáló algoritmus behatárolta a bemondás elejét és végét, így egy véges hosszú tulajdonságvektorsorozat áll rendelkezésre, amelyikről a mintaillesztőnek kell eldönteni, melyik nyelvi szimbólumhoz tartozik. 1 6. o1 ot ot e z e qi qj t í z r P(" ezer") =? P(" tíz") =? max? 3.8 ábra HMM-alapú izoláltszavas felismerés Izoláltszavas felismerésnél minden egyes felismerendő szónak külön rejtett Markovmodellje van. A topológia általában balról-jobbra (angol nyelvű irodalomban Left-to-Right) típusú, amelyben az állapotok szekvenciálisan következnek, csak a helyben maradás illetve a 31-11 oldal
következő állapotba lépés engedélyezett (3.8 ábra). Az állapotokat úgy célszerű megválasztani, hogy egy viszonylag jól definiálható hangrészletet képviseljenek (vagyis, hogy az egy állapothoz tartozó tulajdonságvektorok akusztikailag kis mértékben térjenek el egymástól). A feladat minden egyes rejtett Markov-modellnél a legvalószínűbb állapotsorozat megtalálása az adott tulajdonságvektor-(megfigyelés-)sorozat esetén. Magukat a valószínűségértékeket is el kell tárolni, arra a modellre mint felismert szóra döntünk, amelyiknél a legnagyobb ez az érték. Mielőtt a mintaillesztő algoritmusra rátérnénk, vizsgáljuk meg, hogy az egyes HMM paramétereknek mi a jelentősége: a ( qi q j állapotátmeneti valószínűség:, ez határozza meg, hogy mi a következő i j = P állapot, valamint időtartamra vonatkozó információt hordoz a bal-jobb struktúrában. j ( o t ) j ( o t b j ( o t ) = P( ot q j ) lokális megfigyelési eloszlás:, a j-ik állapotban az o t megfigyelés, azaz a t-edik tulajdonságvektor valószínűségét adja meg. Vagyis egy olyan mérőszámot generál, amely azt mutatja, hogy az adott tulajdonságvektor mennyire hasonlít a modellezett hangrészhez. Igazából b ) -n keresztül történik a mintaillesztés, hiszen egy olyan eloszlásfüggvényről van szó, melynek paraméterei úgy vannak beállítva, hogy az állapotnak megfelelő tulajdonságvektorok esetén adjon maximális valószínűséget a kimenetén. Ab ) -t a hagyományos megközelítésben M db. Gauss-függvény keverékéből állítják elő:, Σ ) jm Tehát, a cél a legnagyobb valószínűségű állapotsorozat megkeresése adott modellnél. Erre a Viterbi-algoritmust használják, mely a DTW-hez hasonlóan a dinamikus programozásra épül. Definiáljuk először a δ t (i) mennyiséget, amely a kezdőtől az i. állapotig, az első t db megfigyelés során számított legjobb út valószínűségét jelenti. Ennek segítségével az algoritmus a következőképpen írható le: minden i = δ t b j ( o ) = t M m= 1 c G( o, µ ( i) = 1; t = 0, minden i = 1... N re. t+ 1 = t ij j t+ i ( j) max[ δ ( i) a ] b ( o 1); jm 3.9 képlet Multimodális Gauss-eloszlás alkalmazása kimeneti valószínűség megadasára Σ jm A Baum-Welch tanító algoritmussal a kovariancia mátrix µ átlagvektor és súlytényező becsülhető, valójában itt jön be az adatbázis kérdése, ugyanis a fenti paraméterek jó beállításához nagy mennyiségű beszédadatra van szükség. (Legyen a modell-állapotok száma N, a tulajdonságvektoroké T.) Inicializálás: Indukciós lépés: δ 1... N és j = 1... N re. Leállás: ha t = T. A kimenetet a maxδ T (i) jelenti. i Az algoritmust egy TxN-es rácsban való haladással szokásos szemléltetni. A vízszintes tengelyen sorakoznak a tulajdonságvektorok, a függőleges tengely mentén pedig az állapotok vannak. A DTW-hez hasonlóan itt is nagyjából az a feladat, hogy a bal alsó sarokból valahogy eljussunk a jobb felsőbe. Minden egyes ütemben egy oszloppal jobbra lépünk, és az új oszlop minden rácspontjában megvizsgáljuk, hogy hogyan lehet ide jutni, hogy az idáig vezető út a legnagyobb valószínűségű legyen. Az algoritmus megvalósításához egy N-elemű táblázatot (oszlopot) kell eltárolni, mely az előző ütem legjobb útjainak a valószínűségét tárolja állapotonként. Első lépésként a táblázatot t jm jm c jm 31-12 oldal
egyesekkel töltjük fel, majd az indukciós lépés szerint frissítjük az értékeket. Az indukciós lépésben van az algoritmus lényege: a kiválasztott ( ) állapotban megvizsgáljuk, hogy melyik az az előző ütembeli állapot, amelynek a legjobb út valószínűsége az átmeneti valószínűséggel súlyozva a legnagyobb, vagyis honnan lehet a legkisebb veszteséggel ide jutni. Azután ezt a számot ( max δ ( i) a ] ) beszorozzuk az éppen beérkezett i [ t ij tulajdonságvektor adott állapot szerinti megfigyelési-valószínűségével ( b ( o ) 1 ), és máris megkaptuk az új út-valószínűséget. Világos, hogy ha olyan állapotban vagyunk, amelyik nem az aktuális tulajdonságvektort modellezi, akkor a megfigyelési valószínűség kicsi lesz, és lerontja az út valószínűségét. A számítást minden ütemben mindegyik állapotra (az oszlop minden rácspontjára) elvégezzük. Végül, az utolsó lépésben a táblázat legnagyobb értéke ( maxδ ( i) ) adja a teljes tulajdonságvektor-sorozatra számított legjobb út valószínűségét. i T Ezzel az algoritmus lefutott, a további teendőnk mindössze annyi, hogy kiválasszuk azt a modellt, amelyiknél a legnagyobb ez a számérték ez azonosítja a felismert szót. Megjegyzések: A gyakorlatban a valószínűségek helyett azok negatív logaritmusával számolnak, mivel így szorzás helyett összeadásokat kell végrehajtani. A transzformált valószínűségeket költségként is értelmezhetjük, ekkor teljesen hasonló módon a minimális összköltségű útvonalat kell keresni. Természetesen egy adott lépésben nem kell minden állapotot végignézni, csak azokat, melyekbe lehetséges az előző lépésből eljutni. (A 0 átmeneti valószínűség miatt amúgy is kiesnének az érvénytelen utak.) A fenti algoritmus szerint a legjobb út valószínűsége határozható meg adott HMM-nél. Izoláltszavas felismerésnél ez elegendő, de ha magára az útvonalra explicite is kíváncsiak vagyunk, akkor ki kell egészíteni az eljárást. Szükségünk van egy TxN-es tömbre, ebbe max[ δ i t ( i) a ij ] az arg értékeket írjuk be keretenként, a megfelelő oszlopba. Erre azért van szükség, mert így az utolsó, nyerő állapotból a maximumokon visszafelé haladva le tudjuk követni, hogy hogyan is kerültünk oda ezt hívják backtracking -nek. Így némi memória és számítási idő ráfordításával a legjobb út valószínűsége mellett az útvonalat is meg tudjuk határozni. Vegyük észre, hogy a legvalószínűbb állapotsorozat meghatározása az alkalmazott rejtett Markov-modellek topológiájából fakadóan itt az időillesztést jelenti. 1.1.2.3.2 Nyelv modell integrálása Természetes igény, hogy a beszédet ne kelljen szünetekkel széttaglalni, hanem a felismerő folyamatosan egymás után kiejtett szavakat, akár teljes mondatokat is felismerjen. A kérdés, hogy hogyan lehet továbblépni a jelenlegi technológiáról, hogyan lehet integrálni valamilyen nyelv-modellt a felismerőbe, és arra miért van egyáltalán szükség. Az előző fejezetben harmadikként említett megjegyzésnek igen nagy jelentősége van. Azt mondja ki, hogy a teljes Viterbi-algoritmussal tetszőleges HMM-nél adott megfigyeléssorozatra a legvalószínűbb útvonal azaz állapotsorozat meghatározható. Ezt már az izoláltszavas felismerésnél is felhasználhattuk volna, hiszen, ha egybevonjuk az egyes szavak HMM-jét egyetlen nagy rejtett Markov-modell gráfba (3.10 ábra), akkor a legvalószínűbb útvonal a felismert szót is azonosítja. Ehhez csupán olyan speciális állapotokra van szükség (körrel jelölve), melyekkel egybe lehet fogni a szavakat. A speciális állapotok csak abban különböznek a rendes HMM-állapotoktól, hogy a rajtuk való áthaladás nem szól bele az útvonal valószínűségébe. q j j t+ 31-13 oldal
o1 ot ot e z e qi qj r? t í z? 3.10 ábra Izoláltszavas felismerés HMM-gráfban útvonalkereséssel Látható, hogy végül is a felismerési problémát visszavezettük egy gráfban való minimális költségű (maximális valószínűségű) útvonal meghatározására. Ha tehát kapcsoltszavas felismerést szeretnénk végezni, akkor a legkézenfekvőbb megoldás egyszerűen egymáshoz illeszteni a rész-gráfokat. Sőt, a kezdő- és végpont közé egy opcionális szünet-állapot közbeiktatásával (nincs berajzolva) rögtön folyamatos beszéd felismerésére alkalmas hálózatot kapunk. t i z e n e gy sz á z hz a t 3.11 ábra HMM-alapú kapcsoltszavas felismerés A fenti számfelismerős HMM-struktúra természetesen csak illusztráció. A valóságban sokkal bonyolultabb gráf szükséges még ilyen egyszerűnek tűnő feladathoz is. A lényeghez azonban eljutottunk: máris nyelvtani információt vittünk be a felismerési mintaillesztésbe a hálózati topológián keresztül. Mi több, kijelenthetjük, hogy a HMM-gráf szerkezetének kialakításával bármilyen kiejtési illetve nyelvtani információt reprezentálhatunk a beszédfelismerő rendszerben. A probléma csak az, hogy eddig semmilyen természetes nyelvet nem sikerült determinisztikus nyelvtannal leírni, márpedig csak olyat lehet a fenti típusú hálózattal megvalósítani. Még elképzelni sem könnyű, milyen hatalmas gráfra lenne szükség egy teljes nyelv leírásához. A méret mellet az is probléma, hogy nem tudjuk igazán szabályokba önteni a nyelvtant. Ezért ma inkább sztohasztikus nyelvmodelleket használnak, melyek statisztikai alapon szavak, szópárok, szó N-esek valószínűségi mutatóival igyekeznek nyelvtani tudást vinni a rendszerekbe, ezáltal javítani a felismerési eredményeken. (Pl.: milyen gyakran fordul elő a beszédfelismerés szó a bonyolult szó előtt.) Felvetődik a kérdés: miért van szükség nyelvmodellre, miért nem jó, ha egyszerűen párhuzamosan kapcsolva a szavakat, egy visszacsatolással lefedjük az összes szókombinációt? Még alapvetőbb kérdés: miért kell egyáltalán szómodelleket használni, miért nem kapcsoljuk össze minden lehetséges módon a 100-nál is kevesebb számú fonéma modelljét, ezáltal minden értelmes és értelmetlen emberi beszéd felismerését lehetővé téve? 31-14 oldal
A válasz mindkettőre lényegében ugyanaz: az értelmetlen illetve nyelvtanilag hibás változatok megengedésével olyan nagy lesz a felismerő által választható lehetőségek száma, hogy bennük a helyes megoldások szinte elvesznek, a rendszernek nagyon sok a lehetősége a hibázásra, ezért sokat fog hibázni akárcsak az ember. Fonéma alapú felismerést természetesen gyakorta használnak, erről részletesen az 5.1 fejezet szól, a nagyszótáras felismerők kivétel nélkül ilyen elvűek. Azonban ilyenkor is meg kell adni, hogy a fonémák hogyan kapcsolódhatnak egymáshoz, vagyis be kell korlátoznunk a felismerési lehetőségek számát azzal, hogy megadjuk milyen fonéma sorrendek jöhetnek egyáltalán szóba erről szól a kiejtés-modellezés. Pl. a 3.11-es ábrán tulajdonképpen a tíz, vagy ezer szavak kiejtési gráfjai szerepelnek. A nyelv-modellezés is hasonló. Az angolhoz hasonló, kötött szórendű nyelvekben drasztikusan lehet csökkenteni a felismerési hibát azzal, hogy megadjuk milyen szó sorrendek helyesek, vagyis a hibás szórendeket kizárjuk a felismerési lehetőségek közül. A gyakorlatban a statisztikai, vagy sztohasztikus nyelvmodellek váltak be, itt valószínűségeket rendelünk az egyes szósorrendekhez, a kisebb előfordulási gyakoriságú szórendeknek kisebb valószínűséget adunk, így a nagyobb gyakoriságú vélhetően helyes szórendek felismerési aránya nagyobb lesz. A legegyszerűbb az unigram modell, itt egyszerű párhuzamos lexikonban tároljuk az összes szómodellt, de a szavakhoz vezető utakat az általános előfordulási gyakoriságuknak megfelelő valószínűségekkel súlyozzuk. A modell-struktúrában nem kell továbblépni, hiszen a speciális csomópontoknál is értelmezhetők az állapot-átmeneti valószínűségek, amelyeket most nem egyformának veszünk, hanem a kívánt súlyt állítjuk be rajtuk. A bigram illetve trigram nyelv-modellekkel még hatékonyabbá tehető a felismerés. Ilyenkor 2 illetve 3 db. W elemszámú párhuzamos lexikont kell egymás mellé rakni, és a lexikonok közötti WxW számú összeköttetés mindegyikét a megfelelő szó-pár illetve szóhármas valószínűségével súlyozni. A módszer tovább extrapolálható, bár a gyakorlatban csak ezeket használják, általánosságban n-gram nyelvmodell néven szoktak hivatkozni rá. Sajnálatos módon a magyar nyelvre nem vihető át közvetlenül ez a fajta nyelvmodellezés. Az csak a kisebbik probléma, hogy a nyelvünkben a szórendre nem igazán jellemző a kötöttség. A fő gond az, hogy a magyar nyelv agglutináló-flektáló, vagyis a szóalak nagyon változékony a ragozás, toldalékolás miatt. Így nem lehet vagy nagyon nehéz statisztikát készíteni arról, hogy az egyes szavak milyen sorrendben követik egymást. A probléma gyökere az, hogy a nyelvünk építőkövei nem a szavak (mint az angolban), hanem a morfémák. Így a magyar nyelvi modellezés ma is kutatások tárgya, egyelőre a sztohasztikus morfológiai elemzés tűnik ígéretes módszernek. 1.1.2.3.3 Optimalizálási eljárások Az előzőekből kitűnik, hogy egy használható diktálórendszerben, ami nyelvi modellezéssel is támogatva van, igen nagy méretű HMM-gráfban kell az útvonalkeresést elvégezni. Vegyünk W= 20.000 szavas szótárméretet, szavanként 20 modellállapottal számolva, trigram nyelvmodell esetén 3 x 20.000 x 20 = 1.2 millió a HMM állapotok száma, és a linkek száma több mint WxWx2 = 800 millió. E cseppet sem elméleti problémának nem lehet a nyers erő módszerével nekimenni. Az, hogy ilyen adatbázisokat kezelő beszédfelismerő programok személyi számítógépeken futnak, az optimalizálási technikák magas szintű alkalmazásának köszönhető. Mivel ezen technikák a szoftverek használhatóságát (eladhatóságát) nagymértékben befolyásolják, a gyártók nem nagyon publikálják őket. Tanulmányunknak sem célja e szoftvertechnológiai kérdésekbe belemenni, a továbbiakban ezért csak egyetlen optimalizációs eljárást ismertetünk, mely viszont széles körben elterjedt egyszerűsége és hatékonysága folytán. Az angol nyelvű irodalomban beam-search -nek nevezett módszer az útvonalkeresési algoritmus erőforrásigényének behatárolására, csökkentésére szolgál. A nagyméretű HMMgráfokban történő mintaillesztést ma általában a Token-Passing algoritmus segítségével valósítják meg. Tulajdonképpen a Viterbi-algoritmus egy olyan interpretációjáról van szó, melyben az útvonalkeresést a gráfba helyezett tokenek terjedésével szemléltetik. Minden 31-15 oldal
kezdőállapotba berakunk egy tokent, majd ütemenként (minden egyes tulajdonságvektor beérkezésekor) tovább terjesztjük őket a Viterbi-indukciós képletnek megfelelően. A tokenben el van tárolva az útvonal, amin végighaladt, valamint az útvonal valószínűsége (és még néhány egyéb plusz információ). A tokenek szétágazásnál sokszorozódnak, csomópontnál pedig rekombinálódnak, azaz a legjobb jelölt halad tovább. Néhány lépés után, ahogy a hálózat a nagyszámú szóra szétágazik a tokenek száma igen gyorsan megnőhet, és felismerési folyamat könnyen túlterhelheti a számítógépet. Hogy a mintaillesztési eljárás kézben tartható legyen, a beam-search nél a rossz tokeneket egyszerűen eldobják. Hogy melyik token minősül rossznak, annak eldöntésére több lehetőség van. Lehet például a valószínűségek szerint sorba rendezni őket és létszámkorlátot szabni, vagy az adott valószínűségi szint alatti tokeneket eldobni. Mindenesetre, a tokenek számát maximálni illetve csökkenteni lehet anélkül, hogy a felismerési hiba észrevehetően megnőne. Tehát a keresés a kezdeti minták alapján valószínűbb jelöltekre összpontosul, így erőforrásokat takarítunk meg. Ha belegondolunk, emberi beszédfelismerésnél is valami hasonló történik; miután egy szónak az elejét meghallottuk, már nem foglalkozunk azokkal a szavakkal, amelyek nagyon másképpen kezdődnek. Annyi még ide kívánkozik, hogy amennyiben nem alkalmazunk nyelvmodellt, egyszerű párhuzamos szótár helyett annak tömörített változatát célszerű használni. Szófát (azaz az egy szinten lévő azonos állapotokat csak egyszer vesszük fel a gráfba) építve az állapotok számát jelentősen csökkenteni lehet, ezzel is redukálva a mintaillesztés erőforrásigényét és gyorsítva a keresést. 1.1.2.4 Mesterséges neurális hálózatok Néhány évvel ezelőtt a mesterséges neurális hálózatok beszédfelismerési célokra való felhasználása még erősen kísérleti stádiumban volt. Ismereteink szerint termékszintű ANNalapú (Artificial Neural Network) felismerő szoftverek ma sincsenek piacon, ám mára több kutatócsoportnak is sikerült jobb eredményeket elérni ANN-es ill. kombinált HMM-ANN módszerrel, mint a hagyományos HMM technikákkal. Mivel további fejlődés várható ezen a téren, nem hagyhatjuk ki a tanulmányból ezt a fajta megközelítést, tekintettel arra is, hogy a jövő beszédfelismerőiben is valószínűleg felhasználásra kerül. Elsőként tisztáznunk kell, hogy a mesterséges neurális hálózatok nem a biológiaiak leutánzásai, hanem a nyilvánvaló analógiák ellenére - sokkal inkább matematikai számítástechnikai fogalmak. Az elméleti kutatások bebizonyították, hogy a többrétegű neuronhálók univerzális függvény-approximátorok, ennek következtében általános osztályozási feladatokra jól alkalmazhatók. Természetesen adódik, hogy tulajdonságvektor(- sorozatok) osztályozására is használhatók, megfelelően betanítva felismerik az adott hangrészletet. A következőkben ismertetjük az ANN-ek felépítését, működési elvét, majd vázoljuk a beszédfelismerési alkalmazási lehetőségeket. 1.1.2.4.1 A neurális hálózatok felépítése és működése A neurális hálók főbb jellegzetességei: sok hasonló, egyszerű processzáló elem alkalmazása masszív párhuzamos működés a tudás elosztva van tárolva az egyes csomópontok (neuronok) közötti összeköttetéseken keresztül. Az alapegység a mesterséges neuron, melyekből a hálózat összeáll. A leggyakrabban használt típus, a perceptron elvi rajza az alábbi ábrán látható: 31-16 oldal
x 0=1 w0 x 1 x 2 w1 w 2 Σ s F(.) y N s = w x i =0 y = F (s). i i, xn w N 3.12 ábra A perceptron (mesterséges neuron) elvi rajza Látható, hogy egy több bemenetű, egy kimenetű egységről van szó. Először a bemenetek súlyozott összege kerül előállításra, majd ezt nemlineárisan transzformáljuk az F() telítődéses, ugrás vagy monoton növekvő függvénnyel. A perceptron önmagában kétosztályos lineáris szeparációra képes, vagyis a bemeneti súlyok megfelelő megválasztásával elérhető, hogy ha a bemenő adat az egyik (lineárisan szeparálható) osztályba tartozik, akkor a kimenetén 1-et adjon, ha a másikba, akkor 0-t. A súlyok beállítását végző tanító algoritmusra itt nem térhetünk ki, a lényeg, hogy ellenőrzött tanításról van szó, vagyis bemeneti kimeneti adatpárok segítségével tanul a neuron. Történetileg először egyedi neuronokat perceptronokat használtak, majd hamar felmerült a többosztályos nemlineáris szeparálás szükségessége. A megoldást a perceptronok összekapcsolása jelentette. Alapesetben három rétegű előrecsatolt hálókat alkalmaznak (3.13 ábra), (Multi Layer Perceptron MLP), ahol valójában két aktív neuroncsoport van, a bemeneti réteg csak a minták tárolására szolgál. Rejtett réteg Bemeneti réteg Kimeneti réteg súlyok 3.13 ábra Előrecsatolt háromrétegű MLP hálózat Az MLP hálózatok elméletileg képesek tetszőleges nemlineáris leképzés megvalósítására, tehát általános (nemlineáris) osztályozási feladatokra is használhatók. A tanítási elvük hasonló az egyszerű perceptronéhoz, bemeneti kimeneti adatpárokat kell biztosítani a tanító algoritmusnak, ahol a bemenetet egy I dimenziós vektor (minta) szolgáltatja, a kimenetet pedig egy O dimenziós, melyben egyetlen 1-es van (az indexe jelzi, hogy melyik osztályba tartozik a minta), a többi 0. Természetszerűleg ahány kimeneti neuron van, annyi osztályba sorolhatjuk a bemeneti mintákat. A rejtett réteg(ek) száma illetve mérete szabja meg, hogy mennyire pontosan tud a háló approximálni. Végső soron itt is a csomópontok közötti súlyok adják a hálózat memóriáját, a tanítás során ezeket kell beállítani. A neurális hálózatok alkalmazásának a legnagyobb nehézsége itt van, ugyanis a súlymódosító tanítási algoritmusok igen számításigényesek. A neurális hálózatoknak és tanítási módoknak igen sok fajtája van, melyek különféle feladatokhoz lettek optimalizálva. Ezek részletezésébe nem mélyedünk el, a fenti MLP-háló a legáltalánosabban használható ellenőrzött tanítású struktúra. (Léteznek nem ellenőrzött tanítású neurális hálózatok is, azonban ezeket nem célszerű mintaillesztési feladatokra használni.) 31-17 oldal
1.1.2.4.2 Mesterséges neurális hálózatok beszédfelismerési alkalmazásai Mint a bevezetőben is utaltunk rá, többrétegű perceptronhálóval könnyen megvalósíthatunk beszédminta osztályozót. Ehhez a bemeneti neuronok számát a tulajdonságvektor méretével egyezőre kell választani. A kimeneti egységekből nyilván annyi szükséges, ahány hangosztályt szeretnénk megkülönböztetni. A felismerés során minden ütemben a soron következő tulajdonságvektort adjuk a háló bemenetére, a kimeneteken ekkor egy (0 és 1 közötti) hasonlósági mérőszám jelenik meg, mely megfelelő betanítás esetén azt mutatja meg, hogy az adott beszédkeret mennyire hasonlít az előzőleg, adott kimeneten tanított mintákra. Vagyis az adott hang-osztályba tartozás mértékét (valószínűségét) mutatja minden kimeneti neuron. Látható, hogy a minta-felismerést (osztályozást) megoldottuk, de az időillesztés elmaradt. Tehát valódi mintaillesztéshez mely mindkettőt magában tartalmazza ki kell egészíteni az eljárást. Voltaképpen egy időillesztést részben magában hordozó megközelítés, hogy a neurális hálózat egy rövid hangrészletet egyben ismerjen fel, és ne tulajdonságvektoronként kelljen arra következtetni. Ilyenkor több, egymás után következő vektort kell figyelni egyszerre. Fix ablakméret nem használható, hiszen nem ismerjük a hangrészlet hosszát. A legjobban TDNN (Time Delay Neural Network) illetve visszacsatolt (recurrent) hálózatok váltak be, melyekben beépített késleltetések ill. visszacsatolások gondoskodnak a néhány ütemmel korábbi minták figyelembevételéről. A probléma ezekkel a módszerekkel az, hogy csak elég rövid idejű beszédrészletek ismerhetők fel velük hatékonyan, hosszabb szavak, stb. felismeréséhez komoly utófeldolgozásra van szükség. A legjobb eredményeket a hibrid módszerekkel sikerült elérni, ahol az időillesztés külön algoritmus (HMM vagy DTW) segítségével történik. A legkézenfekvőbb, hogy a már bemutatott MLP-vel történő beszédkeret-osztályozás kimenetét a HMM megfigyelési valószínűségek számítására használjuk fel. Tulajdonképpen arról van szó, hogy a Gauss függvények keveréke helyett a neurális hálózat valósítja meg az állapotfüggő megfigyelési valószínűségeloszlás-függvényt. A módszernek több továbbfejlesztése lehetséges, mint például több tulajdonságvektor figyelembevétele egy valószínűség előállításához, a priori ismeretek integrálása stb. Hasonlóan, a mesterséges neuronhálók a DTW lokális távolság számítására is használhatók. Ezeken kívül is rengeteg lehetőség van a különböző módszerek összekombinálására, melyek az egyes megközelítések előnyeit egybekovácsolva kínálnak adott peremfeltételek mellett hatékony megoldásokat. 31-18 oldal
1.1.3 Utófeldolgozás Két alapvető módszert lehet elkülöníteni a legvalószínűbb mondat felismerésére, mely megfelel mind az akusztikus, mind a nyelvi feltételeknek. Ezek a moduláris és az integrált technológiák. Az integrált technológia esetén az összes tudás egyidejű figyelembevételével történik a felismerés. Ebben az esetben az akusztikus, nyelvi, szintaktikai és szemantikai információk összességét egyetlen véges automatává konvertáljuk mely tartalmazza az akusztikus modelleket is. A beszédfelismerés során így a jellemző vektorok sorozatát összevetjük a feltételeknek megfelelő összes sorozattal, és kiválasztjuk a legmegfelelőbbet. Egy sor probléma vetődik fel azonban az integrált technológiával. Először is nem minden tudást lehet tökéletesen leírni és integrálni, pl. prozódia és egyéb hosszú idejű feltételek nehezen integrálhatók egy véges automatába. Másrészt a nagyszótáras feladatok esetén keletkező HMM-hálózat általában kezelhetetlenül nagy. A moduláris felépítésű rendszerben a mintaillesztő, a szó, a mondat és a feladat szintű elemzők mind különálló egységet alkotnak. Ezek önmagukban is elkészíthető, tesztelhető egységek, melyek kisebb komplexitásúak, mintha az egészet integrálnánk. Így a párhuzamos fejlesztés könnyebben megoldható. Spontán beszélt nyelvet kezelő felismerők valamint a dialógus rendszerek általában ilyen felépítéssel működnek. Hátránya ennek a megoldásnak, hogy minden egyes szinten döntést kell hozni a következő szintek feltételeinek ismerete nélkül. Természetesen több hipotézis tovább adása csökkenti a végső hiba lehetőségét, de mégis nagyobb a hibalehetőség, mint az integrált rendszerek esetén. Moduláris feldolgozás esetén a mintaillesztő utáni egységeket összefoglaló néven utófeldolgozó egységeknek nevezzük. A határ meghúzása, hogy meddig modellezhető hatékonyan véges automatával a szabályrendszer, és így integrálható az akusztikus modellekkel, feladat függő. A feltételek között szerepelnek nyelvtani, nyelvi szabályok, és kiegészítésként feladat specifikus szabályok: parancsmódú rendszerekben a vezérelt gép állapotától, míg dialógus rendszereknél a párbeszéd állapotától függ az elfogadó halmaz. Dialógus, illetve parancsmódú rendszerek két osztályba sorolhatóak a nyelvtanok kötöttsége szerint. Egyszerűbb esetben erősen kötött a nyelvtan, ami azt jelenti, hogy a felhasználó válaszának pontosan illeszkedni kell a rendszer elvárásaihoz, mintha egy űrlapot töltenénk ki. Egy komplexebb megoldás, ha spontán beszédet is megért a rendszer, azaz spontán beszédben megtalál kulcsszavakat, kiválasztja a kért információt. A következőkben először a kötött nyelvi modellről, majd a kulcsszó keresésről lesz szó. 1.1.3.1 Nyelv modellezése A nyelv modellezésének kérdését már tárgyaltuk a mintaillesztésről szóló fejezetben is, ahol integrálva volt az akusztikus modellekkel. Mint a bevezetőben említettük, több oka is lehet annak, hogy a nyelvi modell önálló egységként szerepel: egyik ok, ha nem könnyen írható le véges automatával, másik, ha ez túl nagy számítási komplexitást eredményezne. A tág értelemben vett nyelvmodellezés tartalmazza a feldolgozó rendszer (dialógus rendszer, vagy vezérelt gép) állapotától függő elfogadható mondatokat, és ezek összes helyes variációját, akár független egységként is. Jól körülhatárolt esetekben környezetfüggetlen nyelvtanokkal megadható a nyelvi modell, ami hatékony feldolgozást tesz lehetővé. Általános esetben, illetve komplex feladatoknál, mint pl. egy diktáló rendszer természetes nyelvi feldolgozó egysége, a mintaillesztésnél említett n-gram modelleket alkalmazzák, azonban a kutatások előrehaladtával ezeket a feladatokat is igyekeznek formalizálni a nagyobb felismerési biztonság érdekében. 1.1.3.1.1 Környezetfüggetlen nyelvtanok alkalmazása A számítógépek világában a nyelvtanok ma már alapkőnek tekinthetőek. A UNIX operációs rendszer alapvető részét képzi egy általános nyelvtani elemző algoritmus. A 31-19 oldal
nyelvtanok elterjedését a fordítóprogramok indikálták. A processzornak is természetesen van egy saját egyszerű nyelve, azaz a processzor csak a szintaxisának megfelelő memóriatartalmat hajlandó feldolgozni. A programozók munkájuk hatékonyabbá tétele érdekében hamar elkészítették a magas szintű programozási nyelveket. A programozási nyelveknek vannak kulcsszavai (terminálisok) és ezek sorrendjét leíró szabályok. A szabályok megfogalmazását segítik a kulcsszavak sorrendiségének egy halmazát összefoglaló nemterminálisok. A magas szintű programnyelven megírt programot a fordítóprogram első lépésben szintaktikailag ellenőrzi. A fordító beolvassa a kulcsszavak azaz a terminálisok sorozatát, és leellenőrzi, hogy a nemterminálisok segítségével megfogalmazott szabályok által megadott sorrendben érkeznek-e a terminálisok. A szintaktikai ellenőrzés sikeres, hogy ha a terminálisok elfogytak, és eközben nem volt hiba. Ezt a jellegű feladatot általánosan ellenőrzésnek hívhatjuk, azaz ellenőrizzük, hogy a leírt mondat eleme-e a nyelvnek. A fordítás második lépése a transzformáció, amikor a magas szintű nyelv elemeinek sorozatát át akarjuk alakítani a processzor kulcsszavainak sorozatára. Ekkor jutnak a nemterminálisok fontos szerephez. A nemterminálisok tekinthetők részszabályoknak. Például az if-else utasítást elfogadó nemterminális. Amennyiben az elemzett kódot elfogad egy nemterminális, a nemterminálishoz megadott processzor kód generálódik. A kód természetesen nem teljes, hiszen az if-else utasítás szabálya további nemterminálisok segítségével van megfogalmazva (pl. a logikai feltételt szintaktikáját megadó nemterminális.). Ezen nemterminálisok saját fordítása segítségével rekurzívan fordul végül is az utasítás a végleges processzor nyelvre. A nyelvtanok ilyen felhasználása, azaz a nemterminálisokhoz vagy szabályokhoz rendelt extra információ alkalmas az elemzett mondat transzformálására. A transzformálás pedig természetesen lehet a mondat által kódolt információ dekódolása, a mondat szemantikus elemzése, azaz a mondat megértése is. A nyelvtanok megértését segítheti a következő példa. A példa olyan szabályrendszert valósít meg, amely elfogadja a számokat 0-99. A végső szabály a <MONDAT> nemterminális, amit két szabály ad meg: érvényes terminális sorozat a számok 0-9 és a számok 10-99. A terminálisokat a <SZÁMJEGYEK 1-9> és <SZÁMJEGYEK 0-9> nemterminálisok igyekeznek absztraktan kezelni. <SZÁMJEGYEK 1-9> ::= 1 ; <SZÁMJEGYEK 1-9> ::= 2 ; <SZÁMJEGYEK 1-9> ::= 9 ; <SZÁMJEGYEK 0-9> ::= 0 ; <SZÁMJEGYEK 0-9> ::= <SZÁMJEGYEK 1-9>; <MONDAT> ::= <SZÁMJEGYEK 1-9> <SZÁMJEGYEK 0-9>; <MONDAT> ::= <SZÁMJEGYEK 0-9>; Ennyi számot természetesen felsorolhattunk volna, és evvel a látszólag bonyolult nyelvtanokra sem lenne szükség, de a példa is érzékeltetheti a nyelvtanok absztrakciós képességét. (Amennyiben rekurzív szabályt is alkalmaztunk volna, az összes mondat felsorolásának esélye is megszűnt volna.) A nyelvtanok osztályozhatók a szabályok struktúrája alapján. Az egyik osztály a környezetfüggetlen nyelvtanok osztálya. (A környezetfüggetlen nyelvtanok részhalmazát képzik a reguláris nyelvtanok. A reguláris nyelvtanok ezért érdekesek, mert a szabályok egyértelműen meghatároznak egy determinisztikus véges automatát.) A környezetfüggetlenség arra utal, hogy a szabályokban a terminális és nemterminális szimbólumok tetszőlegesen követhetik egymást. A nyelvtanok alkalmazássásához természetesen szükség van egy szoftvereszközre, ami fogadja az input terminális sorozatot, és leellenőrzi hogy megfelel-e a szabályoknak. Ez az eszköz képes egy speciális szintaktikával elkészített szabályrendszert felolvasni, és ezek alapján az input mondatokat kiértékelni. 31-20 oldal