Patent Description:
Comfort noise generators are usually used in discontinuous transmission (DTX) of audio signals, in particular of audio signals containing speech. In such a mode the audio signal is first classified in active and inactive frames by a voice activity detector (VAD). Based on the VAD result, only the active speech frames are coded and transmitted at the nominal bit-rate. During long pauses, where only the background noise is present, the bit-rate is lowered or zeroed and the background noise is coded parametrically using silence insertion descriptor frames (SID frames). The average bitrate is then significantly reduced.

The noise is generated during the inactive frames at the decoder side by a comfort noise generator (CNG). The size of an SID frame is very limited in practice. Therefore, the number of parameters describing the background noise has to be kept as small as possible. To this aim, the noise estimation is not applied directly on the output of the spectral transforms. Instead, it is applied at a lower spectral resolution by averaging the input power spectrum among groups of bands, e.g., following the Bark scale. The averaging can be achieved either by arithmetic or geometric means. Unfortunately, the limited number of parameters transmitted in the SID frames does not allow to capture the fine spectral structure of the background noise. Hence only the smooth spectral envelope of the noise can be reproduced by the CNG. When the VAD triggers a CNG frame, the discrepancy between the smooth spectrum of the reconstructed comfort noise and the spectrum of the actual background noise can become very audible at the transitions between active frames (involving regular coding and decoding of a noisy speech portion of the signal) and CNG frames.

Some typical CNG technologies can be found in the ITU-T Recommendations G. 729B [<NUM>], G. 1C [<NUM>], G. <NUM> [<NUM>], or in the 3GPP Specifications for AMR [<NUM>] and AMR-WB [<NUM>]. All these technologies generate Comfort Noise (CN) by using the analysis/synthesis approach making use of linear prediction (LP).

To further reduce the transmission rate, the 3GPP telecommunications codec for the Enhanced Voice Services (EVS) of LTE [<NUM>] is equipped with a Discontinuous Transmission (DTX) mode applying Comfort Noise Generation (CNG) for inactive frames, i.e. frames that are determined to consist of background noise only. For these frames, a low-rate parametric representation of the signal is conveyed by Silence Insertion Descriptor (SID) frames at most every <NUM> frames (<NUM>). This allows the CNG in the decoder to produce an artificial noise signal resembling the actual background noise. In EVS, CNG can be achieved using either a linear predictive scheme (LP-CNG) or a frequency-domain scheme (FD-CNG), depending on the spectral characteristics of the background noise.

The LP-CNG approach in EVS [<NUM>] operates on a split-band basis with the coding consisting of both a low-band and a high-band analysis/synthesis encoding stage. In contrast to the low-band encoding, no parameter modeling of the high-band noise spectrum is performed for the high-band signal. Only the energy of high-band signal is encoded and transmitted to the decoder and the high-band noise spectrum is generated purely at the decoder side. Both the low-band and the high-band CN is synthesized by filtering an excitation through a synthesis filter. The low-band excitation is derived from the received low-band excitation energy and the low-band excitation frequency envelope. The low-band synthesis filter is derived from the received LP parameters in the form of line spectral frequency (LSF) coefficients. The high-band excitation is obtained using energy which is extrapolated from the low-band energy and the high-band synthesis filter is derived from a decoder side LSF interpolation. The high-band synthesis is spectrally flipped and added to the low-band synthesis to form the final CN signal.

The FD-CNG approach [<NUM>] [<NUM>], makes use of a frequency-domain noise estimation algorithm followed by a vector quantization of the background noise's smoothed spectral envelope. The decoded envelope is refined in the decoder by running a second frequency-domain noise estimator. Since a purely parametric representation is used during inactive frames, the noise signal is not available at the decoder in this case. In FD-CNG, noise estimation is performed in every frame (active and inactive) at encoder and decoder sides based on the minimum statistics algorithm.

A method for generating comfort noise in the case of two (or more) channels is described in [<NUM>]. In [<NUM>], a system for stereo DTX and CNG is described that combines a mono SID with a band-wise coherence measure calculated on the two input stereo channels in the encoder. At the decoder, the mono CNG information and the coherence values are decoded from the bitstream and the target coherence in a number of frequency bands is synthesized. To lower the bitrate of the resulting stereo SID frame, the coherence values are encoded using a predictive scheme followed by an entropy coding with variable bit rate. Comfort noise is generated for each channel with the methods described in the previous paragraphs and then the two CNs are mixed band-wise using a formula with weighting based on transmitted band coherence values included in the SID frame.

In a stereo system, generating the background noise separately leads to completely uncorrelated noise which sounds unpleasant and is very different from the actual background noise causing abrupt audible transitions when we switch to/from active mode background to DTX mode backgrounds. Additionally, it is not possible to preserve the stereo image of the background using only two completely uncorrelated noise sources. Finally, if there is a background noise source and the talker is moving with a handheld device about the source, the spatial image of the background noise will change with time, something that could not be replicated when reconstructing the background noise for each channel independently. Therefore, a new approach to accommodate the problem for stereophonic signals needs to be developed.

This is also addressed in [<NUM>], however, in embodiments, the insertion of a common noise source for the two channels to imitate the correlated noise for generating the final comfort noise plays an important role on imitating stereophonic background noise recording.

Current communication speech codecs typically only code mono signals. Therefore, most existing DTX systems are designed for mono CNG. Simply applying DTX operation independently on both channels of a stereo signal seems straightforward but includes several problems. First, this approach necessitates transmission of two sets of parameters describing the two background noise signals in the two channels. This would increase the data rate needed for SID frame transmission which diminishes the benefit of load reduction on the network. Another problematic aspect lies in the VAD decision, which has to be synchronized between the channels to avoid oddities and distortions of the spatial image of the stereo signal and also to optimize bitrate reduction of the system. Moreover, when applying CNG on the receiver side independently on both channels, the two independent CNG algorithms will typically produce two random noise signals with zero or very low coherence. This will result in a very wide stereo image in the generated comfort noise. On the other hand, only applying on noise generator and using the same comfort noise signal in both channels leads to a very high coherence and a very narrow stereo image. For most stereo signals, however, the stereo image and its spatial impression will be somewhere in between these two extremes. Switching to or from active frames to DTX mode would therefore introduce abrupt audible transitions. Also, if there is a background noise source and the talker is moving with a handheld device about the source, the spatial image of the background noise will change with time, something that could not be replicated when reconstructing the background noise for each channel independently. Therefore, a new approach to accommodate the problem for stereophonic signals is needed.

The system described in [<NUM>] addressed these problems by transmitting information for mono CNG along with parameter values that are used to re-synthesize the stereo image of the background noise in the decoder. This type of DTX system fits well for parametric stereo coders that apply a downmix to the two input channels before encoding and transmission from which the mono CNG parameters can be derived. However, in a discrete stereo coding scheme usually still two channels are coded in a jointly fashion and upmix parameters like a fine-grained coherence measure are usually not derived. Thus, for these kind of stereo coders, a different approach is needed.

<CIT> discloses a technique to generate comfort noise.

<NPL> discloses a multi-channel artificial wind noise generator based on a fluid dynamics model.

<CIT> disclose a method for generating comfort noise.

<CIT> discloses a technique for generating comfort noise.

The present examples provide efficient transmission of stereo speech signals. Transmitting a stereo signal can improve user experience and speech intelligibility over transmitting only one channel of audio (mono), especially in situations with imposed background noise or other sounds. Stereo signals can be coded in a parametrical fashion where a mono downmix of the two stereo channels is applied and this single downmix channel is coded and transmitted to the receiver along with side information that is used to approximate the original stereo signal in the decoder. Another approach is to employ discrete stereo coding which aims at removing redundancy between the channels to achieve a more compact two-channel representation of the original signal by means of some signal pre-processing. The two processed channels are then coded and transmitted. At the decoder, an inverse processing is applied. Still, side info relevant for the stereo processing can be transmitted along the two channels. The main difference between parametric and discrete stereo coding methods is therefore in the number of transmitted channels.

Typically, in a conversation there are periods in which not all of the speakers are actively speaking. The input signal to a speech coder in these periods, therefore, consists mainly of background noise or (near) silence. To save data rate and lower the load on the transmission network, speech coders try to distinguish between frames that contain speech (active frames) and frames that contain mainly background noise or silence (inactive frames). For inactive frames, the data rate can be significantly reduced by not coding the audio signal as in active frames, but instead deriving a parametric low-bitrate description of the current background noise in form of a Silence Insertion Descriptor (SID) frame. This SID frame is periodically transmitted to the decoder to update the parameters describing the background noise, while for inactive frames in between the bitrate is reduced or even no information is transmitted. In the decoder, the background noise is remodeled using the parameters transmitted in the SID frame by a Comfort Noise Generation (CNG) algorithm. This way, transmission rate can be lowered or even zeroed for inactive frames without the user interpreting it as an interruption or end of the connection.

