Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký cernocky@fit.vutbr.cz FIT VUT Brno Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 1/45
Plán Parametrisace řeči Předzpracování základní parametry: krátkodobá energie, průchody nulou. Tvorba řeči a její signálový model. Spektrogram Oddělení buzení a modifikace cepstrum Přibĺıžení cepstra lidskému slyšení MFCC. Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 2/45
PARAMETRIZACE Úkol: vyjádřit řečový signál omezeným množstvím hodnot parametrisace, feature extraction. a) Popis založen pouze na poznatcích o zpracování signálu (banky filtrů, Fourierova transformace, atd.) neparametrický popis. b) Popis založen na poznatcích o tvorbě řeči parametrický popis. ALE: b) používá mnoho technik neparametrického popisu, takže tyto dvě skupiny není snadné (a někdy ani žádoucí) oddělit. Vypočtené hodnoty stejně vždy nazýváme parametry. Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 3/45
Parametry skalární jedno číslo na řečový úsek (krátkodobá energie nebo počet průchodů nulou). vektorové sada čísel (vektor) na řečový úsek. Pokud více řečových úseků, řadíme vektorové hodnoty do matic. time index... Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 4/45
PŘEDZPRACOVÁNÍ (pre-processing) Ustřednění Stejnosměrná složka (dc-offset) nenese žádnou užitečnou informaci, naopak může být pro další zpracování rušivá (např. výpočet energie). 2.5 x 14 2 1.5 1 s(n).5.5 1 1.5 2 4 6 8 1 12 14 16 18 n PRYČ S NÍ! (dc-offset removal) s [n] = s[n] µ s, µ s musíme odhadnout. (1) Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 5/45
Střední hodnota off-line v pohodě každý umí spočítat průměr: s = 1 N N s[n] (2) n=1 5259 2 x 14 5258.5 1.5 1 mean off line 5258 5257.5 s (n) offline.5.5 5257 1 1.5 5256.5 2 4 6 8 1 12 14 16 18 n 2 2 4 6 8 1 12 14 16 18 n Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 6/45
Střední hodnota on-line Nemáme k disposici celý signál: je příliš dlouhý, nebo neustále přibývá. s[n] = γ s[n 1]+(1 γ)s[n], (3) kde γ 1. To je ekvivalentní filtraci signálu filtrem s impulsní odezvou: h = [(1 γ) (1 γ)γ (1 γ)γ 2...]. (4) Je to geometrická posloupnost: počáteční člen a = 1 γ a kvocient q = γ. Její součet je tedy: h[n] = a 1 q = 1 γ = 1, (5) 1 γ n= (to jsme u výrazu počítajícího střední hodnotu očekávali ). Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 7/45
Příklad pro γ =.99 (viz také první počítačová labina): 6 2 x 14 5 1.5 mean on line, γ=.99 4 3 2 1 s (n) online 1.5.5 1 1.5 2 4 6 8 1 12 14 16 18 n 2 2 4 6 8 1 12 14 16 18 n Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 8/45
Preemfáze Vyrovnání kmitočtové charakteristiky řeči (energie klesá směrem k vyšším frekvencím). Spíše historická operace. Jednoduchý FIR filtr prvního řádu: H(z) = 1 κz 1, (6) kde κ [.9, 1]. Tedy něco jako rozdíl dvou sousedních vzorků. Modulová frekvenční charakteristika pro κ=.95: Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 9/45
H(f), κ=.95 2 1.8 1.6 1.4 1.2 1.8.6.4.2.1.2.3.4.5 normalized frequency Filtrace tímto filtrem: s [n] = s[n] κs[n 1] (7) Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 1/45
2 x 14 1.5 x 14 1.5 1 1 original.5.5 original.5 1 1.5.5 2 2 4 6 8 1 12 14 16 18 n 1 2 4 6 8 1 12 14 16 18 n Preemfázovaný průběh je kostrbatější a má více ostrých hran více vyšších frekvencí. Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 11/45
RÁMCE Proč? Řečový signál považujeme za náhodný, pro metody odhadu parametrů by měl být stacionární. Jenže není dělení na kratší úseky (segmenty, mikrosegmenty, frames). Tam stacionární bude nebo budeme doufat, že bude... Parametry rámců: délka (length) l ram, překrytí (overlap) p ram, posun rámce (frame shift) s ram = l ram p ram. Délka 1. dostatečně malá, aby bylo možné pokládat signál na daném úseku za stacionární. 2. ALE: dostatečně velká, aby bylo možné dostatečně přesně odhadnout požadované parametry. kompromis (setrvačnost hlasového ústrojí), typická délka 2 25 ms (16 2 vzorků pro F s =8 Hz). Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 12/45
Překrytí malé nebo žádné: rychlý časový posun v signálu, malé nároky na paměť/procesor, hodnoty parametrů se od jednoho rámce ke druhému mohou hodně měnit. velké: pomalý časový posuv, vyhlazené průběhy parametrů, velké nároky na paměť/procesor, velmi podobné parametry (porušují požadavek nezávislosti!). kompromis, typická délka 1 ms, tedy 1 rámců za vteřinu, centi-second vectors. Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 13/45
Kolik rámců pro řečový signál o délce N? Rámce bez překrývání, p ram = N l ram p = ram N ram = N, (8) l ram... operace značí zaokrouhlování dolů (floor). Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 14/45
Rámce s překrýváním, p ram N l ram s ram p ram N ram = 1+ N lram s ram (9)...pokud je signál alespoň jeden rámec dlouhý. Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 15/45
Výběr signálu do rámců - okénkové funkce Při vykrojení rámce je použito okno - window(ing) function: Pravoúhlé (rectangular) se signálem neudělá nic: 1 pro n l ram 1 w[n] = jinde Hammingovo utlumení signálu na okrajích: 2πn.54.46cos pro n l ram 1 w[n] = l ram 1 jinde (1) (11) Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 16/45
Jak změní okno spektrum vykusovaného signálu? Násobení signálu oknem v časové oblasti odpovídá konvoluce spektra řeči se spektrem okna: X(f) = S(f) W(f) (12) Srovnání pravoúhlého a Hammingova: rectangular, l ram =16 1.9.8.7.6.5.4.3.2.1 5 5 1 15 2 25 n rectangular spectrum 16 14 12 1 8 6 4 2.5.5 normalized frequency Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 17/45
Hamming, l ram =16 1.9.8.7.6.5.4.3.2.1 5 5 1 15 2 25 n Hamming spectrum 9 8 7 6 5 4 3 2 1.5.5 normalized frequency Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 18/45
ZÁKLADNÍ PARAMETRY ŘEČOVÉHO SIGNÁLU všechny budeme odvozovat na jednotlivých rámcích. Pro všechny rámce: skalární jeden řádkový vektor. vektorové matice, svisle index, vodorovně (hrubý) čas. Střední krátkodobá energie E = 1 l ram l ram 1 n= detektor řečové aktivity. rozlišení hlásek na znělé (vysoká energie) a neznělé (nízká). často log-energie. pozor na šum a na nízkoenergetické hlásky. x 2 [n] (13) Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 19/45
Příklad: létající prase 3 x 1 4 2 1 s(n) 1 2 3 1 2 3 4 5 6 7 8 9 1 n x 1 7 16 14 12 lin energy 1 8 6 4 2 2 4 6 8 1 12 frames 18 16 log energy 14 12 1 8 6 2 4 6 8 1 12 frames Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 2/45
Počet průchodů nulou (zero-crossing rate)...kolikrát za rámec proleze signál nulou. Z = 1 2 l ram 1 n=1 signx[n] signx[n 1], (14) kde sign(x) je zjednodušená znaménková funkce: +1 pro x[n] signx[n] = 1 pro x[n] < (15) Jak to funguje? Funkce signx[n] signx[n 1] dává hodnotu 2 pro každý případ, že se od vzorku x[n 1] ke vzorku x[n] změní znaménko: Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 21/45
12 1 8 6 zero crossings 4 2 2 4 6 8 2 4 6 8 1 12 14 16 n rozlišení hlásek na znělé (málo průchodů) a neznělé (více jako šum více průchodů). velmi citlivé na šum... Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 22/45
Příklad: létající prase 3 x 1 4 2 1 s(n) 1 2 3 1 2 3 4 5 6 7 8 9 1 n 7 6 zero crossings 5 4 3 2 1 2 4 6 8 1 12 frames Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 23/45
HLASOVÉ ÚSTROJÍ ČLOVĚKA A JEHO MODEL S laskavým svolením autora převzato z J. Psutka: Komunikace s počítačem mluvenou řečí, Academia Praha 1995. Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 24/45
Maso a jeho modelování v číslicovém zpracování pĺıce zdroj energie signály: NIC hrtan (larynx) modulace energie signály: buzení (excitation). otevřené hlasivky šum. kmitající hlasivky periodický signál (tón). základní tón řeči: muži 9 12 Hz ženy 15 3 Hz děti 35 4 Hz Buzení je většinou smíšené (moderní kodéry, GSM...) hlasový (artikulační) trakt modifikující ústrojí signály: filtrace. hltan (pharynx). měkké patro (vélum). jazyk. ústní dutina. nosní dutina. zuby. rty. Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 25/45
Model = kmitající hlasivky zdroj ss. proudu = plíce impulsní generátor Σ lineární přenosový systém (filtr) řeč šumový = artikulační trakt generátor = otevřené hlasivky Přenosový systém: lineární filtr - nejčastěji IIR. Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 26/45
Model hlasového traktu v časové a frekvenční oblasti g(t) a) T h(t) b) s(t) c) t t t G(f) d) cca -12 db/okt. H(f) F1 e) F2 F3 S(f) f) F f f f Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 27/45
Horní polovina časové průběhy, spodní polovina spektra. a) a d) buzení: T je perioda, F je frekvence základního tónu. b) a e) artikulační trakt: F 1 až F 3 jsou formanty (rezonanční frekvence hlasového traktu), dány jeho fyzickou konfigurací. c) a f) výsledný signál a jeho spektrum. Výsledný signál je dán v časové oblasti konvolucí: s(t) = g(t) h(t) = + Do kmitočtové oblasti se tato konvoluce promítá jako součin: g(τ)h(t τ)dτ. (16) S(f) = G(f)H(f). (17) Důležitý (a nelehký) úkol ve zpr. řeči je dekonvoluce, kdy se snažíme oddělit vliv buzení a artikulačního traktu. Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 28/45
SPEKTROGRAM Jedno spektrum nestačí (řeč je nestacionární) znázornění průběhu spektra řeči (přesněji spektrální hustoty výkonu PSD) v čase: řeč děĺıme na rámce. v každém rámci odhadneme PSD, nejčastějí pomocí DFT. zobrazení: vodorovná osa čas ( hrubý čas v rámcích). svislá osa frekvence. stupně šedi nebo barvičky udávají energii. Podle délky rámce děĺıme na: long-term spectrogram. short-term spectrogram. Nevýhoda DFT: Přesnost ve frekvenci a v čase se nedá získat zároveň wavelet analysis... Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 29/45
long-term: specgram(s,256,8,hamming(256),2); 4 35 3 25 2 15 1 5.2.4.6.8 1 1.2 Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 3/45
short-term: specgram(s,256,8,hamming(5)); 4 35 3 25 2 15 1 5.2.4.6.8 1 1.2 Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 31/45
CEPSTRUM pro oddělení buzení a modifikace v kódování se nám s nimi pracuje lépe samostatně, v rozpoznávání buzení zahazujeme úplně (příliš závislé na řečníkovi, náladě,...). Návrh č. 1: odfiltrujeme část pod 4 Hz a zbavíme se základního tónu... BAD IDEA: 28 26 24 22 2 18 16 14 12 násobky základního tónu jsou rozesety po celém spektru. mohli bychom přijít o první formant. telefonní pásmo začíná na 3 Hz a také perfektně slyšíme, s jakou výškou hlasu člověk mluví.... takže budeme potřebovat něco lepšího. 1 5 1 15 2 25 3 35 4 Cepstrum Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 32/45
The problem Buzení e(t) je konvoluováno s impulsní odezvou filtru: s(t) = g(t) h(t) = v kmitočtové oblasti součin: + g(τ)h(t τ)dτ, (18) S(f) = G(f)H(f). (19) ani v jedna z oblastí nelze dvě složky dobře oddělit. převést součin na součet. Řešení: nelinearita, která dokáže Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 33/45
Definice cepstra lng(f) = + n= c(n)e j2πfn (2) Hodnoty c(n) jsou cepstrální koeficienty. Jelikož G(f) je sudá funkce, jsou c(n) reálné a platí: c(n) = c( n) (21) Suma v rovnici je definicí DFT, proto můžeme c(n) vypočítat jako: c(n) = F 1 [lng(f)] (22) DFT-cepstrum spectrum cepstrum. frekvence kvefrence. filtrování liftrování. atd. c(n) = F 1{ ln F[s(n)] 2}, (23) Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 34/45
Opravdu to dokáže rozetnout konvoluci? s(n) = e(n) h(n), (24) S(f) = E(f)H(f) a tedy S(f) 2 = E(f) 2 H(f) 2. (25) Při výpočtu cepstra využíváme linearity zpětné Fourierovy transformace: Dostáváme: F 1 (a+b) = F 1 (a)+f 1 (b). c(n) = F 1{ ln[ E(f) 2 H(f) 2 ] } = F 1{ ln E(f) 2 +ln H(f) 2} = (26) = F 1{ ln E(f) 2} +F 1{ ln H(f) 2} = c e (n)+c h (n) (27) Z konvoluce se stal součet. Pokud jsou koeficienty c e (n) a c h (n) odděleny na kvefrenční ose, je možné je separovat jednoduchým oknem naštěstí jsou. (28) Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 35/45
signál, F[s(n)] 2, ln F[s(n)] 2, F 1{ ln F[s(n)] 2}. x 1 4 15 x 111 1.5 1 1.5.5 5 1 1.5 3 5 1 15 2 25 3 35 4 45 5 5 1 15 2 25 3 35 4 2 28 18 26 16 24 22 2 14 12 1 8 18 6 16 4 14 2 12 5 1 15 2 25 3 35 4 5 1 15 2 25 3 35 4 45 5 Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 36/45
c is log energy 1.2 1.8 filter excitation.6.4.2 1st multiple of lag 2nd multiple of lag.2.4 2 4 6 8 1 12 14 16 18 2 Pro vzorkovací frekvenci F s =8 Hz můžeme na kvefrenční ose oddělit vliv buzení a filtru separací s hranicí 3. Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 37/45
Pouze buzení vynulujeme cepstra patřící filtru: vynulované cepstrum, ln F[s(n)] 2, F[s(n)], signál (při IDFT byly použity fáze původního signálu)..25 3.2 2.15 1.1.5.5.1.15.2.25 4 5 1 15 2 25 3 35 4 45 5 1 2 3 4 5 6 7 5 1 15 2 25 3 35 4.5 3.5.4 3 2.5 2.3.2.1 1.5.1 1.2.5.3 1 2 3 4 5 6.4 5 1 15 2 25 3 35 4 45 5 Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 38/45
Pouze filtr vynulujeme cepstra patřící buzení: vynulované cepstrum, ln F[s(n)] 2, F[s(n)], signál (při IDFT byly použity fáze nula). 2 26 18 25 16 24 14 23 12 22 1 21 8 2 6 19 4 18 2 3.5 x 15 5 1 15 2 25 3 35 4 45 5 17 16 5 1 15 2 25 3 35 4 5 x 1 4 3 4 2.5 3 2 2 1.5 1 1.5 1 1 2 3 4 5 6 2 1 2 3 4 5 6 7 8 9 Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 39/45
Mel-frequency cepstrum MFCC DFT má všude stejné frekvenční rozlišení. Lidské ucho má na nízkých frekvencích větší rozlišení než na vysokých. Pro rozpoznávače řeči chceme přibĺıžit cepstrum slyšení. Jak na to? Na frekvenční osu rozmístíme nelineárně filtry, měříme energii na jejich výstupu, použijeme je místo DFT při výpočtu cepstra. Frekvenční osu můžeme nelineárně upravit a na upravené ose pak filtry rozmístit rovnoměrně. Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 4/45
Používaná nelineární úprava využívá převodu Hertzů na Mely: F Mel = 2959log 1 (1+ F Hz 7 ) (29) 25 2 frequency [Mel] 15 1 5 5 1 15 2 25 3 35 4 frequency [Hz] Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 41/45
Lineární rozmístění filtrů na Mel-ové ose má za následek nelineární rozmístění na stadardní kmitočtové ose v Hz: 1 m m m m m m 1 2 3 4 5 6 frequency Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 42/45
Výpočet energíı: 1. zkonstruujeme banku filtrů, vstupní signál filtrujeme v časové oblasti a počítáme energie: n s2 i (n)...moc SLOŽITÉ. 2. provedeme DFT, umocníme, vynásobíme trojúhelníkovým oknem a sečteme. (použito v toolkitu pro rozpoznávání řeči HTK Hidden Markov Model ToolKit). Zpětnou FT můžeme realizovat pomocí diskrétní cosinové transformace (DCT)...(bez odvození: využíváme symetrie spektra a toho, že výsledek musí vyjít reálný): c mf (n) = K logm k cos i=1 [ n(k.5) π ] K (3) Mel-frekvenční cepstrální koeficienty (MFCC) Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 43/45
. S(1,t) ln Sl(1,t) C 1 Input Speech Short Term DFT...... S(2,t) Mel Filter Bank ln..... Sl(2,t) DCT C 2 S(129,t). ln Sl(23,t) C 13 Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 44/45
1 a) Segment of speech signal for vowel iy.5 b) Speech segment after preemphasis and windowing.5.5 1 5 1 15 2 25 6 time [ms] c) Fourier spectrum of speech segment.5 5 1 15 2 25 2 time [ms] d) Filter bank energies smoothed spectrum 5 4 15 3 1 2 1 5 5 1 15 2 25 3 35 4 4 frequency [Hz] e) Log of filter bank energies 1 3 5 7 9 11 13 15 17 19 21 23 5 band number f) Mel frefuency cepstral coefficients 3 2 1 1 2 3 4 1 3 5 7 9 11 13 15 17 19 21 23 band number 5 2 4 6 8 1 12 mel quefrency Předzpracování řeči, tvorba řeči, cepstrum Jan Černocký, ÚPGM FIT VUT Brno 45/45