Semestrální práce Václav Brunnhofer Kepstrální analýza řečového signálu 1. Charakter řečového signálu Lidská řeč je souvislý, časově proměnný proces. Je nositelem určité informace od řečníka k posluchači a je zakódována a zároveň přenášena pomocí akustického vlnění. Řeč je vytvářena ovlivňováním výdechového proudu vzduchu z plic hlasovým ústrojím člověka, začínajícího hlasivkami a končícího rty. a obr.1a je zobrazen řečový signál při promluvě slova "aféra". Řečovým signálem s(t) rozumíme posloupnost diskrétních vzorků signálu, který můžeme obdržet např. z mikrofonu. Pokud si tento signál pozorně prohlédneme, najdeme zde oblasti (obr.1c), které jsou víceméně periodické, jde o znělé části řeči, periodu označujeme symbolem T 0 (Základní perioda řeči, Pitch period). V řečovém signálu najdeme také oblasti (obr.1b), které mají charakter šumu, tyto části řeči jsou neznělé. Znělost, popř. neznělost je způsobena tím, jestli výdechový proud vzduchu z plic rozkmitá hlasivkovou štěrbinu nebo ne. Obr.1. Časový průběh řečového signálu při promluvě slova "aféra"- a), detail neznělého úseku - b), detail znělého úseku - c).
2. Model vytváření řeči obr.2. Podle úvahy o charakteru řečového signálu sestrojíme jednoduchý model vytváření řeči Obr.2. Blokové schema vytváření řeči. Tento model je využíván u všech parametrických syntezátorů řeči [1],[2]. Zákledem je model hlasového traktu, který s pomocí co nejmenšího počtu parametrů - koeficientů c(n) napodobuje přenosové vlastnosti lidského hlasového traktu. Hlasový trakt člověka je tvořen soustavou dutin - dutina hrdelní, ústní, nosní a dále do něho zařazujeme zuby, jazyk a rty. Model hlasového traktu lze realizovat např. číslicovým filtrem. Při promluvě se však rozměry dutin hlasového traktu spojitě mění, a tedy mění se i jeho přenosové vlastnosti. Tzn. filtr modelující hlasový trakt musí být časově nestacionární. Změna rozměrů hlasového traktu je ovšem, díky fyziologii, relativně pomalá. Dopustíme se jen malé chyby pokud budeme předpokládát, že tato změna se na krátkém časovém intervalu, který je asi 10 až 30 ms, vůbec neprojeví. Filtr modelující hlasový trakt potom může mít uvnitř tohoto časového intervalu konstantní parametry c(n), které jsou pro každý segment jiné. Druh buzení hlasového traktu zavisí na tom, jestli je uvedený kratký segment řeči znělý či neznělý. V případě, že je řeč znělá, modelujeme kmitání hlasivek generátorem pulsů, jehož perioda odpovídá základní hlasivkové periodě T 0. eznělé části řeči je možné vytvářet buzením modelu hlasového traktu generátorem bílého šumu s plochým výkonovým spektrem. Ve skutečnosti není buzení vždy jen absolutně znělé a vždy úplně neznělé. Pro větší přiblížení skutečnosti se buď používá určitého směšování těchto zdrojů a nebo se jen v případě znělého buzení přimíchává k pulsům generátoru barevný šum s definovaným výkonovým spektrem. Pro jednoduchost budeme v tomto článku uvažovat pro každý segment vždy pouze jedenoho z těchto dvou druhů buzení. Aby později vynikly výhody kepstrální analýzy popíšeme si vytváření řečového signálu na krátkém časovém úseku (10 až 30 ms, tedy parametry hlasového traktu uvažujeme konstantní), také symbolicky. Přeměnu budícího signálu x(n) na výstupní řečový signál s(n) zajišťuje model hlasového traktu, který provádí lineární filtraci. Označme jeho impulsní odezvu jako h(n), kterou jednoznačně zadávají koeficienty c(n). Výstupní řečový signál s(n) je dán konvolucí impusní charakteristiky modelu hlasového traktu h(n) a vstupním budícím signálem x(n): s ( n) = x( n)* h( n) (1)
3. Definice reálného kepstra echť S(k) je diskrétní spektrum analyzovaného signálu, které může být určeno pomocí diskrétní Fourierovy transformace DFT: S( k) = DFT{ s( n)} = 1 n= 0 s( n). e 2π j. kn (2) Pro jeho výpočet se dnes většinou používá rychlého algoritmu FFT [2]. Proměnná k označuje frekvenční index, který nabývá diskrétních hodnot 0,1,...,. je počet bodů algoritmu FFT. Ke každému takovému indexu náleží frekvence f = (k/)f vz. Realné kepstrum potom obdržíme jako reálnou část zpětné diskrétní Fourierovy transformace logaritmu modulu spektrální funkce S(k): 1 1 = = c( n) Re{ DFT [ln S( k) ]} Re k= 1 0 ln S( k). e 2π j kn (3) Logaritmus použitý ve vzorci (3) se většinou používá přirozený. 4. Praktický postup výpočtu reálného kepstra Kepstrální analýza byla poprve publikována v roce 1963. V aplikaci na řečové signály vychází z časově - frekvenční analýzy [3]. Jak již bylo uvedeno, řečový signál je proměnný v čase a pokud chceme postihnout tuto změnu ve spektrální oblasti, musíme analyzovat pouze segment takové délky, kde můžeme předpokládat stacionaritu signálu. Lze zvolit dvě základní metody segmentování řečového signálu [4]: 1. Pitch synchronní segmentace - kdy délka segmentu odpovídá přesně jedné periodě znělé řeči, 2. Pitch asynchronní segmentace - kdy je délka segmentu pevná a nezávislá na základní periodě řeči a je obvykle rovna dvoum až třem pitch peridám. První z metod je využívána zřídka, je implementačně i výpočetně náročnější a jak později uvidíme ztrácíme potom informaci o základním tónu v kepstru. a druhou stranu tato metoda poskytuje lepší informaci o hlasovém traktu než metoda 2. Dále se budeme zabývat pitch asynchronní segmentací. a tomto místě je vhodné připomenout, že při určování zastoupení jednotlivých frekvenčních složek v krátkém segmentu, který neodpovídá přesně periodě signálu, se vždy dopouštíme určité chyby [3]. Pro omezení chyb je vhodné používat dlouhou délku segmentu, což je ale v rozporu se stacionaritou řečového signálu uvnitř tohoto segmentu. Z těchto důvodu se volí kompromis mezi délkou segmentu a přesností jeho spektra. Dále se využívá určitého překrývání segmentů a každý segment se násobí vhodnou vahovací posloupností. Při analýze řeči je to nejčastěji Hammingovo okno. Postup výpočtu koeficientů reálného kepstra ze segmentu řeči s(n), při diskrétní reprezentaci signálu, je naznačeno blokovým schematem na obr.3.
Obr.3. Postup výpočtu reálného kepstra ze segmentu řečového signálu. Význam jednotlivých operací vynikne jejich matematickým zápisem aplikovaným na řečový signál s(n), který můžeme vyjádřit vztahem (1). Z vlastností Fourierovy transformace je známo, že konvoluce dvou signálů, v našem případě x(n) a h(n), se po aplikaci této transformace převede na součin: DFT { s( n)} = DFT{ x( n)* h( n)} = DFT{ x( n){. DFT{ h( n)} = X ( k). H ( k) = S( k) (4) Pokud na vzorec (4) dále aplikujeme přirozený logaritmus, změní se součin na součet: ln[ S ( k) ] = ln[ X ( k). H ( k) ] = ln[ X ( k) ] + ln[ H ( k) ] (5) a obr.4. můžeme vidět diskrétní spektrum krátkého stacionárního úseku znělé hlásky "a", které je naznačeno modrým průběhem. Rychlé změny (zvlnění) spektra jsou dány kvaziperiodickým buzením, pomalá změna průběhu spektra, což je naznačeno červenou křivkou, je dána přenosem hlasového traktu. Tzn. těmito operacemi jsme převedli konvoluci v časové oblasti na additivní směs dvou logaritmů diskrétních modulových spekter. Pokud dále aplikujeme zpětnou diskrétní Fourierovu transformaci operace součtu zůstane zachována a pokud uvažujeme pouze reálné složky obdržíme realné kepstrum, kde osa n značí časovou osu obr.5.: c ( n) = Re{ DFT x c ( n) = Re{ DFT h c( n) = Re{ DFT 1 1 1 [ln X ( k) ]} [ln H ( k) ]} [ln S( k) ]} = c x ( n) + c h ( n) (6) Obr.4. Modulové spektrum stacionárného segmentu znělé hlásky "a" a jeho vyhlazení metodou homomorfní filtrace.
Pomalé změny ve spektru na obr.4. se v kepstru promítnou blízko počátku. Můžeme tedy řící, že počáteční hodnoty kepstra c h (n) jsou parametry hlasového traktu. Rychlá periodická změna průběhu spektra vlivem buzení se projeví jako špička v čase odpovídajícím základní hlasivkové periodě. Polohu této špičky můžeme také využít při určování základní periody řeči T 0 viz. obr.6. Složky kepstra c x (n), tedy ty, které neuvažujeme jako parametry hlasového traktu, jsou způsobeny reálným budícím signálem x(n). Parametry budícího signálu však většinou zanedbáváme, případně uvažujeme pouze jejich příspěvek k energii buzení [5]. Pokud bychom vyšetřovali spektrum pouze jedné periody znělého úseku (např. při pitch synchronní segmentaci) ztratíme informaci o buzení. Modulové spektrum nebude zvlněné a špička v kepstru nebude přítomná. Obr.5. Reálné kepstrum stacionárního segmentu znělé hlásky "a" Pokud vyšetřujeme neznělou část řeči má spektrum také pomalu a rychle se měnící složku obr.6. Pomalé změny můžeme opět považovat za modulové spektrum hlasového traktu. Rychlé změny spektra však již nejsou periodické a mají víceméně náhodný charakter. Díky tomu se v kepstru obr.7. nevyskytuje špička vlivem základního tónu podobně jako při analýze znělého segmentu řeči.
Obr.6. Modulové spektrum stacionárného segmentu neznělé hlásky "f" a jeho vyhlazení metodou homomorfní filtrace. Obr.7. Reálné kepstrum stacionárního segmentu neznělé hlásky "f"
5. Homorfická filtrace Pro výpočet vyhlazeného modulového spektra hlasového traktu můžeme s výhodou použít určitý počet počátečních kepstrálních koeficientů c h (n), který můžeme ze všech vypočtených podle obr.5. nebo obr.7. vybrat nějakým oknem. ejčastěji se používá pravouhlé okno. Operaci vyhlazení spektra přepočtem pouze určitého počtu kepstrálních koeficientů říkáme homomorfická filtrace. Při tomto přepočtu provádíme opačný postup než jsme použily pro výpočet reálného kepstra ze známého modulového spektra. Protože jsme při výpočtu reálného kepstra neuvažovali fázy, ale pouze modul, je třeba pro zpětný přepočet reálné kepstrální koeficienty c(n) upravit na minimimální fázovou část komplexního kepstra k(n) [6]: c(n), n=0, /2 k(n)= { 2c(n), 1 n / 2 (7) 0, / 2 < n 1 Kepstrální koeficient c(0) je roven přirozenému logaritmu střední hodnoty modulového spektra S(k). Hodnota c(0) pro neznělý úsek je výrazně záporná (viz. obr.7.), protože neznělý úsek má obecně většinou menší amplitudu než znělý - viz obr.1. Vyhlazené spektrum potom vypočítáme tímto způsobem: = = 1 H ( k) exp{ DFT[ kh ( n)]} exp k n= 0 h ( n). e 2π j kn Postup při výpočtu vyhlazeného modulového spektra metodou homomorfní filtrace je naznačeno na obr.8.: (8) Obr.8. Postup při výpočtu vyhlazeného modulového spektra metodou homomorfní filtrace yní vyvstává otázka kolik kepstrálních koeficientů c h (n) = c(0) až c( 0 ) vlastně náleží hlasovému traktu? Tedy, jak zvolit hodnotu indexu 0 pro poslední kepstrální koeficient? Kepstrální koeficienty s vyšším indexem určují detaily ve spektru hlasového traktu. Pokud bychom zvolili 0 velké bylo by spektrum hlasového traktu parazitně zvlněno. Pokud bychom naopak zvolili hodnotu indexu 0 pro poslední kepstrální koeficient malou, nevystihli bychom už ani všechny pomalé změny. Vliv počtu kepstrálních koeficientů na výsledné vyhlazené spektrum hlasového traktu reprezentuje obr.9.:
Obr.9. Vliv počtu kepstrálních koeficientů na vyhlazené spektrum hlasového traktu Bylo zjišteno [7], že pro dobrou reprezentaci hlasového traktu postačí, při vzorkovací frekvenci f vz = 8 khz prvních 0 = 26 kepstrálních koeficientů. Při použití jiné vzorkovací frekvence určíme hodnotu 0 jako násobek 26 a poměru nové vzorkovací frekvence k 8kHz. 6. Závěr V tomto článku byl uveden popis charakteru řečového signálu, způsob jeho vytváření a dále bylo poukázáno na jednu z metod jeho krátkodobé analýzy - kepstrální analýzu. Pomocí této analýzy můžeme zjistit všechny parametry pro model vytváření řeči - parametry hlasového traktu, znělý-neznělý segment a periodu budícího signálu, je-li segment znělý. V článku je dále věnována pozornost tomu, jak tyto parametry v reálném kepstru najít a je uvedeno optimální řešení pro výběr parametrů hlasového traktu. Pomocí nich je možno provést homomorfickou filtraci moduloveho spektra segmentu rečového signálu a takto zjistit přenosové vlastnosti lidského hlasového traktu. Pokud by se podařilo navrhnout číslicový filtr s tímto přenosem, který by nastavovali kepstrální koeficienty c(0) až c( 0 ) mohli bychom podle obr.2. řeč syntetizovat.