Gyakorlat Szegmentálás és spektrogram vizsgálat. Hangutánzás. Forrás hullámforma kiszámítása. Formáns-szűrősor kiszámítás. Formáns-szűrősor alkalmazása forrás hullámformán Bevezetés A gyakorlat inverz szűrés feladatai során a hallgatóknak egy összetett feladatot kell elvégezniük, amely során a következő hangelemzési eljárásokat használják fel: LPC analízis, inverz szűrés, különböző alaphang kiszámítási eljárások, PSOLA algoritmus. Elméleti bevezető 1. LPC analízis A lineáris predikciós modellek széles körűen használtak a beszédfeldolgozást végző alkalmazásokban, mint például a mobiltelefonok alacsony bitsebességű beszédkódolóiban, beszédminőséget javító eljárásoknál és beszédfelismerésnél. A beszéd a tüdőbe belélegzett, valamint a rezgő mozgást végző hangszalagokon és a rezgő üregen (vocal tract) keresztül kilélegzett levegő által keletkezik. A tüdőből kifelé irányuló véletlen, zajszerű légáramlásokat a hangszalagok rezgése és a rezgő üreg spektrálisan átformálja és felerősíti. A hangszalagok és a rezgő üreg hatása egy korrelációs és periodikus jelleget ad a tüdőből kiáramló levegő véletlen változásaihoz. Az 1. ábra a beszédkeltés egy modelljét illusztrálja. A forrás a tüdőt modellezi, kibocsátva egy véletlenszerű gerjesztő jelet, amelyet először a hangszalagok alaphang-szűrő modellje, majd a rezgő üreg modellje módosít. A beszédben a korreláció fő forrása a rezgő üreg, amelyet egy lineáris prediktorral lehet modellezni. Ez a prediktor a jel m. időszeletének, s(m), amplitúdóját az előző P darab minta [x(m-1),, x(m-p)] lineáris kombinációjaként becsli meg a következőképpen: (1) Ahol az jel becsült értéke, az vektor pedig a P rangú prediktor együtthatói. A predikciós hiba, e(m), az aktuális x(m) minta és az becsült érték különbsége: (2)
Az e(m) predikciós hiba egy véletlenszerű gerjesztésként vagy az x(m) információtartalmaként is értelmezhető. A (2) egyenlet alapján a lineáris prediktor által generált jelet a következő módon lehet előállítani: (3) A 2. ábra egy beszédszintetizáló modellt mutat be a (3) egyenlet alapján. Alaphang periódus Véletlen-szerű forrás Gerjesztés Hangszalag (alaphang) modell P(z) Rezgő üreg modell H(z) Beszéd 1. ábra: A beszéd lineáris predikciós modellje u(m) e(m) x(m) G + ap a2 a1 x(m-p) z -1... x(m-2) z -1 x(m-1) z -1 2. ábra: Egy csak pólusokból álló, lineáris predikciós modell által generált jel illusztrációja A lineáris predikció (LP) tehát egy olyan matematikai módszer, amellyel egy jelenség adott időpontbeli állapotát meg lehet becsülni a jelenségre vonatkozó a priori adatok és az adott időpontot megelőző állapotok birtokában. Ezt a digitális beszédfeldolgozás mellett számos más tudományban is használják, pl. a rendszer identifikáció vagy a szabályozástechnika területein is. A lineáris predikció, túl az előrejelzésen, egy jelenség tömör, lényegkiemelő leírására is szolgálhat, és sokszor ezt a tulajdonságát aknázzák ki. Legyen adott egy beszédátviteli rendszer. Optimálisnak tekinthetjük a működését, ha az átviteli közeg terheltségét a lehetőségekhez képest redukáljuk, gyors átvitelt és mások által is gyors hozzáférést biztosítva ez által. A digitalizált beszéd egy számsorozat, ahol e számsorozat elemei, mint bináris szám n-esek kerülnek átvitelre. Az átviteli közeg foglaltságát, az arra kibocsátott elemek bináris ábrázolásához szükséges bitek
száma határozza meg. Megfelelően jó kódolás választásával tehát ami az eredeti jel mintáihoz jóval kisebb ábrázolási tartományú kódokat rendel a csatorna terheltsége optimalizálható. Az LP egy lehetséges jó kódolás, ha a jel mintái helyett a predikciós hibákat és együtthatókat visszük át. A digitális beszédjelet az analízis modell bemenetére engedve kapjuk a kibocsátandó hibasorozatot. A vételi oldal a szintézis modellel dekódolja ezt, és állítja vissza belőle az eredeti jelet. Az együtthatók átvitele csak látszólagos többletköltség, mert a beszédre alkalmazott LP hibája többnyire nagyon kicsi ahogy a tapasztalat alátámasztja ezt így az átvitelre kerülő hibák és együtthatók ábrázolásához szükséges bitek száma kisebb, mint a kódolatlan átvitel esetében. Az átvitel a gyakorlatban a rendelkezésre álló jel szegmentálásával kezdődik. Ennek során a jel mintáit, a LP szempontjából alkalmas módon, 4-500 ms-os határokkal, csoportosítjuk. Az együtthatókat szegmensenként, a hibákat pedig mintánként visszük át. Új szegmens beérkezésekor, az ahhoz tartozó együttható vektorral kell felparaméterezni az analízis és a szintézis modellt is. A beszédátviteli rendszerek (pl. mobil hírközlésben) többnyire valós idejűek, ezért nem mellékes, hogy mennyi idő szükséges a hibajel előállításához. Az együtthatóvektor kiszámításához szükséges egyenletrendszer (az LP alapegyenlete) megoldása mátrixinverzióhoz vezet, ami általában igen költséges művelet. Ez motiválta olyan eljárások kifejlesztését, amik a hibajel előállításához nem használják fel az együttható vektort, így az LP alapegyenletének megoldására, és a költséges mátrixinverzióra sincs szükségük. Ilyen algoritmust adott Itakura és Saito (PARCOR, parciális korreláció módszerével). Az ezeket az algoritmusokat megvalósító hálózatok az eddigiektől eltérőek, az együtthatókat, mint paramétereket nem igénylik. Az LP beszédfeldolgozásban történő alkalmazását pár általánosság felfedezése még inkább ösztönzi. Ezek: A predikció hibája nem nazális zöngés hangoknál igen kicsi, és csak a gégehullám maximumainál nő meg, szisztematikusan; zöngétlen réshangoknál kicsi és fehérzajszerű; a predikció fokszámának növelésével, egyéb hangoknál is kicsivé tehető. Ezen tények felismerésén alapuló rendszer nem a predikciós hibát viszi át, hanem az előforduló hangok egy lehetséges szűkebb leképezését: zöngés/zöngétlen döntés (egy bit) zöngés esetben a hang alapfrekvenciája (4-6 bit) a hang erőssége (2-4 bit) a predikciós együtthatók vektora (együtthatónként 5-8 bit) Ebben az esetben csak szegmensenkénti információtovábbításra van szükség, nem úgy, mint az előbbi esetben, és az adatvesztés is elkerülhetetlen, bár ez a beszéd érthetőségét nem rontja. Összességében elmondható, hogy az LP jól felhasználható eszköznek bizonyul a digitális beszédfeldolgozás területén. 2. Inverz szűrés Az inverz szűrés a hangszalagoknál mérhető forrás hanghullám közvetett mérésére szolgál. Ez az eljárás lehetővé teszi a kutató számára, hogy a hangrésnél mérhető áramlás jelét becsülje a végső beszédjel
segítségével. Feltételezhető, hogy az inverz szűrés a forrás-szűrő beszédkeltési modell, a vokális traktus hatásai és a sugárzási ellenállás hatásait kioltja. Az all-pole lineáris prediktor modell egy korrelálatlan gerjesztő jelet, u(m), egy korrelált x(m) jellé alakít. A frekvencia-tartományban az all-pole szűrő bemenetének és a kimenetének összefüggése a következő módon adható meg: (1) Ahol X(f), E(f), U(f) az x(m), e(m) és u(m) spektruma, G a bemeneti erősítési szorzó, és A(f) az inverz prediktor frekvencia válasza. Az inverz szűréshez a vokális traktust egy adott hosszúságú és összetételű akusztikus csőmodellel közelítjük. Ez ekvivalens a mintázott vokális traktus átviteli függvényével (H(z)), mint adott számú spektrális pólusok szuperpozíciója, amely a z-tartományban így írható le: (2) Ahol p jelöli a pólusok számát, zi pedig az i. pólust. A szájból a környező levegőbe áramló hangnyomás arányos az ajaknál mért levegőáramlás térfogatsebességének (lip volume velocity flow) időbeli változásával, amely egy +6 db/oktáv meredekségű felüláteresztő szűrővel közelíthető. Az inverz szűrés során a pólusok frekvenciáit és sávszélességeit a jel autoregresszív modelljével határozzuk meg. A módszert lineáris predikciónak is hívják, az előző részből pedig láttuk, hogy e szerint a becsült minta: (3) Ahol az ai együtthatók időinvariánsak, valamint rekurzívan számolhatóak. Az együtthatók értékei a legkisebb négyzetes becslés alapján közelíthetőek. Így a vokális traktus átviteli függvénye (4) A beszédjel minden alaphang periódusára egy 1/H(z) inverz szűrőt alkalmazunk, az eredményül kapott jelet pedig a forrásjel közelítésének nevezzük. 3. PSOLA A PSOLA jelentése Pitch Synchronous OverLap/Add. Ez egy tisztán időtartománybeli eljárás. Megvalósítása során egy alaphang meghatározó eljárással kiszámítjuk a jel periódusának hosszát. Ezután a jelet az alaphanggal szinkronban kivágjuk úgy, hogy egy ablakot illesztünk minden periódus közepére. A kapott hullámrészeket különböző sebességgel játsszuk le (a kívánt alaphangtól függően), így előállítva a transzponált jelet. A transzponációs faktortól függően ezek az ablakok többé-kevésbé átlapolódnak, és esetlegesen ki kell egészíteni őket a kimenő jel összerakásához. Akkor, amikor az eljárásnak egy egyperiódusú hullámot kell lejátszania, a legutóbbi periódust veszi az eredeti jelből. Fontos, hogy a
transzponálás során nem a mintavételi frekvencia változik meg, hanem a lejátszandó periódusok száma változik meg. Miért is maradnak a formánsok változatlanok? A zönge egy pulzussorozat, amely egy komplex, ám összességében aluláteresztő szűrőn halad keresztül. A pulzussorozatnak lapos spektrális burkolója van. Ha egy ablakot illesztünk minden pulzus közepére és ezeket a hullámrészeket az új alaphangnak megfelelő gyakorisággal illesztjük egymás után, egy újabb pulzussorozatot kapunk, amely ugyanazzal a lapos spektrális burkolóval fog rendelkezni. Így ez a transzponálási eljárás nem befolyásolta a pulzussorozat spektrális burkolóját. 3. ábra: A PSOLA eljárás Gyakorlat A. Szegmentálás és spektrogram vizsgálat B. 1. Rögzítsen egy mondatból álló felvételt: Kedves, élénk természete, remek idegrendszere miatt a nem ölebre vágyó városlakók egyik ideális barátja. 2. Szegmentálja a felvételt! Jelölje be a beszédhangok határait. Rögzítse az annotálásban az adott beszédhang osztályát (magánhangzó, réshang, zárfelpattanó, ), gerjesztését (zöngés, zöngétlen, ), magánhangzó esetén az első két formánsértéket, mássalhangzó esetén pedig a jellemző frekvenciatartományt! Szavak összerakása (Cooledit) 1. készítsen felvételt. amely elegendően hosszú szöveganyagot tartalmaz 2. szavak összevágása I. önállóan készítsen egy új szót a felvett hanganyagból egyes hangok összevagdosásával
II. az előzőleg elkészített szót csinálja meg újra, figyelve arra, hogy csak a megfelelő szókapcsolatokból kivágott hangokat használja (ha nincs elég szókapcsolatban szereplő hang, akkor vegyen fel új anyagot, amelyben ez benne van) 3. az elkészített szavakat hallgassa meg egy másik csoport és próbálja kitalálni 4. jelölje be a hangok határait a 4. feladathoz hasonlóan és vizsgálja meg milyen eltéréseket tapasztal 5. mentse el az összerakott szavakat és a spektrumról és hullámformáról készített képeiket csatolja a jegyzőkönyvhöz C. Szűrési feladatok (Cooledit) 1. készítsen hanganyagot, amely tartalmazzon egy bonyolult mondatot 2. szűrje folyamatosan a felvételt egyre kisebb határfrekvenciával egészen addig, amíg a szöveg érthetővé válik 3. jegyezze le, hogy hol van ez a frekvencia és mitől vált érthetővé a beszéd D. Inzerv szűrés 1. Rögzítsen a két kicserélendő személytől 1-1 (azonos) szót! Bármilyen hangrögzítő program használható. Miután a felvétel elkészült, a pontos szóhatároknál vágja meg (rövidítse le a felvételt, hogy csak a konkrét szót tartalmazza)! 2. Módosítsa időben a két felvételt úgy, hogy az időtartamuk azonos legyen! Számítsa ki felvételek időtartamait a Praat QueryTime domainget total duration funkciójával! Számolja ki az időtartamok megfelelő arányát, attól függően, hogy melyik felvételt szeretné módosítani! A kapott aránnyal módosítsa a felvétel hosszát a ConvertLenghten funkcióval! 3. Hajtson végre mindkét felvételen LPC analízist! Az LPC analízishez használja a Praat Formants&LPCTo LPC(burg) eljárását! 4. A módosítani kívánt felvételen hajtson végre inverz szűrést! Ehhez a lépéshez jelölje ki a hangfájl objektumát és az LPC objektumot, majd használja a Filter(inverse) funkciót!
4. ábra: Az eredeti hanghullám (fent) és a forrás hanghullám (lent) 5. Az inverz szűrés során kapott forrás hanghullámon alkalmazza a célszemély felvételének LPC analízise során kapott formáns szűrőket! Jelölje ki a célszemély forrás hanghullám objektumot és a célszemély LPC objektumát, és használja a Filter funkciót! 6. A beszélőre jellemzőinek teljes kicseréléséhez módosítsa az alaphang-menetet is! Készítsen Manipulation objektumot a kapott szintetizált hanghullámból és az eredeti hanghullámból! Az eredeti hangullám Manipulation objektumából készítsen Pitch Tier objektumot! A Pitch Tier és a szintetizált felvétel Manipulation objektumát egyszerre kijelölve használja a Replace pitch tier funkciót! A szintetizált (és most már alaphang-módosított) Manipulation objektumot kijelölve használja a Get resynthesis (overlap-add) funkciót a hanghullám szintetizáláshoz!