[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cepstrum computation

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

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

   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.