6 Functions on the receive (RX) side

06.923GPPComfort noise aspects for Adaptive Multi-Rate speech traffic channelsTS

The situations in which comfort noise shall be generated on the receive side are defined in GSM 06.93 [5]. Generally speaking, the comfort noise generation is started or updated whenever a valid SID frame is received.

6.1 Averaging and decoding of the LP and energy parameters

When speech frames are received by the decoder the LP and the energy parameters of the last seven speech frames shall be kept in memory. The decoder counts the number of frames elapsed since the last SID frame was updated and passed to the RSS by the encoder. Based on this count, the decoder determines whether or not there is a hangover period at the end of the speech burst (defined in GSM 06.93). The interpolation factor is also adapted to the SID update rate.

As soon as a SID frame is received comfort noise is generated at the decoder end. The first SID frame parameters are not received but computed from the parameters stored during the hangover period. If no hangover period is detected, the parameters from the previous SID update are used.

The averaging procedure for obtaining the comfort noise parameters for the first SID frame is as follows:

– when a speech frame is received, the LSF vector is decoded and stored in memory, moreover the logarithmic frame energy of the decoded signal is also stored in memory;

– the averaged values of the quantized LSF vectors and the averaged logarithmic frame energy of the decoded frames are computed and used for comfort noise generation.

The averaged value of the LSF vector for the first SID frame is given by:

(5)

where is the quantized LSF vector of one of the frames of the hangover period and where =. The averaged logarithmic frame energy for the first SID frame is given by:

(6)

where is the logaritmic vector of one of the frames of the hangover period computed for the decoded frames and where =.

For ordinary SID frames, the LSF vector and logarithmic frame energy are computed by table lookup. The LSF vector is given by the sum of the decoded reference vector and the decoded LSF prediction residual.

During comfort noise generation the spectrum and energy of the comfort noise is determined by interpolation between old and new SID frames.

In order to achieve a comfort noise that is less static in appearance the LSF vector is slightly perturbed for each frame by adding a small component based on parameters variations computed in the hangover period. The computation of the perturbation is made by computing the mean LSF vector from the matrix , this mean vector is then subtracted from each of the elements of forming a new matrix . For every frame a mean removed LSF vector is randomly choosen from and added to the interpolated LSF vector.

6.2 Comfort noise generation and updating

The comfort noise generation procedure uses the adaptive multi-rate speech decoder algorithm defined in GSM 06.90 [3].

When comfort noise is to be generated, the various encoded parameters are set as follows:

In each subframe, the pulse positions and signs of the fixed codebook excitation are locally generated using uniformly distributed pseudo random numbers. The excitation pulses take values of +1 and ‑1 when comfort noise is generated. The fixed codebook comfort noise excitation generation algorithm works as follows:

for (i = 0; i < 40; i++) code[i] = 0;

for (i = 0; i < 10; i++) {

j = random(4);

idx = j * 10 + i;

if (random(2) == 1) code[idx] = 1;

else code[idx] = ‑1;

}

where:

code[0..39] fixed codebook excitation buffer;

random(4) generates a random integer value, uniformly distributed between 0 and 3;

random(2) generates a random integer value, uniformly distributed between 0 and 1.

The fixed codebook gain is computed from the logarithmic frame energy parameter by converting it to the linear domain and normalizing with the gain of LP synthesis filter.

The adaptive codebook gain values in each subframe are set to 0, also the memory of the adaptive codebook is set to zero.

The pitch delay values in each subframe are set to 40.

The LP filter parameters used are those received in the SID frame.

The predictor memories of the ordinary LP parameter and fixed codebook gain quantization algorithms are initialized when RX_TYPE is not SPEECH , so that the quantizers start from given initial states when the speech activity begins again.

With these parameters, the speech decoder now performs the standard operations described in GSM 06.90 [3] and synthesizes comfort noise.

Updating of the comfort noise parameters (energy and LP filter parameters) occurs each time a valid SID frame is received, as described in GSM 06.93 [5].

When updating the comfort noise, the parameters above should be interpolated over the SID update period to obtain smooth transitions.