Kepstrimuunnos ja puhesignaalien analyysi S-89.3640 Puheenkäsittelytekniikan metodit Kevät 2011 Unto K. Laine Kepstri - sisältö Kirjallisuuslähteet, taustamateriaali Kepstrin idea ja syntyhistoria Kepstrin teoriaa Kepstri ja LP-malli Kepstri puheanalyysissä (F0) Mel-kepstri Fourier teoriaa Hilbert muunnos diskreetti kausaalinen signaali minimivaiheinen järjestelmä Kepstri - Intro Luento perustuu kepstri-lukuun teoksissa: 1. John R. Deller, John G. Proakis, and John H. L. Hansen: Discrete-Time Processing of Speech Signals Materiaali lainattavissa: Akustiikan E-siipi 2. krs kirjahylly käytävällä vasemmalla Kepstri - Intro 2. Introduction to Digital Speech Processing Lawrence R. Rabiner and Ronald W. Schafer Section 5: Homomorphic Speech Analysis Foundations and Trends R in Signal Processing Vol. 1, Nos. 1 2 (2007) 1 194... ja... 1
Kepstri - Intro Jos lineaarisen järjestelmän tuottamassa signaalissa hyötyinformaatio on matalilla taajuuksilla ja häiritsevä kohina korkeammilla taajuuksilla ne voidaan helposti erottaa lineaarisella suodatuksella. Olkoon w [n] korkeita taajuuksia sisältävä kohina x[n] = x 1 [n]+w[n] ja lin. operaattori I [.] alipäästösuodatin I [x[n]] = I [x 1 [n]+w[n]] = I [x 1 [n]]+ I [w[n]] x 1 [n] Tilanne on ratkaisevasti toinen jos kaksi signaalia ovat konvoluoituneet (*) -> esimerkkinä lähde-suodin malliin perustuva puheentuoton malli: s[n] = e[n]*h[n] e[n] lähde ja h[n] suodin I [s[n]] = I [e[n]*h[n]] Mikä vaikutus signaaleihin e[n ] ja h[n]?? Etsimme operaattoria, joka edes kohtuullisesti kykenee separoimaan konvoluoituneet komponentit! H [s[n]] = H [e[n]*h[n]] = H [e[n]]+h [h[n]] [The complex cepstrum operator transforms convolution into addition.] Kepstri - Intro Kepstrilaskenta antaa työkalut separoida konvoluoituneet signaalit: e[n]*h[n] Kepstrissä alunperin konvoluoituneiden signaalien vastineet ovat lineaarisesti kombinoituneet (vrt. edellä esitetty summautuneiden signaalien lineaarisesti separoituva tapaus) Tämä mahdollistaa alunperin konvoluoituneiden komponenttien lineaarisen separoimisen! Kepstrin Idea Kepstrilaskenta antaa työkalut separoida konvoluoituneet signaalit: e[n]*h[n] Fourier: F [e*h ] = E[k] H[k], missä k taajuusindeksi Log[ E H ] = Log[ E ] + Log[ H ] Komponentit on saatu lineaarikombinaatioksi, jota voidaan edelleen suodattaa Fourier tekniikalla: F-muunnos, haluttujen komponenttien poisto ja muunnos takaisin taajuusalueeseen! Olemme näin johtaneet lifteröinnin! 2
Kepstri - Intro Kun konvoluoituneet signaalit saadaan kepstrissä lineaarisesti kombinoituneiksi ne on usein myös mahdollista separoida lineaarisin operaatioin, kuten kepstrialueen kaistanpäästö ja kaistanesto operaatioilla. Koska kepstrialue on sukua aika-alueelle ko. operaatiota voisi luonnehtia pikemminkin aikaikkunoinniksi. Tästä käytetään nimitystä -> lifteröinti liftering Cepstrum - History Bogert, Healy, and Tukey, The quefrency analysis of time series for echoes: Cepstrum, pseudo-autocovariance, cross-cepstrum and saphe cracking In M. Rosenblatt, ed., Proceedings of the Symposium on Time Series Analysisı. J. Wiley & Sons, pp. 209-243, NY, 1963. Cepstrum John W. Tukey *1915-2000 The FFT man spectrum <-> cepstrum "quefrency," "gamnitude," lifter and saphe. ( Lukihäiriö??) Cepstrum Noll A. M., Cepstrum pitch determination, JASA (Journal of Acoustical Society of America) vol. 41, pp. 293-309, Feb. 1967. Homomorphic signal processing Oppenheim (1967, 1969) Shafer (1968) Homomorphic same shape + <-> * ; linear domain <-> convolution domain 3
Kepstri - Homomorphic System H[s[n]] = H [e[n]*h[n]] = H [e[n]]+h [h[n]] Tyypillisesti haluamme separoida häiriön eli herätteen e[n] systeemivasteesta h[n] operaattorilla H. Tällöin toivomme, että: H [e[n]] δ[n] ja H [h[n]] h[n]. Kepstrioperaattori toimii tähän suuntaan, mutta ei luonnollisestikaan kykene ideaalisti separoimaan konvoluoituneita komponentteja. Jos separointi onnistuu likimain kuten yllä, kyseessä on homomorfinen järjestelmä. Kepstri Klassinen reaali: Real Cepstrum (RC) Yleistys, kompleksinen: Complex Cepstrum (CC) CC säilyttää signaalin muotoon liittyvän vaiheinformaation Silti CC:n kertoimet aina reaalisia! RC:n ja CC:n ero siinä, että RC on aina symmetrinen kun CC:n spektrissä mukana myös antisymmetrinen komponentti Kepstri - Määritelmä Real Cepstrum: (x[n] ääretön sekvenssi ajassa) c[m] = F -1 [Log[ X[k] ]] [m] = F -1 [Log[ F [x[n]] ]] [m] Complex Cepstrum: y[m] = F -1 [Log[X[k]]] [m] = F -1 [Log[ F [x[n]]]] [m] Log 10 for comparisions (otherw. any Log x ) Kepstri - Operaattori Q Apuoperaattori: Q * real [x[n]] = Log[ X[k] ] Käänteinen operaattori: [Q * real ] -1 [ ] = F -1 [Exp[ ]] Johtaa nollavaiheiseen, ei kausaaliseen signaalin esitykseen aika-alueessa, koska signaalin vaiheinformaatio on tuhottu! 4
Real Cepstrum: c[m] Complex Cepstrum: y[m] Kepstri HUOM! Sekä c[m], että y[m] kertoimet ovat reaaliarvoisia! c[m] aina parillisesti symmetrinen y[m] sisältää myös paritonta symmetriaa, jos x[n] ei ole kausaalisesta ja minimivaiheisesta järjestelmästä Kepstri & Lineaariprediktio LP Kun x[n] kausaalinen ja minimivaiheinen y[0] = c[0] = E [Log[X[k]]] y[m] = 2 c[m] m>0, Parillinen[y[m]]= c[m], y[m]=0 m<0 *) LP-malli H[z] (tai H(ω))- ollessaan stabiili - on aina minimivaiheinen. c[0] = E [Log[H[k]]] = Log[G], missä Η[k] = G/A[z] (kun z evaluoidaan yksikköympyrällä: z -> e jkωt/n, missä N signaalikehyksen koko). LP:n perusominaisuus: E [Log[ 1/A[z]]] = 0! ( A[z] prediktiovirhesuodin, E [.] -> Odotusarvo ) *) Kso. Mathematica simulaatio Kepstri & LP LP-malli: G/ (1-a 1 z -1 -a 2 z -2... -a p z -p ) = Η [z] Kun x[n] kausaalinen ja minimivaiheinen (impulssivaste) y[0] = c[0] = Log[G] (Markel & Gray) LP:n a-kertoimet voidaan muuntaa kepstrikertoimiksi y[m] kaavalla: y[0] = Log[G], y[1] = a[1], y[m] = a[m] + t=1, m-1 [(t/m) y[t] a[m-t]] 1 < m p ja missä a[m] tarkoittaa m:ttä prediktorikerrointa. Reaalikepstriin päästään kertoimista y[m] seuraavasti: c[0] = y[0], c[m] = y[m]/2, 0 < m p Kepstri - Intuitio Source-Filter Theory: X(w) = S(w) H(w) Log[X(w)] = Log[S(w)] + Log[H(w)] (kompleksinen kepstri) Log[ X(w) ] = Log[ S(w) ] + Log[ H(w) ] (reaalinen kepstri) 5
Kepstri - Intuitio Log[ X(w) ] = Log[ S(w) ] + Log[ H(w) ] Lähteen ja suotimen vaikutukset logaritmiseen spektriin summautuvat (voidaan eriyttää/separoida lineaarimuunnoksella - kun osuvat eri alueille) Soinnillinen lähde tuottaa kamparakenteen (taajuusalue: nopeata vaihtelua), suodin muokkaa sen verhokäyrää (taajuusalue: hitaita muutoksia) Taajuusalueen nopeat ja hitaat muutokset saadaan erilleen kun tehdään uusi Fourier muunnos (IFT)! 6
Mel-Cepstrum 7
Esimerkki Kompleksisen kepstrin laskenta Mathematicalla (laskentatulos seuraavalla kalvolla) Epäsymmetria! w1: Hamming ikkuna vv: parametri joka valitsee vokaalin signaalimatriisista voc vv = 7;(*valitaan /ae/ vokaali*) fu = Fourier[w1*voc[[vv]]]; clogfu = Log[fu]; ccps = InverseFourier[clogfu]; ListLinePlot[Re[ccps], Frame -> True,PlotRange -> {20, -20}] Indeksi 512 = folding = Fs/2 Vokaali /ae/ kompleksinen kepstri. Huomaa epäsymmetria! Kompleksisen spektrin rakenne Imaginääriosa: projektio pystypinnalle Reaaliosa: projektio vaakapinnalle 0 Im[H[jw]] antisymmetric jw Re[H[jw]] Fourier Transform Muista! Re[ F [x[n]]] -> cos-sarja (even) Im[ F [x[n]]] -> sin-sarja (odd) Re[H[jw]] symmetric -w 0 +w 0 H[jw] 8
Hilbert Transform, H [.] Discrete Causal signals discrete causal cepstrum minimum phase Analytic signals Linear time-invariant causal system: Multiplication in frequency domain by H function H(e j" ) = G(")e j#(" ) #(") = H [ G(") ], causal min phase case Hilbert transform by DFT: H [x] = F -1 [H F [x]] Note that the input signal must be discrete causal, i.e., the second half must be zero. Use zero-padding to ensure that this condition is met. There are times when we desire to create a so-called discrete analytic signal. This can be done using the Hilbert transform. The discrete analytic signal has a DFT whose second half vanishes (nothing in negative frequencies). The weighting function H (multiplication in frequency domain) ensures that this is the case. The imaginary output is the Hilbert Transform of the real output. H = 0 at DC and Folding frequency H = j at positive and -j at negative frequencies. Some properties of the Hilbert transform: Signals are denoted by x and y. H [x] denotes the Hilbert Transform of signal x. Scalar constants are denoted by a and b. 1. If x is real, then H [x] is real 2. H [a] = 0 3. H [a x + b y] = a H [x] + b H [y] 4. H [H [x]] = -x 5. For any x, H [x] and x are orthogonal 6. H [x*y] = x* H [y] = H [x]*y 7. H [x] is odd for even x and even for odd x 8. H [cos(ωt)] = sin(ω t) and H [sin(ω t) = -cos(ω t) 9
Vaihtoehtoinen tehtävä! Esimerkki Harjoitustyön tehtävä 1.3 on osoittautunut monelle opiskelijalle melko haastavaksi etenkin jos signaalinkäsittelyn teoria ei ole hallinnassa. Silti kannustaisin yrittämään tätä! 0.5-0.5 20 40 60 80 100 120 Kausaalinen, minimivaiheinen impulssivaste Vaihtoehtona 1.3:lle on tutkia mel-kepsrin käyttöä vokaalien luokittelussa - laajennus tehtävään 4.2 Teette siis saman tehtävän sekä standardi-kepstrillä, että melkepstrillä. Helpotuksena tarjoamme mel-suodinpankin käyttöönne (laitettu jakeluun kurssisivun kautta). 0.8 0.6 0.4 0.2-0.2 1.0 0.8 0.6 0.4 0.2 20 40 60 80 100 120 20 40 60 80 100 120 Kompleksinen kepstri (CC) Reaalinen kepstri (RC) 10