Subject: Re: Cepstrum computation From: Eric Scheirer <eds(at)media.mit.edu> Date: Tue, 22 Jun 1999 12:37:52 -0400
Alain de Cheveigne wrote: >Question: is there anything to say that the area near such a singularity is >finite for a log spectrum calculated from a windowed signal? In other >words, can we say that limiting the log spectrum to a floor is reasonable, >given the shape of log spectra that we can encounter in practice? It seems to me that to 'properly' answer such a question, we should consider the purpose of the log transform in the cepstral analysis. I have heard two explanations for it. The first is to perform homomorphic deconvolution, taking a signal originating from a source-filter model and separating it into source and filter components. That is, passing the source x(t) through a filter h(t) gives us y(t) = x(t) * h(t), or |Y[w]| = |X[w]||H[w]| in the frequency domain. Taking the log gives us log |Y[w]| = log (|X[w]| + |H[w]|) = log |X[w]| + log |H[w]| so that when we transform back to the cepstral domain, we have y~[t] = x~[t] + h~[t]. That is, in the time domain, the filter process is a hard-to-deal-with convolution operation, but in the ceptral domain, filtering is an additive operator. (This is the explanation Oppenheim teaches when he teaches homomorphic signal processing). More precisely, it is additive so long as the |Y[w]| is nowhere zero. The homomorphic deconvolution fails if either the source or filter has a zero at some frequency. The second explanation is that the cepstrum decorrelates the spectrum and thus makes it more suitable for use in simple probabilistic models. Perhaps someone else can give an analysis of the singularity viewed through this explanation. I am surprised that others have said that "mathematicians" should define what happens to the cepstrum when the spectrum is zero. Mathematically, this situation is very well defined -- there is a singularity there! So long as any further derivation takes the possibility of singularity into account, there is no problem to simply live with the log transform as it is. The issue arrives when we *practically* want to deal with numerically estimating the cepstrum based on an estimate of the spectrum, using a numerical model that does not admit a rich use of singularities (such as 'float' variables in C++ or Matlab). This is a much different question! In my own preference, it would be best to have a model rich enough to say "the cepstrum is unknown but large at this quefrency," and to make inferences based on that statement. Dr. de Cheveigne's recent work on missing data has exactly the right flavor, I think.