1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
<HTML>
<HEAD>
<TITLE>TSP (libtsp/SP) - SPpcXcep</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFACD">
<H2>SPpcXcep</H2>
<HR>
<H4>Routine</H4>
<DL>
<DT>
void SPpcXcep (const float pc[], int Np, float cep[], int Ncep)
</DL>
<H4>Purpose</H4>
<DL>
<DT>
Convert predictor coefficients to cepstral coefficients
</DL>
<H4>Description</H4>
This routine calculates cepstral coefficients corresponding to a set of
predictor coefficients. Consider the prediction error filter A(z),
<P>
<PRE>
Np -k
A(z) = 1 - SUM p(k) z .
k=1
</PRE>
<P>
The power spectrum corresponding to the all-pole LPC filter is
<P>
<PRE>
S(w) = g^2 / |A(w)|^2 ,
</PRE>
<P>
where A(w) is short-hand notation for A(exp(jw)). The power spectrum is
the Fourier transform of the (infinite) set of autocorrelation coefficients
The cepstrum for the autocorrelation coefficients is given by the inverse
Fourier transform of the log power spectrum. Equivalently the cepstral
coefficients are the Fourier series coefficients of the (periodic) log power
spectrum,
<P>
<PRE>
ln[S(w)] = 2 ln[g] - ln[|A(w)|^2]
</PRE>
<P>
<PRE>
inf
= SUM c(k) exp(-jkw) .
k=-inf
</PRE>
<P>
The cepstral coefficients are symmetric, c(-k) = c(k). For a minimum-phase
A(z), the integral of ln[|A(w)|^2] is zero. The coefficient c(0) is then the
average of the log power spectrum, c(0) = 2 ln[g]. In this routine, g is
assumed to be unity, giving c(0) = 0. An expression for the other cepstral
coefficients is obtained by expanding the ln[A(w)] in a Laurent series and
taking the derivatives. This gives the recursion
<P>
<PRE>
1 n-1
c(n) = p(n) + - SUM (n-k) c(n-k) p(k), n=1,2,... .
n k=1
</PRE>
<P>
This routine returns the first Ncep cepstral coefficients.
<P>
<DL>
<DT>
Reference:
<DD>
J. D. Markel and A. H. Gray, Jr., "Linear Prediction of Speech",
Springer-Verlag, 1976.
</DL>
<P>
Predictor coefficients are usually expressed algebraically as vectors with
1-offset indexing. The correspondence to the 0-offset C-arrays is as
follows.
<PRE>
p(1) <==> pc[0] predictor coefficient corresponding to lag 1
p(i) <==> pc[i-1] 1 <= i < Np
</PRE>
<H4>Parameters</H4>
<DL>
<DT>
-> const float pc[]
<DD>
Vector of predictor coefficients (Np values). These are the coefficients
of the predictor filter, with pc[0] being the predictor coefficient
corresponding to lag 1, and pc[Np-1] corresponding to lag Np.
<DT>
-> int Np
<DD>
Number of predictor coefficients
<DT>
<- float cep[]
<DD>
Cepstral coefficients (Ncep values). The first cepstral coefficient
cep[0] corresponds to the zero quefrency term and is always returned
with the value zero.
<DT>
-> int Ncep
<DD>
Number of cepstral coefficients (including cep[0])
</DL>
<H4>Author / revision</H4>
P. Kabal Copyright (C) 1996
/ Revision 1.7 1996/04/15
<H4>See Also</H4>
<A HREF="SPpcXcor.html">SPpcXcor</A>,
<A HREF="SPpcXec.html">SPpcXec</A>,
<A HREF="SPpcXlsf.html">SPpcXlsf</A>,
<A HREF="SPpcXrc.html">SPpcXrc</A>
<P>
<HR>
Main Index <A HREF="../libtsp.html">libtsp</A>
</BODY>
</HTML>
|