Digital Signal Processing Reference
In-Depth Information
1. Synthesis of the codebook vector to obtain the output
s k (n) .
2. Calculation of the cross-correlation between the reference
ˆ
s(n) (LPC, per-
ceptual weighting and pitch effects removed) and the synthetic estimate
ˆ
˜
s k (n) .
3. Calculation of the autocorrelation of the synthetic estimate
s k (n) .
4. Testing for the minimum error, or the maximum normalized correlation.
ˆ
To reduce complexity and memory, and improve quality, many versions
of the codebook excitations have been developed and used. Here, we will
consider three secondary excitation types.
Gaussian Excitation
Almost all of the early versions of CELP used a form of Gaussian code-
book as the source of secondary excitation. This is mainly because speech,
after inverse filtering with the LPC followed by the pitch, has residual
characteristics similar to Gaussian. One problem with this approach is the
size of the memory required to store the Gaussian codebook vectors. For
example, if a 10-bit codebook is used to match L reference samples, the
number of storage locations will be 2 10
40, this will
correspond to 40 960 storage locations, which can be very large for real-
time memory-restricted implementations. In order to overcome this problem,
the Gaussian vectors are represented as a one-dimensional array, where
most of the L samples of two consecutive vectors are common. The most
popular versions of this overlapping codebook are those with one or two
shifts. In other words, to generate a new vector, one or two samples at
the end of the previously-used vector are dropped and one or two new
samples are introduced at the beginning for one or two shifts respectively.
An overlapping codebook with single shift can be represented as an LTP
filter where the minimum and maximum delays are L
×
L . Assuming L
=
1
respectively, assuming that the locations start from 0 and the size of the
codebook is C .
In some coders, a centre-clipped version is used with a clipping threshold
of 1.2 for a unit variance vector. This is found to produce sharper output
speech. One reason for this is that, when matching the codebook vectors with
the reference vector, a few higher-magnitude vector elements dominate the
selection causing errors in the lower-magnitude vector elements. By making
the smaller vector elements zero, as well as minimizing the error they cause,
the matching of the larger magnitude samples is improved in the absence of
the erroneous smaller samples in the vector.
Training Gaussian codebooks does not improve the quality significantly
if the codebook size is eight bits or more. Therefore, they can simply be
populated by using a Gaussian random number generator. Some applica-
tions [23] use ternary codebooks, where each Gaussian number amplitude
1and C
+
L
Search WWH ::




Custom Search