We describe a DTX system for discretely coded stereo signals consisting of a stereo SID and a method for CNG that generates a stereo comfort noise by modelling the spectral characteristics of the background noise in both channels as well as the degree of correlation between them, while keeping the average bitrate comparable to mono applications.

In the present document, we describe, inter alia, a new technique e.g. for DTX and CNG for discretely coded stereo signals. Instead of operating on a mono downmix of the stereo signal, noise parameters for both channels are derived, jointly coded and transmitted. In the decoder (or more in general in a multi-channel generator), three independent comfort noise signals may be mixed based on a single wide-band inter-channel coherence value that is transmitted e.g. along the two sets of noise parameters. Some of the aspects of the examples may cover, in some examples, at least one of the following aspects:.

It will be shown that examples below may be implemented in devices, apparatus, systems, methods, controllers and non-transitory storage units storing instructions which, when executed by a processor, cause the processor to carry out the disclosed techniques (e.g. methods, like sequences of operations).

In particular, at least one of the blocks below may be controlled by a controller.

Before discussing in detail the aspects of the present examples, a quick overview of some of the most important ones is provided:.

Notably, it is not necessary for the encoder to provide the complete audio signal for the inactive frame, but only the coherence value and the parametric representation of the noise shape, thereby reducing the amount of bits to be encoded in the bitstream.

<FIG> show examples of a CNG, or more in general a multi-channel signal generator <NUM>, for generating a multi-channel signal <NUM> having a first channel <NUM> and a second channel <NUM>. (In the present description, generated audio signals <NUM> and <NUM> are considered to be noise but different kinds of signals are also possible which are not noise. ) Reference is initially made to <FIG>, which is general, while <FIG> show particular examples.

A first audio source <NUM> may be a first noise source and may be indicated here to generate the first audio signal <NUM>, which may be a first noise signal. The mixing noise source <NUM> generates a mixing noise signal <NUM>. The second audio source <NUM> generates a second audio signal <NUM> which may be a second noise signal. The multi-channel signal generator <NUM> may mix the first audio signal (first noise signal) <NUM> with the mixing noise signal <NUM> and the second audio signal (second noise signal) <NUM> with the mixing noise signal <NUM>. (The first audio signal <NUM> may be mixed with a version 221a of the mixing noise signal <NUM>, and the second audio signal <NUM> may be mixed with a version 221b of the mixing noise signal <NUM>, wherein the versions 221a and 221b differ, for example, for a <NUM>% from each other; each of the versions 221a and 221b is, for example, an upscaled and/or downscaled version of a common signal <NUM>). Accordingly, a first channel <NUM> of the multi-channel signal <NUM> is obtained from the first audio signal (first noise signal) <NUM> and the mixing noise signal <NUM>. Analogously, the second channel <NUM> of the multi-channel signal <NUM> is obtained from the second audio signal <NUM> mixed with the mixing noise signal <NUM>. It is also noted that the signals may be here in the frequency domain, and k refers to the particular index or coefficient (associated with a particular frequency bin).

As can be seen from <FIG>, the first audio signal <NUM>, the mixing noise signal <NUM> and the second audio signal <NUM> may be decorrelated with each other. This may be obtained, for example, by decorrelating the same signal (e.g. at a decorrelator) and/or by independently generating noise (examples are provided below).

A mixer <NUM> is implemented for mixing the first audio signal <NUM> and the second audio signal <NUM> with the mixing noise signal <NUM>. The mixing may be of the type of adding signals (e.g. at adder stages <NUM>-<NUM> and <NUM>-<NUM>) after that the first audio signal <NUM>, the mixing noise signal <NUM> and the second audio signal <NUM> have been weighted by scaling (e.g., at amplitude elements <NUM>-<NUM>, <NUM>-<NUM>, <NUM>-<NUM>). Mixing is of the type "adding together after weighting". <FIG> show the actual signal processing that is applied to generate the noise signals Nl[k] and Nr[k] with the addition (+) element denoting the sample-wise addition of two signals (k is the index of the frequency bin).

The amplitude elements (or weighting elements or scaling elements) <NUM>-<NUM>, <NUM>-<NUM> and <NUM>-<NUM> may be obtained, for example, by scaling the first audio signal <NUM>, the mixing noise signal <NUM>, and the second audio signal <NUM> by suitable coefficients, and may output a weighted version <NUM>' of the first audio signal <NUM>, a weighted version <NUM>' of the mixing noise signal <NUM>, and a weighted version <NUM>' of the second audio signal <NUM>. The suitable coefficients may be sqrt(coh) and sqrt(<NUM>-coh) and may be obtained, for example, from coherence information encoded in signaling a particular descriptor frame (see also below) (sqrt refers here to the square root operation). The coherence "coh" is below discussed in detail, and may be, for example, that indicated with "c" or "cind" or "cq" below, e.g. encoded in a coherence information <NUM> of a bitstream <NUM> (see below, in combination with <FIG> and <FIG>). Notably, the mixing noise signal <NUM> may be subjected, for example, to a scaling by a weight which is a square root of a coherence value, while the first audio signal <NUM> and the second audio signal <NUM> may be scaled by a weight which is the square root of the value complementary to one of the coherence coh. Notwithstanding, the mixing noise signal <NUM> may be considered as a common mode signal, a portion of which is mixed to the weighted version <NUM>' of the first audio signal <NUM> and the weighted version <NUM>' of the second audio signal <NUM> so as to obtain the first channel <NUM> of the multi-channel signal <NUM> and the second channel <NUM> of the multi-channel signal <NUM>, respectively. In some cases, the first noise source <NUM> or the second noise source <NUM> may be configured to generate the first noise signal <NUM> or the second noise signal <NUM> so that the first noise signal <NUM> and/or the second noise signal <NUM> is decorrelated from the mixing noise signal <NUM> (see below with reference to <FIG>).

At least one (or each of) the first audio source <NUM>, the second audio source <NUM> and the mixing noise source <NUM>) may be a Gaussian noise source.

In the example of <FIG>, the first audio source <NUM> (here indicated with 211a) may comprise or be connected to a first noise generator, and the second audio source <NUM> (213a) may comprise or be connected to a second noise generator. The mixing noise source <NUM> (212a) may comprise or be connected to a third noise generator. The first noise generator <NUM> (211a), the second noise generator <NUM> (213a) and the third noise generator <NUM> (212a) may generate mutually decorrelated noise signals.

In examples, at least one of the first audio source <NUM> (211a), the second audio source <NUM> (213a) and the mixing noise source <NUM> (212a) may operate using a pre-stored noise table, which may therefore provide a random sequence.

In some examples, at least one of the first audio source <NUM>, the second audio source <NUM> and the mixing noise source <NUM> may generate a complex spectrum for a frame using a first noise value for a real part and a second noise value for an imaginary part. Optionally, the at least one noise generator may generate a complex noise spectral value (e.g. coefficient) for a frequency bin k using for one of the real part and the imaginary part, a first random value at an index k and using, for the other one of the real part and the imaginary part, a second random value at an index (k+M). The first noise value and the second noise value may be included in a noise array, e.g. derived from a random number sequence generator or a noise table or a noise process, ranging from a start index to an end index, the start index being lower than M, and the end index being equal to or lower than <NUM>×M (which is the double of M). M and k may be integer numbers (k being the index of the particular bit frequency bin in the frequency domain representation of the signal).

Each audio source <NUM>, <NUM>, <NUM> may include at least one audio source generator (noise generator) which generates the noise, for example, in terms of N<NUM>[k], N<NUM>[k], N<NUM>[k].

