Beszédfelismerő szoftver adaptálása C# programozási nyelvre Készítette: Sztahó Dávid
A szoftver leírása A szoftver által megvalósított funkciók blokkvázlatát az 1. ábra mutatja. A szoftver valós idejű beszédfelismerést végez, amely Rejtett Markov Modelleken alapul. A modellek tanításához szükség van egy hang, valamint szövegadatbázisra (nem része a jelenlegi feladatnak). Az akusztikai előfeldolgozás során a bemenő hangból a feladathoz szükséges paraméterek állnak elő, majd a felismerő motor ezeket felhasználva a legvalószínűbb szósorozatot állítja elő. A feladathoz tartozó akusztikai előfeldolgozást és valós idejű beszédfelismerő motor leírását tartalmazza a következő két fejezet.
1. ábra. A középszótáras folyamatos beszédfelismerő rendszer általános blokksémája
Akusztikai előfeldolgozási eljárás optimalizálása Akusztikai előfeldolgozási eljárásra a beszédfelismerés immár több évtizedes fejlődése alatt számos eljárás született, melyek közül ma az alábbiak a legismertebbek [Bechetti, C., 1999]: szűrősoros elemzés (BFFP), lineáris predikció analízis (LP), perceptuális lineáris predikció (PLP), kepsztrális együtthatók vizsgálata (MFCC), spektrális torzításon alapuló rendszerek (SDM).
A mai legsikeresebb felismerők előfeldolgozási rendszere mell-kepsztrum (MFCC) vizsgálatot végez: valamilyen hallásmodell alapján (Mel, Bark) [Zwicker, E., 1980, Vicsi, K., 1990] kiszámított szűrők sorozata szolgáltatja az alapjelet (szűrősoros elemzés): - Bark szűrő: 10 lg L ( x ) = 15.8 + 7.5( x + 0.5) − 17.5(1 + (0.5 x ) 2 ) ,
pl.:
- Mel-szűrő: Mel(f) = 2595 log10 1 +
f háromszögszűrő, 700
(1)
(2)
Az információ jobb kinyeréséhez kepsztrális együtthatókat képzünk (MFCC):
ci =
2 N
N
∑m j =1
j
πi cos ( j − 0.5) N
(3)
A kepsztrális együtthatók információtartalma igen magas, azonban az emberi szem számára nem hordoz jól felismerhető jegyeket. Ennek ellenére (vagy éppen ezért) az MFCC nagy népszerűségnek örvend, az egyik legtöbbet alkalmazott módszer. Ennek okai a következők lehetnek: Kizárólag a Melilletve Bark szűrősorokkal végzett akusztikai előfeldolgozáskor, a szűrősorok kimenetei ugyan hasonlóak a különböző ejtésekben, de egymáshoz viszonyítva el vannak tolódva az egyedek hangjai, a szűrősorral betanított Markov-modellekel a betanítástól teljesen eltérő jeleket is lehet produkálni. Ebből kifolyólag a szűrősorral képzett eredmény vizuálisan ugyan jól meghatározott képet ad (emelkedés, süllyedés, maximumok), de mindenképpen ’elkenődik’ az információ. A (3.) képletben közölt módszer csökkenti az elkenés mértékét, mivel különböző frekvenciájú szinuszos rezgések mentén ’felcsavarja’ az adatokat. Az információ jobb megőrzése azért válik így lehetségessé, mert ebben a reprezentációban szerepel a vektoradatok egymás közti viszonya. A szoftverben alkalmazott akusztikai előfeldolgozás olyan akusztikai elemzést alkalmaz, melyben az eredeti szűrősoros adatok frekvenciatérbeli és időbeli deriváltjai kapnak szerepet. Ez az eljárás nem
teljesen idegen a szakirodalomban, de ma a gyakorlatban nem használatos. Az frekvenciaderiváláskor keletkező adatkiemelődés bemutatását láthatjuk az 2. ábrán. A felső szürke kitöltéssel stilizált eloszlás az adatok Bark szűrősoron való áteresztésekor keletkezett. Az eloszlást létrehozó alapjelek egy részét zöld színnel kiemeltem. A képen jól látható, hogy a modell a piros függvényhez tartozó alapjeleket is nagyszerűen képes generálni, azaz ilyen jeleket is felismerni vél majd, pedig a betanító minták ettől szignifikánsan különböztek. Az alsó ábrán az eddigi Bark szűrősor frekvenciabeli deriváltjaiból képzett modell alapjel-eloszlása látható. Megfigyelhető, hogy mindenképpen szükséges egy minimális egyezés a derivált kilengésénél. Ezáltal a csúcs nem tűnt el, mint az előbbi esetben, és a modell csak olyan eseteket ismer fel, amikor a vizsgált kritikus helyen valóban van energiamaximum. Továbbá, míg az igen népszerű MFCC számításigénye N2-el arányos, az új módszeré csak N-el. Találati százalékos eredmények 20 kHz mintavételezési frekvencia mellett 3 és 5 állapotú, fonéma alapú diszkrét Markov-modellekkel az 1. táblázatban találhatók.
2. ábra: Bark szűrősor és Bark szűrősor deriváltjainak eloszlása
1. Táblázat. Felismerési találatok alakulása a frekvenciatérbeli és időbeli deriválás esetén. Találat
Bemeneti alapjelek
Állapotok száma
44.36%
23 Bark szűrő
3 állapot
46.1%
23 Bark szűrő
5 állapot
46.15%
23 Bark szűrő + 23 Bark időbeni derivált
3 állapot
64.38%
23 Bark frekvenciatérbeli derivált
3 állapot
70.16%
23 Bark frekvenciatérbeli derivált + 23 időbeni derivált
3 állapot
72.32%
23 Bark frekvenciatérbeli derivált + 23 időbeni derivált
5 állapot
Minden betanítás a következő közös paraméterekkel futott: 32 kvantálási lépcsős diszkrét valószínűségi tér minden szűrőhöz, modellek közötti állapotátmenetek kiemelése: az átmenetek 3. hatványra emelése, 4*(⅓ ; ⅓ ; ⅓) Blur. A Betanítás Babel magyar nyelvű beszédadatbázissal történt [Vicsi, K., 1998]. Legjobb felismerési eredményt a felismerő a Bark frekvenciatérbeli derivált és 23 időbeni derivált akusztikai paraméterek esetén produkálta.
Modellépítési
vizsgálatok,
kvázi-folytonos
rejtett
Markov-modellek
(QCHMM) A 80-as évek végére nyilvánvalóvá vált, hogy diszkrét (vektorkvantált) Markov-modellekkel a felismerés nem javítható tovább, ezért ki kellett dolgozni a folyamatos valószínűségi mezőkre értelmezett modelleket, azok tanítási módszerét. Az alapelv ugyanaz: a modell paramétereire optimális értékeket találni valamilyen iterációs algoritmus segítségével. A módszer hátránya, hogy - nagybonyolultságú algoritmusok jelennek meg az eddigi négy alapműveletet igénylő algoritmusokkal szemben, - új probléma merül fel: a gaussi változók szórásainak figyelése és esetleges módosítása, - a robusztus matematikai módszer sok időbe kerül – lassú programot eredményez. Nyilvánvalóan ez nem probléma amennyiben lehetőség van nagyteljesítményű vektorszámítógépek használatára, de ennek hiányában kifejlesztettek egy kvázi-folytonos rejtett Markov-modelleket
(QCHMM) használó eljárást, mely a fenti két vetélytárs jó tulajdonságait igyekszik ötvözni, nevezetesen a nagyobb pontosságot a kisebb futási idővel. Ezen problémák megoldásához a kvázi-folytonosság a kulcs, mely a következőt jelenti: a meglévő N felbontású diszkrét mezővel nem a tanítóanyag mintáinak eloszlását kell maximális hűséggel visszaadni, hanem azok alapján egy becslést adni a folytonos valószínűségi mezőre. Ehhez egy simítási algoritmusra van szükség, amelyet egyszer vagy többször végigfuttatva az eddig betanított modellen a modell tanítóanyagra való adaptálódását lehet csökkenteni (megszüntetni). A használt algoritmus egy paraméterezhető simítófüggvény (továbbiakban blur), melynek a következőket lehet megszabni: - az élsimító mátrix (1 dimenzió miatt jelen esetben csak vektor) méretét, - a mátrix elemeinek értékét, ahol minden sorban összértékben 1-nek kell lennie (a teljes valószínűségi mező mindig 100%) Megoldandó problémák: - kvantálási lépcsők számának optimális megválasztása, - megfelelő súlyozású simítófüggvény megválasztása, - a tartomány minél jobb eseménytérbeli kihasználtsága. Az optimális kvantálási együttható, valamint az ehhez tartozó simítófüggvény mérési úton számítódik ki. Többféle adatbázisrész felismerési aránya nagyszámú véletlenszerűen választott paraméterezésű felismerő kimenetén össze van vetve, majd a statisztikailag így megismert kétváltozós probléma maximumkereséssel oldódik meg. Végeredményben tehát a laboratóriumban kifejlesztett fonémaszintű felismerő, a továbbiakban MKBF, 16 kHz mintavételezésű, 17 Bark frekvenciatérbeli derivált + 17 időbeni derivált + 17 időbeni második derivált + energia bemeneti jelvektor mellett, 4-5 állapotú kvázi-folytonos, 24 lépcsős, rejtett Markov-modellekkel (QCHMM) fonéma, illetve trifon alappal dolgozik.
A szoftver adaptálása C# programozási nyelvre A fent bemutatott szoftver Delphi 7.0 programozási nyelven készült Borland Delphi környezetben. Mivel ez a környezet nem rendelkezik a mai modern 64 bites operációs rendszerekre készült változattal (csupán 32 bites változatban érhető el), valamint a programozási környezet modernizálása és újrafelhasználhatósága érdekében szükséges volt a programot adaptálni egy, ma elterjedt
programozási nyelvre. Ehhez a C#-ot választottam. Annak ellenére, hogy ez a nyelv Microsoft függő, és nem platform független, könnyen kezelhető. Valamint a C++ és Java nyelvekkel való hasonlósága lehetővé teszi, hogy bármikor könnyen átírható az előzőek valamelyikébe, amelyek már bármely operációs rendszerre lefordíthatóak. A feladat több részből állt, mind az akusztikai előfeldolgozást, mind pedig a futtató keretprogramot meg kellett valósítani az új környezetben. A Rejtett Markov Modell felismerő motor C#-os átirata rendelkezésre állt, ám annak kódján is módosítani kellett, hogy az új környezetben megfelelően működjön. A megvalósított program modulok: −
ERApplication. A felismerő motort futtató keretprogram. Elvégzi a hang felvételét a beállított hangbemeneti eszközről. A felvett hanggal meghívja a valós-idejű felismerő motort, majd a kapott eredményt kiírja. A hangfelvételt a Microsoft DirectX DirectSound könyvtárcsomgjával valósítja meg.
−
ERPreprocess. Az akusztikai előfeldolgozást valósítja meg az előző részben lévő leírásnak megfelelően.
−
SIG2TXT. A Rejtett Markov Modelleket megvalósító programrész. Elvégzi a folyamatos felismerést a már betanított modellek alapján.
−
TextGrid2Kez. A felismerőben használt Markov Modellek betanítását végző szoftverhez (külső program, amely a kódhoz nincs mellékelve) szükséges adatbázis címkefájlokat létrehozó modul.
A program futtatása A programot a CD-n található bin/ERApplication.exe-vel lehet indítani. A „felismerés indítása” gombbal lehet a felismerést elindítani, majd ugyanezzel a gombbal lehet leállítani is. A kilépés a jobb felső sarokban található „X” gombbal történik.