The multi-channel signal generator <NUM> of <FIG> may be used, for example, for a decoder 200a, 200b (<NUM>'). In particular, the multi-channel signal generator <NUM> can be seen as a part of the comfort noise generator (CNG) <NUM> in <FIG>. The decoder <NUM> may be used in general for decoding signals which have been encoded by an encoder, or by generating signals which to be shaped by energy information obtained from a bitstream, so as to generate an audio signal which corresponds to an original input audio signal input to the encoder. In some examples, there is a classification between the frames with speech (or in general non-void audio signals) and silence insertion descriptor frames. As explained above and below, the silence insertion descriptor frames (SID) (the so-called "inactive frames <NUM>", which may be encoded as SID frames <NUM> and/or <NUM>, for example) are provided in general below bit rate information and are therefore less frequently provided than the normal speech frames (the so-called "active frames <NUM>", see also below). Further, the information which is present in the silence insertion description frames (SID, inactive frames <NUM>) is in general limited (and may substantially correspond to energy information on the signal).

Notwithstanding, it has been understood that it is possible to complement the content of the SID frames with the multi-channel noise <NUM> generated by the multi-channel signal generator. Basically, the audio sources <NUM>, <NUM>, <NUM> may process signals (e.g., noise) which may be independent and uncorrelated with each other. The first audio signal <NUM>, the mixing noise signal <NUM> and the second audio signal <NUM> may notwithstanding be scaled by coherence information provided by the encoder and inserted in the bitstream. As can be seen from <FIG>, the coherence value may be the same of the mixing noise signal <NUM> provides a common mode signal to both the first audio signal <NUM> and the second audio signal <NUM>, hence permitting to obtain the first channel <NUM> and the second channel <NUM> of the multi-channel signal <NUM>. The coherence signal is in general a value between <NUM> and <NUM>:.

Some aspects and variants of the mixer <NUM> and/or the CNG <NUM> are now discussed.

The first audio source (<NUM>) may be a first noise source and the first audio signal (<NUM>) may be a first noise signal, or the second audio source (<NUM>) is a second noise source and the second audio signal (<NUM>) is a second noise signal. The first noise source (<NUM>) or the second noise source (<NUM>) may be configured to generate the first noise signal (<NUM>) or the second noise signal (<NUM>), so that the first noise signal (<NUM>) or the second noise signal (<NUM>) is decorrelated from the mixing noise signal (<NUM>). The mixer (<NUM>) may be configured to generate the first channel (<NUM>) and the second channel (<NUM>) so that the amount of the mixing noise signal (<NUM>) in the first channel (<NUM>) is equal to the amount of the mixing noise signal (<NUM>) in the second channel (<NUM>), or is within a range of <NUM> percent to <NUM> percent of the amount of the mixing noise signal (<NUM>) in the second channel (<NUM>) (e.g. its portions 221a and 221b are different within a range of <NUM> percent to <NUM> percent from each other and from the original mixing noise signal <NUM>).

The mixer (<NUM>) and/or the CNG <NUM> may comprise a control input for receiving a control parameter (<NUM>, c). The mixer (<NUM>) may therefore be configured to control the amount of the mixing noise signal (<NUM>) in the first channel (<NUM>) and the second channel (<NUM>) in response to the control parameter (<NUM>, c).

In <FIG>, it is shown that the mixing noise signal <NUM> is subjected to a coefficient sqrt(coh), and the first and second audio signals <NUM>, <NUM> are subjected to a coefficient sqrt(<NUM>-coh).

As explained above, <FIG> shows a CNG 220a in which the first source 211a (<NUM>), the second source 213a (<NUM>) and the mixing noise source 212a (<NUM>) comprise different generators. This is not strictly necessary, and several variants are possible.

As can be seen from <FIG>, the decoder <NUM>' (200a, 200b) may include, besides the CNG <NUM> of <FIG>, also an input interface <NUM> for receiving encoded audio data in a sequence of frames comprising an active frame and an inactive frame following the active frame; and an audio decoder for decoding coded audio data for the active frame to generate a decoded multi-channel signal for the active frame, wherein the first audio source <NUM>, the second audio source <NUM>, the mixing noise source <NUM> and the mixer <NUM> are active in the inactive frame to generate the multi-channel signal for the inactive frame.

Notably, the active frames are those which are classified by the encoder as having speech (or any other kind of non-noise sound) and the inactive frames are those which are classified to have silence or only noise.

Any of the examples of the CNG <NUM> (220a-220e) may be controlled by a suitable controller.

An encoder useful to understand the invention is now discussed. The encoder may encode active frames and inactive frames. For the inactive frames, the encoder may encode parametric noise data (e.g. noise shape and/or coherence value) without encoding the audio signal entirely. It is noted that the encoding of the inactive audio frames may be reduced with respect to the active audio frames, so as to reduce the amount of information to be encoded in the bitstream. Also the parametric noise data (e.g. noise shape) for the inactive frames may have less information for each frequency band and/or may have less bins than those encoded in the active frames. The parametric noise data may be given in the left/right domain or in another domain (e.g. mid/side domain), e.g. by providing a first linear combination between parametric noise data of the first and second channels and a second linear combination between parametric noise data of the first and second channels (in some cases, it is also possible to provide gain information which are not associated to the first and second linear combinations, but are given in the left/right domain). The first and second linear combinations are in general linearly independent from each other.

The encoder may include an activity detector which classifies whether a frame is active or inactive.

<FIG>, <FIG> and <FIG> show examples of encoders 300a and 300b (which are also referred to as <NUM> when it is not necessary to distinguish between the encoder 300a from the encoder 300b). Each audio encoder <NUM> may generate an encoded multi-channel audio signal <NUM> for a sequence of frames of an input signal <NUM>. The input signal <NUM> is here considered to be divided between a first channel <NUM> (also indicated as left channel or "I", where "I" is the letter whose capital version is "L" and is the first letter of "left" in English) and a second channel <NUM> (or "r", where "r" is the letter whose capital version is "R" and is the first letter of "right" in English).

The encoded multi-channel audio signal <NUM> may be defined in a sequence of frames, which may be, for example, in the time domain (e.g. each sample "n" may refer to a particular time instant and the samples of one frame may form a sequence, e.g., a sampling sequence of an input audio signal or a sequence after having filtered an input audio signal).

Encoder <NUM> (300a, 300b) may include an activity detector <NUM>, which is not shown in <FIG> and <FIG> (despite being in some examples implemented therein), but is shown in <FIG> shows that each frame of the input signal <NUM> may be classified either an "active frame <NUM>" or an "inactive frame <NUM>". An inactive frame <NUM> is so that the signal is considered to be silence (and, for example, there is only silence or noise), while the active frame <NUM> may have some detection of no-noise audio signal (e.g., speech, music, etc.).

In the encoded multi audio signal <NUM> as encoded (e.g., bitstream) by the encoder <NUM>, the information on whether the frame is an active frame <NUM> or a silence frame <NUM> may be signalled for example in the so-called "comfort noise generation side information" <NUM> (p_frame), also called "side information".

<FIG> shows a pre-processing stage <NUM> which may determine (e.g. classify) whether a frame is an active frame <NUM> or silent frame <NUM>. It is here noted that the channels <NUM> and <NUM> of the input signal <NUM> are indicated with capital letters, like L (<NUM>, left channel) and R (<NUM>, right channel) to indicate that they are in the frequency domain. As can be seen in <FIG>, a spectral analysis step stage <NUM> may be applied (a first spectral analysis <NUM>-<NUM> to the first channel <NUM>, L; and a second stage <NUM>-<NUM> for the second channel <NUM>, R). The spectral analysis stage <NUM> may be performed for each frame of the input signal <NUM> and may be based, for example, on harmonicity measurements. Notably, in some examples, the spectral analysis is performed by stage <NUM> on the first channel <NUM> may be performed separately from the spectral analysis performed on second channel <NUM> of the same frame. In some cases, the spectral analysis stage <NUM> may include the calculation of energy-related parameters, such as the average energy for a range of predefined frequency bands and the total average energy.

An activity detection stage <NUM> (which may be considered a voice activity detection in the case of the voice is searched for) can be applied. A first activity detection stage <NUM>-<NUM> may be applied to the first channel <NUM> (and in particular to the measurements performed on the first channel), and the second activity detection stage <NUM>-<NUM> may be applied to the second channel <NUM> (and in particular to the measurements performed on the second channel). In examples, the activity detection stage <NUM> may estimate the energy of the background noise in the input signal <NUM> and use that estimate to calculate a signal-to-noise ratio, which is compared to a signal-to-noise-ratio threshold to determine whether the frame is classified to be active or inactive (i.e. calculated signal-to-noise ratio being over the signal-to-noise-ratio threshold implying that the frame is classified as active; and calculated signal-to-noise ratio being below the signal-to-noise-ratio threshold implying that the frame is classified as inactive). In examples, the stage <NUM> may compare the harmonicity as obtained by the spectral analysis stages <NUM>-<NUM> and <NUM>-<NUM>, respectively, with one or two harmonicity thresholds (e.g., a first threshold for the first channel <NUM> and a second threshold for the second channel <NUM>). In both cases, it may be possible to classify not only each frame, but also each channel of each frame as being either an active channel or an inactive channel.

A decision <NUM> may be performed, and on the basis of it, it is possible to decide (as identified by switch <NUM>') whether to perform a discrete stereo processing 306a or a stereo discontinuous transmission processing (stereo DTX) 306b. Notably, in case of active frame (and discrete stereo processing 306a), the encoding can be performed according to any strategy or processing standard or process, and is therefore here not further analyzed in detail. Most of the discussion below will regard to the stereo DTX 306b.

Notably, in examples a frame is classified (at stage <NUM>) as inactive frame only if both channels <NUM> and <NUM> are classified as inactive by stages <NUM>-<NUM> and <NUM>-<NUM>, respectively. Therefore, problems are avoided in the activity detection decision as discussed above. In particular, it is not necessary to signal the classification of active/inactive for each channel for each frame (thereby reducing the signalling), and a synchronization between the channels is inherently obtained. Further, where the decoder is as discussed in the present document, it is possible to make use of the coherence between the first and second channels <NUM> and <NUM> and to generate some noise signals, which are correlated/decorrelated according to the coherence obtained for the signal <NUM>. Now, the elements of the encoder <NUM> (300a, 300b) which are used for encoding the inactive frame are discussed in detail. As explained, any other technique may be used for encoding the active frames <NUM>, and is therefore not discussed here.

In general terms, the encoder 300a, 300b (<NUM>) may include a noise parameter calculator <NUM> for calculating parametric noise data <NUM>, <NUM> for the first and second channels <NUM>, <NUM>. The noise parameter calculator <NUM> may calculate parametric noise data <NUM>, <NUM> (e.g. indices and/or gains) for the first channel <NUM> and the second channel <NUM>. The noise parameter calculator <NUM> may therefore provide encoded audio data <NUM> in a sequence of frames which may comprise active frames <NUM> and inactive frames <NUM> (which may follow the active frames <NUM>). In particular, in the case of inactive frames <NUM>, the encoded audio data <NUM> may be encoded as one or two silence insertion description frames (SID) <NUM>, <NUM>. In some examples (e.g. in <FIG>), there is only one single SID frame, in some other, there are two SID frames (e.g. in <FIG>).

An inactive frame <NUM> may include, in particular, at least one of:.

In some examples, a first silence insertion descriptor frame <NUM> may include the first two items of the list above, and a second silence insertion descriptor frame <NUM> may include the last two features in the specific data fields. Notwithstanding, different protocols may provide different data fields or different organization of the bitstream. However, in some cases (e.g. in <FIG>), there can be only one single inactive frame for noise parameters for both channels.

It will be shown that the coherence information (e.g., part of the "silence insertion descriptor") may include one single value (e.g., encoded in few bits, like four bits) which indicates coherence information (e.g., correlation data), e.g. the coherence between the first channel <NUM> and the second channel <NUM> of the same inactive frame <NUM>. On the other side, the comfort noise parameter data <NUM>, <NUM>, may indicate, for each channel <NUM>, <NUM>, signal energy for the inactive frame <NUM> (e.g., it may substantially provide an envelope), or anyway may provide noise shape information. The envelope or the noise shape information may be in the form of multiple coefficients for frequency bins and a gain for each channel. The noise shape information may be obtained at stage <NUM> (see below) using the original input channels (<NUM>, <NUM>) and then the mid/side encoding is done on the noise shape parameter vectors. It will be shown that in the decoder it may be possible to generate some noise channels (e.g. <NUM>, <NUM> as in <FIG>) which may be influenced by the coherence information <NUM>. The noise channels <NUM>, <NUM> generated by the CNG <NUM> (220a-<NUM>) may therefore be modified by a signal modifier <NUM> controlled by the control noise data (comfort noise parameter data <NUM>, <NUM>, <NUM>) which indicate signal energies for the first audio channel Lout and the second audio channel Rout.

The audio encoder <NUM> (300a, 300b) may include a coherence calculator <NUM>, which may obtain the coherence information (<NUM>) to be encoded in the bitstream (e.g. signal <NUM>, frame <NUM> or <NUM>). The coherence information (c, <NUM>) may indicate a coherence situation between the first channel <NUM> (e.g. left channel) and the second channel <NUM> (e.g. right channel) in the inactive frame <NUM>. Examples thereof will be discussed later.

The encoder <NUM> (300a, 300b) may include an output interface <NUM> configured for generating the multi-channel audio signal <NUM> (bitstream) with the encoded audio data for the active frame <NUM> and, for the inactive frame <NUM>, the first parametric data (comfort noise parametric data) <NUM> (p_noise,left) the second parametric noise data (p_noise,right <NUM>) and the coherence data c (<NUM>). The first parametric data <NUM> may be parametric data of the first channel (e.g. left channel) or a first linear combination of the first and second channel (e.g. mid channel). The second parametric data <NUM> may be parametric data of the second channel (e.g. right channel) or a second linear combination of the first and second channel (e.g. side channel) different from the first linear combination.

In the bitstream <NUM>, there may also be side information <NUM>, including an indication for whether the current frame is an active frame <NUM> or an inactive frame <NUM>, e.g. to inform the decoder of the decoding techniques to be used.

In particular, <FIG> shows the noise parameter calculator (compute noise parameter stage) <NUM> as including a first noise parameter calculator stage <NUM>-<NUM> in which the comfort noise parameter data <NUM> for the first channel <NUM> may be computed, and a second noise parameter calculator stage <NUM>-<NUM>, in which the second comfort noise parameter <NUM> for the second channel <NUM> may be computed. <FIG> shows an example where the noise parameters are processed and quantized jointly. Internal parts (e.g. conversion of the noise shape vectors into M/S representation) are shown in <FIG>. Basically, we may have a noise shape of the first channel M and a noise shape of the second channel S which may be encoded as mid indices and side indices, while a gain for the noise shape of the left channel <NUM> and gains for the noise shape of the right channel <NUM> may also be encoded.

A coherence calculator <NUM> may calculate the coherence data (coherence information) c (<NUM>) which indicates the coherence situation between the first channel L and the second channel R. In this case, the coherence calculator <NUM> may operate in the frequency domain.

As can be seen, the coherence calculator <NUM> may include a compute channel coherence stage <NUM>' in which coherence value c (<NUM>) is obtained. Downstream thereto, a uniform quantizer stage <NUM>" may be used. Hence, it may be obtained a quantized version cind of the coherence value c.

Here below, there are some explanations on how to obtain the coherence and how to quantize it.

The coherence calculator <NUM> may, in some examples:.

The coherence calculator <NUM> may square a smoothed real intermediate value and to square a smoothed imaginary intermediate value and to add the squared values to obtain a first component number. The coherence calculator <NUM> may multiply the smoothed first and second energy values to obtain a second component number, and combine the first and the second component numbers to obtain a result number for the coherence value, on which the coherence data is based. The coherence calculator <NUM> may calculate a square root of the result number to obtain a coherence value on which the coherence data is based. Examples of formulas are provided below.

It is now explained how the shape of the noise shape (or other signal energy) to be rendered at the decoder is obtained. What will be encoded is basically the shape (or other information relating to the energy) of the noise of the original input signal <NUM>, which at the decoder will be applied to generated noise <NUM> and will shape it, so as to render a noise <NUM> (output audio signal) which resembles the original noise of the signal <NUM>.

At first, it is noted that the signal <NUM> as such is not encoded in the bitstream <NUM> by the encoder. However, noise information (e.g., energy information, envelope information) may be encoded in the bitstream <NUM>, so as to subsequently generate a noise signal which has the noise shape encoded by the encoder.

A get noise shape block <NUM> may be applied to the input signal <NUM> of the encoder. The "get noise shape" block <NUM> may calculate a low-resolution parametrical representation <NUM> of the spectral envelope of the noise in the input signal <NUM>. This can be done, for example, by calculating energy values in frequency bands of the frequency domain representation of the input signal <NUM>. The energy values may be converted into a logarithmic representation (if necessary) and may be condensed into a lower number (N) of parameters that are later used in the decoder to generate the comfort noise. These low-resolution representations of the noise are here referred to as "noise shapes" <NUM>. Therefore, what is downstream to the "get noise shape" block <NUM> is not to be understood as representing the input signal <NUM>, but as representing its noise shape (parametric representations of the noise's spectral envelopes in the respective channels). This is important, since the encoder may only transmit this lower-resolution representation of the noise's spectral envelope in the SID frame. So, in <FIG>, all of the "Noise parameter calculator" part (<NUM>) may be understood as operating only on these noise-related parameters vectors (e.g. identified as vl, vr, vm,ind and vs,ind) and not on signal representations of the signal <NUM>.

<FIG> shows an example of the "Noise parameter calculator" part <NUM> (joint noise shape quantization). An L/R-to-M/S converter stage <NUM> may be applied to obtain the mid channel representation vm of the noise shape <NUM> (first linear combination of the noise shapes of channels L and R) and the side channel representation vr of the noise shape <NUM> (second linear combination of the noise shapes of the noise shapes of the channels L and R). Below, there will be shown a way for how to obtain it. Accordingly, the noise shape <NUM> may result to be divided onto two channels vm and vr.

Subsequently, at normalization stage <NUM>, at least one of the mid channel representation vm of the noise shape <NUM> and the side channel representation vr of the noise shape <NUM> may be normalized, to obtain a normalized version vm,n of the mid channel representation vm of the noise shape <NUM> and/or a normalized version vr,n of the side channel representation vr of the noise shape <NUM>.

Subsequently, a quantization stage (e.g. vector quantization, VQ) <NUM> may be applied to the normalized version of the signal <NUM>, e.g. in the form of a quantized version vm,ind of the normalized mid channel representation vm,n of the noise shape <NUM> and a quantized version vs,ind of the normalized side channel representation vs,n of the noise shape <NUM>. A vector quantization (e.g., through a multi-stage vector quantizer) may be used. Hence, indices vm,ind[k] (k being the index of the particular frequency bin) may describe the mid representation of the noise shape and the indices vs,ind[k] may describe the side representation of the noise shape. The indices vm,ind[k] and vs,ind[k] may therefore be encoded in the bitstream <NUM> as a first linear combination of comfort noise parameter data for the first channel and comfort noise parameter data for the second channel and a second linear combination of comfort noise parameter data for the first channel and comfort noise parameter data for the second channel.

At dequantization stage <NUM>, a dequantization may be performed on the quantized version vm,ind of the normalized mid channel representation vm,n of the noise shape <NUM> and the quantized version vs,ind of the normalized side channel representation vs,n of the noise shape <NUM>.

An M/S-to-L/R converter <NUM> may be applied to the dequantized versions of the dequantized mid and side representations vm,q and vs,q of the noise shape <NUM>, to obtain a version of the noise shape <NUM> in the original (left and right) channels v'l and v'r.

Subsequently, at stage <NUM>, gains gl and gr may be calculated. Notably, the gains are valid for all the samples of the noise shape of the same channel (v'l and v'r) of the same inactive frame <NUM>. The gains gl and gr may be obtained by taking into consideration the totality (or almost the totality) of the frequency bins in the noise shape representations v'l and v'r.

The gain gl may be obtained by comparing:.

Analogously, the gain gr may be obtained by comparing:.

An example of how to obtain the gains is proposed below. However, the gain may be, in the linear domain, for example, proportional to a geometrical average of a multiplicity of fractions, each fraction being a fraction between the coefficients of noise shape of a particular channel in the L/R domain (upstream to the L/R-to-M/S converter <NUM>) and the coefficients of the same channel once reconverted in the L/R domain downstream to the M/S-to-L/R converter <NUM>. In the logarithmic domain, for each channel the gain may be obtained as being proportional to an algebraic average between the differences between the coefficients the coefficients of the FD version of the noise shape in the L/R domain (upstream to the L/R-to-M/S converter <NUM>) and the coefficients of the noise shape once reconverted in the L/R domain downstream to the M/S-to-L/R converter <NUM>. In general, in logarithmic or scalar domain, the gain may provide a relationship between a version of the noise shape of the left or right channel before L/R-to-M/S conversion and quantization with a version of the noise shape of the left or right channel after dequantization and M/S-to-L/R reconversion.

A quantization stage <NUM> may be applied to the gain gl to obtain a quantized version thereof indicated with gl,q, to the gain gr to obtain a quantized version thereof indicated with gr,q which may be obtained from the non-quantized gain gr. The gains gl,q and gr,q may be encoded in the bitstream <NUM> (e.g. as comfort noise parameter data <NUM> and/or <NUM>) to be read by the decoder.

In some examples, it is also possible to compare the energy of the side channel noise shape vector (e.g., before being normalized, e.g., between stages <NUM> and <NUM>) with a predetermined energy threshold α (which may be a positive real value) (which in this case is <NUM>, but could also be a different value, such as a value between <NUM> and <NUM>). At a comparison block <NUM> it is possible to determine whether the side representation vs of the noise shape of the inactive frame <NUM> has enough energy. If the energy of the side representation vs of the noise shape is less than the energy threshold α, then a binary results ("no-side flag"), as side information <NUM> is signalled in the bitstream <NUM>. It is here imagined that no-side flag = <NUM> if the energy of the side representation vs of the noise shape is less than the energy threshold α, and no-side flag = <NUM> if the energy of the side representation vs of the noise shape is larger than the energy threshold α. In some cases, the flag may be <NUM> or <NUM> according the particular application in case the energy is exactly equal to the energy threshold. Block <NUM> negates the binary value of the no-side flag <NUM> (if the input of block <NUM> is <NUM>, then the output <NUM>' is <NUM>; if the input of block <NUM> is <NUM>, then the output <NUM>' is <NUM>). Block <NUM> is shown as providing as output <NUM>' the opposite value of the flag. Accordingly, if the energy of the side representation vs of the noise shape is greater than the energy threshold, then the value <NUM>' may be <NUM>, and if the energy of the side representation vs of the noise shape is less than the predetermined threshold, then the value <NUM>' is <NUM>. It is noted that the dequantized value vs,q may be multiplied by the binary value <NUM>'. This is simply one possible way for obtaining that, if the energy of the side representation vs of the noise shape is less than the predetermined energy threshold α, then the bins of the dequantized side representation vs,q of the noise shape are artificially zeroed (the output <NUM>' of the block <NUM> would be <NUM>). On the other side, if the energy of the side representation vs of the noise shape is sufficiently large (> α), then the output <NUM>' of the block <NUM> (multiplier) may be exactly the same as vs,q. Accordingly, if the energy of the side representation vs of the noise shape is less than the predetermined energy threshold α, the side representation vs of the noise shape (and in particular its dequantized version vs,q) is not taken into consideration obtaining the left/right representations of the noise shape. (It will be shown that in addition or alternative also the decoder may have a similar mechanism which zeroes the coefficients of the side representation of the noise shape). It is noted that the no-side flag may also be encoded in the bitstream <NUM> as part of the side information <NUM>.

It is to be noted that the energy of the side representation of the noise shape is shown as being measured (by block <NUM>) before normalization of the noise shape (at block <NUM>), and the energy is not normalized before comparing it to the threshold. It may, in principle, also be measured by block <NUM> after normalizing the noise shape (e.g., the block <NUM> could be input by the vs,n instead of vs).

With reference to the threshold α used for comparing the energy of the side representation of the noise shape, the value <NUM> can be, in some examples, arbitrarily chosen. In examples, the threshold α may be chosen after experimentation and tuning (e.g. through calibration). In some examples, in principle any number could be used which works for the number format (floating point or fix point) or precision of an individual implementation. Therefore, the threshold α may be an implementation-specific parameter which may be input after a calibration.

It is noted that the output interface (<NUM>) may be configured:.

In fact, a reduced resolution may be used for the inactive frames, hence further reducing the amount of bits used for encoding the bitstream. The same applies to the decoder.

Any of the examples of the encoder may be controlled by a suitable controller.

Now, decoders according to examples are discussed. A decoder may include, for example, a comfort noise generator <NUM> (220a-220e) discussed above, e.g. shown in <FIG>. The comfort noise <NUM> (multi-channel audio signal) may be shaped at a signal modifier <NUM>, to obtain the output signal <NUM>. We are here interested in showing the operations for generating the noise in the inactive frames <NUM>, and not those for the active frames <NUM>.

<FIG> shows a first example of decoder <NUM>', here indicated with <NUM>' (200b). It is noted that the decoder <NUM>' includes a comfort noise generator <NUM> which may include a generator <NUM> (220a-220e) according to any of <FIG>. Downstream to the generator <NUM> (220a-220e), a signal modifier <NUM> (not shown, but shown in <FIG>) may be present, to shape the generated multi-channel noise <NUM> according to energy parameters encoded in comfort noise parameter data (<NUM>, <NUM>). Through the decoder input interface <NUM>, the decoder <NUM>' may obtain from the bitstream <NUM> the comfort noise parameter data (<NUM>, <NUM>), which may include comfort noise parameter data describing the energy of the signal (e.g., for a first channel and a second channel, or for a first linear combination and second linear combination of the first and second channels, the first and second linear combinations being linearly independent from each other). Through the decoder input interface <NUM>, the decoder <NUM>' may obtain coherence data <NUM>, which indicate the coherence between different channels. <FIG> is shown that in the bitstream <NUM>, for the encoding of the inactive frames, there are provided two different silence descriptor frames <NUM> and <NUM>, respectively, but there is the possibility for using more than two descriptor frames, or only one single descriptor frame. The output of the decoder 200b is a multi-channel output.

With reference to <FIG>, it is now discussed a decoder <NUM>' (here called indicated with 200a) which is an example of the decoder <NUM>, which can be used for generating the output signal <NUM>, e.g. in form of noise.

At first, the decoder 200a (<NUM>') may include an input interface <NUM> for receiving the encoded audio data <NUM> (bitstream) in the sequence of frames <NUM>, <NUM>, as encoded by the encoder 300a or 300b, for example. The decoder 200a (<NUM>') may be, or more in general be part of, a multi-channel signal generator <NUM> which may be or include the comfort noise generator <NUM> (220a-220e) of any of <FIG>, for example.

At first, <FIG> shows a stereo, comfort noise generator (CNG) <NUM> (220a-220e). In particular, the comfort noise generator <NUM> (220a-220e) may be like that of <FIG> or one of its variants. Here, a coherence information <NUM> (e.g., c, or more precisely cq also indicated with "coh" or cing), as obtained from the encoder 300a or 300b may be used for generating the multi-channel signal <NUM> (in the channels <NUM>, <NUM>) which have been discussed before. The multi-channel signal <NUM> as generated by the CNG <NUM> (220a-220e) may be actually further modified, e.g. by taking into account the comfort noise parameter data <NUM> and <NUM>, e.g. noise shape information for a first (left) channel and a second (right) channel of the multi-channel signal to be shaped. In particular it will be shown that there is the possibility for obtaining the mid indices vm, ind (<NUM>) and the side indices vs, ind (<NUM>) generated by the encoder 300a (and in particular by the noise parameter calculator <NUM>) at stage <NUM> and/or <NUM>, and the gains gl,q and gr,q obtained at stage <NUM> and/or <NUM>.

As shown in <FIG>, the side information <NUM> may permit to determine whether the current frame is an active frame <NUM> or an inactive frame <NUM>. The elements of <FIG> refer to the processing of the inactive frames <NUM>, and it is intended that any technique may be used for the generation of the output signal in the active frames <NUM>, which are therefore not an object of the present document.

As shown in <FIG>, several examples of comfort noise data are obtained from the bitstream <NUM>. The comfort noise data may include, as explained above, coherence information (data) <NUM>, parameters <NUM> and <NUM> (vm, ind and vs, ind) indicating noise shape, and/or gains (gl,q and gr,q).

Stage <NUM>-C may dequantize the quantized version cind of the coherence information <NUM>, to obtain the dequantized coherence information cq.

Stage <NUM> (joint noise shape dequantization) may permit to dequantize the other comfort noise data obtained from the bitstream <NUM>. Reference can be made to <FIG>. A dequantization stage <NUM> is formed by other dequantization stages here indicated with <NUM>-M, <NUM>-S, <NUM>-R, <NUM>-L. Stage <NUM>-M may dequantize the mid channel noise shape parameters <NUM> and <NUM>, to obtain the dequantized noise shape parameters vm,q and vs,q. The stage <NUM>-S may provide the dequantized version vs,q of the side channel noise shape parameters <NUM> (vs, ind). In some examples it is possible to make use of the no-side flag, so as to zero the output of stage <NUM>-S in case the energy of the noise shape vector vs is recognized, by block <NUM> at the encoder 300a, as being less than the predetermined threshold α. In case the energy is less than the predetermined threshold α and the no-side flag signals it, the dequantized version vs,q of the noise shape vector vs may be zeroed (which conceptually is shown as a multiplication by a flag <NUM>' obtained from a block <NUM> which has the same function of encoder's block <NUM>, even though block <NUM> actually reads a no-side flag encoded in the side information of the bitstream <NUM>, without performing any comparison with the threshold α). Therefore, if the energy of side channel at the encoder has been determined as being less than the predetermined threshold α, the dequantized version vs,q of the noise shape vector vs is artificially zeroed and the value at the output <NUM>' of the scaler block <NUM> is zero. Otherwise, if the energy is greater than the predetermined threshold, then the output <NUM>' is the same of the quantized version vs, q of the side indices <NUM> (vs, ind) of the noise shape of the side channel. In other terms, the values of the noise shape vector vs, ind are neglected in case of energy of the side channel being below the predetermined energy threshold α.

At M/S-to-L/R stage <NUM>, an M/S-to-L/R conversion is performed, so as to obtain an L/R version v'l, v'r of the parametric data (noise shape). Subsequently, a gain stage <NUM> (formed by stages <NUM>-L and <NUM>-L) may be used, so that at stage <NUM>-L the channel v'l is scaled by the gain gl,d, while at stage <NUM>-R, the channel v'r is scaled by the gain gr,q. Therefore, the energy channels vl, q and vr, q may be obtained as output of the gain stage <NUM>. The stages block <NUM>-L and <NUM>-R are shown with the "+" because the transmission of the values is imagined to be in the logarithmic domain, and the scaling of values is therefore indicated in addition. However, the gain stage <NUM> indicates that the reconstructed noise shape vectors vl, q and vr, q are scaled. The reconstructed noise shape vectors vl, q and vr, q are here complexively indicated with <NUM> and are the reconstructed version of the noise shape <NUM> as originally obtained by the "get noise shape" block <NUM> at the encoder. In general terms, each gain is constant for all the indices (coefficients) of the same channel of the same inactive frame.

It is noted that the indices vm, ind, Vs, ind and gains gl,q, gr,q are coefficients of noise shape and give information on the energy of the frame. They basically refer to parametric data associated to the input signal <NUM> which are used to generate the signal <NUM>, but they do not represent the signal <NUM> or the signal <NUM> to be generated. Said another way, the noise channels vr, q and vl, q describe an envelope to be applied to the multi-channel signal <NUM> generated by the CNG <NUM>.

Back to <FIG>, the reconstructed noise shape vectors vl, q and vr, q (<NUM>) are used at the signal modifier <NUM>, to obtain a modified signal <NUM> by shaping the noise <NUM>. In particular, the first channel <NUM> of the generated noise <NUM> may be shaped by the channel vl, q at stage <NUM>-L, and the channel <NUM> of the generated noise <NUM> at at stage <NUM>-R to obtain the output multi-channel audio signal <NUM> (Lout and Rout).

In examples, the comfort noise signal <NUM> itself is not generated in the logarithmic domain: only the noise shapes may use a logarithmic representation. A conversion from the logarithmic domain to the linear domain may be performed (although not shown).

Also a conversion from frequency domain to time domain may be performed (although not shown).

The decoder <NUM>' (200a, 200b) may also comprise a spectrum-time converter (e.g. the signal modifier <NUM>) for converting the resulting first channel <NUM> and the resulting second channel <NUM> being spectrally adjusted and coherence-adjusted, into corresponding time domain representations to be combined with or concatenated to time domain representations of corresponding channels of the decoded multi-channel signal for the active frame. This conversion of the generated comfort noise into a time-domain signal happens after the signal modifier block <NUM> in <FIG>. The "combination with or concatenation to" part basically means that before or after an inactive frame which employs one of these CNG techniques, there can also be active frames (other processing path in <FIG>) and to generate a continuous output without any gaps or audible clicks etc., the frames need to be correctly concatenated.

The first number of frequency bins may be greater than the second number of frequency bins.

Any of the examples of the decoder may be controlled by a suitable controller.

The noise parameters coded in the two SID frames for the two channels are computed as in EVS [<NUM>] such as LP-CNG or FD-CNG or both. Shaping of the Noise energy in the decoder is also the same as in EVS, such as LP-CNG or FD-CNG or both.

In the encoder, additionally the coherence of the two channels is computed, uniformly quantized using four bits and sent in the bitstream <NUM>. In the decoder, the CNG operation may then be controlled by the transmitted coherence value <NUM>. Three Gaussian noise sources N<NUM>, N<NUM>, N<NUM> (211a, 212a, 213a; 211b, 212b, 213b; 211c, 212c, 213c; 211d, 212d, 213d; 211e, 212e, 213e) may be used as shown <FIG>. When the channel coherence is high, mainly correlated noise may be added to both channels <NUM>' and <NUM>', while more uncorrelated noise is added if the coherence <NUM> is low.

For all inactive frames <NUM>, parameters for comfort noise generation (Noise Parameters) may be constantly estimated in the encoder (e.g. <NUM>, 300a, 300b). This may be done, for example, by applying the Frequency-domain noise estimation algorithm (e.g. [<NUM>]) e.g. as described in [<NUM>] separately on both input channels (e.g. <NUM>, <NUM>) to compute two sets of Noise Parameters (e.g. <NUM>, <NUM>), which are also explained as parametric noise data. Additionally, the coherence (c, <NUM>) of the two channels may be computed (e.g. at the coherence calculator <NUM>) as follows: Given the M-point DFT-Spectra of the two input channels <MAT>( L, R may be be <NUM>, <NUM>) four intermediate values may be computed, e.g. <MAT> <MAT> and the energies of the two channels <MAT> <MAT>.

Here, it may be M = <NUM>, <MAT> denotes the real part of a complex number, <MAT> denotes the imaginary part of a complex number and {·}* denotes complex conjugation. These intermediate values may then be smoothed e.g. using the corresponding values from the previous frame: <MAT> <MAT> <MAT> <MAT>.

This passage may be part of the "Compute Channel Coherence" block <NUM>' at the encoder. This is a temporal smoothing of internal parameters, to avoid large sudden jumps in the parameters between frames. In other terms, a lowpass filter is applied here to the parameters.

Instead of the constants <NUM> and <NUM>, other constants within the interval <NUM> ± <NUM> and <NUM> ∓ <NUM> may be used.

In alternative, it is possible to define: <MAT> <MAT> <MAT> <MAT>.

Where β, γ ∈ [<NUM>,<NUM>] and β + γ = <NUM>, for example β = <NUM> and γ = <NUM>.

The coherence (c, <NUM>) ((which may be between <NUM> and <NUM>) may then be calculated (e.g. at the coherence calculator (<NUM>) as <MAT> and uniformly quantized (e.g. at the quantizer <NUM>") using e.g. four bits as <MAT>.

Encoding of the estimated noise parameters <NUM>, <NUM> for both channels may be done separately, e.g. as specified in [<NUM>]. Two SID frames <NUM>, <NUM> may then be encoded and sent to the decoder. The first SID frame <NUM> may contain the estimated noise parameters <NUM> of channel L and (e.g. four) bits of side information <NUM>, e.g. as described in [<NUM>]. In the second SID frame <NUM>, the noise parameters <NUM> of channel R may be sent along with the four-bit-quantized coherence value c, <NUM> (different amounts of bits may be chosen in different examples).

In the decoder (e.g. <NUM>', 200a, 200b), both SID frame's noise parameters (<NUM>, <NUM>) and the first frame's side information <NUM> may be decoded, e.g. as described in [<NUM>]. The coherence value <NUM> in the second frame may be dequantized in stage <NUM>-C as <MAT> (in <FIG>, ĉ is substituted by cq).

For comfort noise generation (e.g., at generator <NUM> or any of generators 220a-220e, which may include one of any of <FIG>), according to an example three Gaussian noise sources <NUM>, <NUM>, <NUM> may be used as shown in <FIG>. The noise sources <NUM>, <NUM>, <NUM> may be adaptively summed together (e.g. at adder stages <NUM>-<NUM> and <NUM>-<NUM>) e.g. based on the coherence value (c, <NUM>). The DFT-spectra of the left and right channel noise signals Nl[k], Nr[k] may be computed as <MAT> <MAT> with k ∈ {<NUM>, <NUM>,. , M - <NUM>} (which is the index of the particular frequency bin, while each channel has M frequency bins) and j<NUM> = -<NUM> (i.e. j is the imaginary unit), and "×" is the normal multiplication. Here, "frequency bin" refers to the number of complex values in the spectra Nl and Nr, respectively. M is the transform length of the FFT or DFT that is used, so the length of the spectra is M. It is noted that the noise inserted in the real part and the noise inserted in the imaginary part may be different. So for a spectrum length of M, we need <NUM>×M values (one real and one imaginary) generated from each noise source. Or in other words: Nl and Nr are complex-valued vectors of length M, while N1, N2 and N3 are real-valued vectors of length <NUM>×M.

Afterwards, the noise signal <NUM> in the two channels are spectrally shaped (e.g. within stages <NUM>-L, <NUM>-R in <FIG>) using their corresponding noise parameters (<NUM>) decoded from the respective SID frame and subsequently transformed back to the time domain (e.g. as described in [<NUM>]) for the frequency-domain comfort noise generation.

Any of the examples of the processing may be performed by a suitable controller.

Aspects of the processing steps as discussed above may be integrated with at least one of the aspects below. It is here mainly referred to <FIG> and <FIG>, but it could also be referred to <FIG>.

A block diagram of the generic framework of the encoder is depicted in <FIG>. For each frame at the encoder, the current signal may be classified as either active or inactive by running a VAD on each channel separately as described in [<NUM>]. The VAD decision may then be synchronized between the two channels. In examples, a frame is classified as an inactive frame <NUM> only if both channels are classified as inactive. Otherwise, it is classified as active and both channels are jointly coded in an MDCT-based system using band-wise M/S as described in [<NUM>]. When switching from an active frame to an inactive frame, the signals may enter the SID encoding path as shown in <FIG>.

Parameters (e.g. <NUM>, <NUM>, <NUM>, ql,q, gr,q) for comfort noise generation (e.g. Noise Parameters) may be constantly estimated in the encoder (e.g. <NUM>, 300a, 300b) for both active and inactive frames (<NUM>, <NUM>). This may be done, e.g., by applying a Frequency-domain noise estimation process like the one discussed in [<NUM>] and/or as described in [<NUM>], e.g. separately on both input channels <NUM>, <NUM> to compute two sets of Noise Parameters, including spectral noise shapes (Mi <NUM> and/or Is or <NUM>), e.g. in logarithmic domain for each channel.

Additionally, the coherence (<NUM>, c) of the two channels may be computed (e.g. in the coherence calculator <NUM>) as follows: Given the M-point DFT-Spectra of the two input channels <MAT>, four intermediate values may be computed, being <MAT> <MAT> and the energies of the two channels <MAT> <MAT>.

Here, it may be M = <NUM> (other values for M may be used), <MAT> denotes the real part of a complex number, <MAT> denotes the imaginary part of a complex number and {·}* denotes complex conjugation. These intermediate values are then smoothed on a <NUM>-subframe basis. With {·}previous denoting the corresponding value from the previous subframe, the smoothed values may be computed as: <MAT> <MAT> <MAT> <MAT>.

in alternative, it is possible to define: <MAT> <MAT> <MAT> <MAT>.

Where β, γ ∈ [<NUM>, <NUM>] and β + γ = <NUM>, for example β = <NUM> and γ = <NUM> (β > γ, e.g. β > <NUM> × γ, or β > <NUM> ×γ).

The coherence c ∈ [<NUM>, <NUM>] may then be calculated (e.g. at <NUM>') as <MAT> and uniformly quantized (e.g. at <NUM>") using four bits (but different amounts of bits are possible) as <MAT> where <MAT> denotes rounding down to the nearest integer (floor function).

The encoding of the estimated noise shapes of both channels can be done jointly. From the left (vl) and right (vr) channel noise shapes, different channels may be obtained (e.g., through linear combination), such as a mid channel(vm) noise shape and a side channel (vs) noise shape may be computed, (e.g. at block <NUM>) as <MAT> <MAT> where N denotes the length of the noise shape vectors (e.g. for each inactive frame <NUM>), e.g. in the frequency domain. N denotes the length of the noise shape vector e.g. as estimated as in EVS [<NUM>], which can be between <NUM> and <NUM>. The noise shape vectors can be seen as a more compact representation of the spectral envelope of the noise in an input frame. Or, more abstractly, a parametric spectral description of the noise signal using N parameters. N is not related to the transform length of an FFT or a DFT.

These noise shapes may then be normalized (e.g. at stage <NUM>) and/or quantized. For example, they may be vector-quantized (e.g. at stage <NUM>), e.g. using Multi-Stage Vector Quantizers (MSVQ) (an example is described in [<NUM>, p <NUM>]).

The MSVQ used at stage <NUM> to quantize the vm shape (to obtain vm, ind <NUM>) may have <NUM> stages (but another number of stages is possible) and/or use <NUM> bits (but another amount of bits is possible), e.g. as implemented for mono channels in [<NUM>], while the MSVQ used, at stage <NUM>, to quantize the vs shape (to obtain vs, ind <NUM>) may have been reduced to <NUM> stages (or in any case a number of stages less than the number of stages used at stage <NUM>) and/or may use in total <NUM> bits (or in any case an amount of bits less than the amount of bits used at stage <NUM> for coding the shape vm).

Codebook indices of the MSVQs may be transmitted in the bitstream (e.g. in the data <NUM>, and more in particularly in the comfort noise parameter data <NUM>, <NUM>). The indices are then dequantized resulting in the dequantized noise shapes vm, q and vm, q.

In the case of the background noise being a single noise source in the center of the stereo image, the estimated noise shapes of both channels vm, vs are expected to be very similar or even equal. The resulting S channel noise shape will then contain only zeros. However, the vector quantizer (stage <NUM>) used to quantize vs current implementation may be such that it cannot model an all-zero vector and after dequantization, the dequantized vs noise shape (vs, q) could result to not be all-zero anymore. This can lead to perceptual problems with representing such centered background noises. To circumvent this shortcoming of the VQ <NUM>, a no_side value (no_side flag) may be computed (and may also be signalled in the bitstream) depending on the energy of the unquantized vs shape vector (e.g., the energy of the vs noise shape vector after stage <NUM> and/or before stage <NUM>). The no_side flag may be: <MAT>.

The energy threshold α could be, just to give an example, <NUM> or another value in the interval [<NUM>, <NUM>]. However, the threshold α may be arbitrary and in an implementation may be dependent on the number format used (e.g. fix point or floating point) and/or on possibly used signal normalizations. In examples, a positive real value could be used, depending on how harsh the employed definition of a "silent" S channel is. Therefore, the interval may be (<NUM>, <NUM>). no_side value may be used to indicate whether an vs noise shape should be used for reconstructing the vl and vr channel noise shapes (e.g. at the decoder). If no_side is <NUM>, the dequantized vs shape is set to zero (e.g. by scaling the channel vs, q by the value of <NUM>' in <FIG>, which is a logical value NOT(no_side)). no_side is transmitted (signalled) in the bitstream <NUM>, e.g. as side information <NUM>. Subsequently, inverse M/S-transform (e.g. stage <NUM>) may be applied to the dequantized noise shape vectors vm, q and vs, q (the latter being substituted, for example, by <NUM> in case the energy is low, hence indicated with <NUM>' in <FIG>), to get the intermediate vectors v'l and v'ras: <MAT> <MAT>.

Using these intermediate vectors v'l and v'r and the unquantized noise shape vectors vland vr, two gain values are computed as <MAT> <MAT>.

The two gain values may then be linearly quantized (e.g. at stage <NUM>) as <MAT> other quantizations are possible).

The quantized gains may be encoded in the SID bitstream (e.g. as part of the comfort noise parameter data <NUM> or <NUM>, and more in particular gl,q may be part of the first parametric noise data, and gr,q may be part of the second parametric noise data), e.g. using seven bits for the gain value gl,q and/or seven bits for the gain value gr,q (different amounts are also possible for each gain value).

In the decoder (e.g. <NUM>', 200a, 200b), the quantized noise shape vectors (e.g., part of the comfort noise parameter data <NUM> or <NUM>, and more in particular of the first parametric noise data and the second parametric noise data) may be dequantized, e.g. at stage <NUM> (in particular, in any of substages <NUM>-M, <NUM>-S).

The gain values may be dequantized, e.g. at stage <NUM> (in particular, in any of substages <NUM>-L, <NUM>-R) as <MAT> <MAT> (the value <NUM> depends on the quantization, and may be different with different quantizations). (In <FIG>, gl,d and gr,d are used instead of gl,deq and gr,deq).

The coherence value <NUM> may be dequantized (e.g. at stage <NUM>-C) as <MAT>.

If no_side flag (in the side information <NUM>) is <NUM>, the dequantized vs shape vs, q is set to zero (value <NUM>') before calculating the intermediate vectors v'l and v'r (e.g. at stage <NUM>). The corresponding gain value is then added to all elements of the corresponding intermediate vector to generate the dequantized noise shapes vl, q and vr, q complexively indicated with <NUM>) as <MAT> <MAT> (The addition is because we are in the logarithmic domain and corresponds to a multiplication with a factor in the linear domain.

For comfort noise generation, three gaussian noise sources N<NUM>, N<NUM>, N<NUM> (e.g. 211a, 212a, 213a in <FIG>, 211b, 212b, 212c in <FIG>, etc.) may be used as shown in any of <FIG> (or any of the other techniques may be used). When the channel coherence is high, mainly correlated noise is added to both channels, while more uncorrelated noise is added if the coherence is low.

Using the three noise sources, DFT-spectra of the left and right channel noise signals Nl (<NUM>) and Nr (<NUM>) may be computed as <MAT> <MAT> with k ∈ {<NUM>, <NUM>,. , M - <NUM>} and j<NUM> = -<NUM>. Here, M denotes the blocklength of the DFT. To generate independent noise in both the real and the imaginary part of the complex spectrum, <NUM>×M values (two for one frequency bin) per frame have to be generated by each noise source. Therefore, N<NUM>, N<NUM> and N<NUM> (at respectively <NUM>, <NUM>, <NUM> in <FIG>) can be seen as real-valued noise vectors having a length of <NUM>×M while Nr and Nk (respectively at <NUM>, <NUM>) are complex-valued vectors of length M.

Afterwards, the noise signals in the two channels may be spectrally shaped (e.g. at the signal modifier <NUM>) using their corresponding noise shape (vl, q or vr, q) decoded from the bitstream <NUM> and subsequently transformed back from the logarithmic domain to the scalar domain, and from the frequency domain to the time domain, e.g. as described in [<NUM>] to generate a stereophonic comfort noise signal.

The present invention provides a technique for stereo comfort noise generation especially suitable for discrete stereo coding schemes. By jointly coding and transmitting noise shape parameters for both channels, stereo CNG can be applied without the need for a mono downmix.

Together with the two individual sets of noise parameters, the mixing of one common and two individual noise sources controlled by a single coherence value allows for faithful reconstruction of the background noise's stereo image without needing to transmit fine-grained stereo parameters which are typically only present in parametric audio coders. Since only this one parameter is employed, encoding of the SID is straightforward without the need for sophisticated compression methods while still keeping the SID frame size low.

In some examples, at least one of the following aspects is obtained:.

The insertion of a common noise source for the two channels to imitate the correlated noise for generating the final comfort noise plays an important role on imitating stereophonic background noise recording.

Embodiments of the invention can also be considered as a procedure to generate comfort noise for stereophonic signal by mixing three Gaussian noise sources, one for each channel and the third common noise source to create correlated background noise, or additionally or separately, to control the mixing of the noise sources with the coherence value that is transmitted with the SID frame, or additionally or separately, as follows: In a stereo system, generating the background noise separately leads to completely uncorrelated noise which sounds unpleasant and is very different from the actual background noise causing abrupt audible transitions when we switch to/from active mode background to DTX mode backgrounds. In an embodiment, at the encoder side, additionally to the noise parameters the coherence of the two channels is computed, uniformly quantized and added to the SID frame. In the decoder, the CNG operation is then controlled by the transmitted coherence value. Three Gaussian noise sources N_1, N_2, N_3 are used; when the channel coherence is high, mainly correlated noise is added to both channels, while more uncorrelated noise is added if the coherence is low.

An encoded signal can be stored on a digital storage medium or a non-transitory storage medium or can be transmitted on a transmission medium such as a wireless transmission medium or a wired transmission medium such as the Internet.

Other embodiments comprise the computer program for performing one of the methods described herein, stored on a machine readable carrier or a non-transitory storage medium.

Claim 1:
Multi-channel signal generator (<NUM>) for generating a multi-channel signal (<NUM>) having a first channel (<NUM>) and a second channel (<NUM>), comprising:
a first audio source (<NUM>) for generating a first audio signal (<NUM>);
a second audio source (<NUM>) for generating a second audio signal (<NUM>);
a mixing noise source (<NUM>) for generating a mixing noise signal (<NUM>); and
a mixer (<NUM>) for mixing the mixing noise signal (<NUM>) and the first audio signal (<NUM>) to obtain the first channel (<NUM>) and for mixing the mixing noise signal (<NUM>) and the second audio signal (<NUM>) to obtain the second channel (<NUM>), wherein the mixer (<NUM>) comprises:
a first amplitude element (<NUM>-<NUM>) for influencing an amplitude of the first audio signal (<NUM>);
a first adder (<NUM>-<NUM>) for adding an output signal (<NUM>) of the first amplitude element and at least a portion of the mixing noise signal (<NUM>);
a second amplitude element (<NUM>-<NUM>) for influencing an amplitude of the second audio signal (<NUM>);
a second adder (<NUM>-<NUM>) for adding an output (<NUM>) of the second amplitude element (<NUM>-<NUM>) and at least a portion of the mixing noise signal (<NUM>),
wherein an amount of influencing performed by the first amplitude element (<NUM>-<NUM>) and an amount of influencing performed by the second amplitude element (<NUM>-<NUM>) are equal to each other or the amount of influencing performed by the second amplitude element (<NUM>-<NUM>) is different by less than <NUM> percent of the amount performed by the first amplitude element (<NUM>-<NUM>),
characterized in that the mixer (<NUM>) comprises a third amplitude element (<NUM>-<NUM>) for influencing an amplitude of the mixing noise signal (<NUM>),
wherein an amount of influencing performed by the third amplitude element (<NUM>-<NUM>) depends on the amount of influencing performed by the first amplitude element (<NUM>-<NUM>) or the second amplitude element (<NUM>-<NUM>), so that the amount of influencing performed by the third amplitude element (<NUM>-<NUM>) becomes greater when the amount of influencing performed by the first amplitude element or the amount of influencing performed by the second amplitude element (<NUM>-<NUM>) becomes smaller.