METHOD AND APPARATUS FOR SUPPRESSING ACOUSTIC BACKGROUND NOISE IN A COMMUNICATION SYSTEM

Abstract: A method and apparatus for suppressing acoustic background noise in a communication system. An operating signal-to-noise ratio (SNR) level is reliably evaluated from channel energy (293) and background noise energy (294) values by a SNR level estimator (295). A minimum gain factor and a gain slope are adapted (290) depending on the operating SNR level. Using these adapted values and the channel SNR, the channel gain is selected (233). When the channel SNR is below a certain threshold, the channel is completely noise-like and the gain factor selected is minimum so that the channel is maximally attenuated. When the channel SNR is fairly high, the channel gain selected is 0 dB. For intermediate values of channel SNR, the gain factor selected lies between minimum and 0 dB.

Description: METHOD AND APPARATUS FOR SUPPRESSING ACOUSTIC BACKGROUND NOISE IN A COMMUNICATION SYSTEM Field of the Invention The present invention relates generally to noise suppression and, more particularly, to noise suppression in a communication system. Background of the Invention Noise suppression techniques in a communication system are well known. The goal of a noise suppression technique is to reduce the amount of background noise during speech coding so that the overall quality of the coded speech signal presented to the user is improved. Communication systems which implement speech coding include, but are not limited to, voice mail systems, cellular radiotelephone systems, trunked communication systems, airline communication systems, etc. One noise suppression technique, which has been implemented in cellular radiotelephone systems, is spectral subtraction. In this technique, the audio input is divided into individual spectral bands (channels) by a suitable spectral divider and the individual spectral channels are then attenuated according to the noise energy content of each channel. The spectral subtraction approach utilizes an estimate of the background noise power spectral density to generate a signal-to-noise ratio of the speech in each channel (channel SNR), which in turn is used to compute a gain factor for each individual channel. The gain factor is then used as an input to modify the channel gain for each of the individual spectral channels. The channels are then recombined to produce the noise- suppressed output waveform. US Pat. No. 4,811 ,404 to Vilmur, and the US Pat. No. 5,659,622, to Ashley, both assigned to the assignee of the present application, both incorporated by reference herein, each disclose a method and apparatus for suppressing acoustic background noise in a communication system. An example of the spectral subtraction approach implemented in an analog cellular radiotelephone system is found in US Pat. No. 4,811 ,404 assigned to Vilmur. In prior art as exemplified by US Pat. No. 4,811 ,404, the minimum gain (or maximum attenuation) factor applied to any channel is fixed at a constant value. A channel that is deemed to be completely noise-like (low SNR values) is assigned this minimum gain factor so that it is maximally attenuated. On the other hand, a channel, which is deemed to be completely voice-like (high SNR values), will be assigned a gain factor of 1.0 (0 dB) so that it is not attenuated at all. A channel, which is somewhat voice-like (intermediate SNR values), will be assigned a gain factor between the minimum value and 1.0. The choice of the minimum gain factor is based on the following two conflicting requirements: 1 ) The minimum gain factor should be low enough so that the background noise is attenuated sufficiently thereby rendering the noise-suppressed speech more pleasing to listen to. 2) The minimum gain factor should be high enough so that any unintentional but unavoidable suppression of weak speech sounds does not cause serious degradation to speech intelligibility. A typical choice for the minimum gain factor value is 0.2239 (-13 dB). The above approach with a fixed minimum gain factor value works reasonably well when the overall speech signal power to the background noise power ratio, i.e., SNR, is reasonably high, e.g., 15 dB or higher. But recently the use of wireless telephony is becoming so widespread that the demands placed on noise suppressor performance in acoustically harsher environments are ever increasing. For example, locations such as airports and train stations, as well as in-vehicle hands-free applications, are rapidly becoming normal operating environments for wireless telephony. The impact is that the normal expected signal-to-noise ratios (SNR's) are getting worse, and that the prior art noise suppression technology was not designed to cope with these harsher operating environments. Thus, a need exists for a more robust noise suppression system for use in communication systems that provide higher quality in these harsher environments. Brief Description of the Drawings FIG. 1 generally depicts a block diagram of a speech coder for use in a communication system. FIG. 2 generally depicts a block diagram of a noise suppression system in accordance with the invention. FIG. 3 generally depicts the relationship between channel SNR (dB) and channel gain factor (dB). Summary of the Invention The present invention provides a method for suppressing acoustic background noise in a communications system, the method comprised of estimating a signal component and a noise component of an input signal to produce a signal-to-noise ratio estimate; determining a maximum noise attenuation factor based on at least the signal-to-noise ratio estimate; generating a gain function based on at least the maximum noise attenuation factor; and applying the gain function to the input signal to produce a noise suppressed signal for use in the communications system. Detailed Description of a Preferred Embodiment A noise suppression system implemented in a communication system provides an improved level of quality during low signal-to-noise ratio (SNR) conditions thereby extending the SNR range over which noise suppression is useful. As shown in Fig. 2, the noise suppression system 109, inter alia, incorporates an adaptation block 290 that adapts the minimum gain factor value depending on the operating SNR level. As the SNR level falls, the minimum gain factor value is increased. Although this has the effect of reducing background noise attenuation, weak speech sounds, which are hard to detect in a low SNR situation, are not suppressed thereby leading to higher intelligibility and overall improvement in quality. The operating SNR level 292, which serves as the input to the adaptation block 290, is reliably evaluated from channel energy 293 and background noise energy 294 values by the SNR level estimator 295. The channel gain calculator 233 computes the gain factor to be applied to each channel based on the channel SNR. It uses two parameters, viz., MIN_GAIN (dB) and GAIN_SLOPE (dB/dB). With reference to Fig. 3, the operation of the channel gain calculator 233 can be explained as follows. When the channel SNR (dB) is below a certain threshold (CH_SNR_THLD), i.e., the channel is completely noise-like, the gain factor selected is minimum, i.e., MIN_GAIN so that the channel is maximally attenuated. On the other hand, when the channel SNR is fairly high, i.e., the channel is almost voice-like, the channel gain selected is 0 dB (i.e., 1.0 in linear scale) so that the channel is not attenuated at all. For intermediate values of channel SNR, i.e., when the channel is partly voiced, the gain factor selected lies between MIN_GAIN and 0 dB. The channel gain computation (in dB) can be expressed as: ch_gain = MIN_GAIN + GAIN_SLOPE * (ch_snr - CH_SNR_THLD); (1 ) if (ch_gain < MIN_GAIN), ch_gain = MIN_GAIN; (2) if (ch_gain > 0), ch_gain = 0; (3) Typical values for the different parameters used in the channel gain computation are: MIN_GAIN = -13 dB, GAIN_SLOPE = 0.39, and CH_SNR_THLD = 2.25 dB. The above approach for computing channel gain factors works well when the speech signal power to the background noise power ratio (SNR) is fairly high, e.g., 15 dB or higher. In this case, there is clearer separation between speech and noise. The background noise is strongly attenuated (by -MIN_GAIN dB), the strong speech sounds are practically unattenuated, and the weak speech sounds are slightly attenuated (primarily the noisy channels). Speech quality is enhanced because the background noise is suppressed and there is no serious degradation in speech intelligibility. When the noise suppressor 109 is required to perform at lower SNR levels, however, the above approach for computing the gain factors turns out to be unsatisfactory. At lower SNR levels, the separation between speech and noise is unclear especially for weak speech sounds. Consequently, such sounds are attenuated resulting in loss of intelligibility. Even though the background noise is attenuated, the loss of intelligibility causes the overall speech quality to degrade. In order to improve the noise suppressor performance at low SNR levels, the values of MIN_GAIN and GAIN_SLOPE are adjusted such that weak speech sounds are not attenuated as much. For example, suppose the value of MIN_GAIN is increased from -13 dB to -10 dB. Even though the background noise is now not attenuated as much, there is less attenuation of weak speech sounds and corresponding loss of intelligibility. This results in an overall improvement in speech quality. The changed parameter values are, however, not optimal for higher SNR levels. The proposed solution is therefore to estimate the operating SNR level reliably and adapt the values of the parameters MIN 3AIN and GAIN_SLOPE depending on the estimated SNR level. This solution allows the noise suppressor 109 to perform well over a wider range of SNR levels satisfactorily. An implementation of the solution proposed above is described below. In order to estimate the SNR level, the speech energy and the noise energy are estimated separately in dB units and the difference between the two is taken. The speech energy in dB is a filtered version of samples of peak channel energy (dB) of voiced frames. By requiring that only voiced frames and peak channel energy are used, the effect of background noise on the speech energy estimate is minimized. The noise energy in dB is a filtered version of samples of total noise energy in all the channels of noise-only frames. Before the channel energies are used in estimating speech as well as noise energies, the effect of the pre- emphasis filter on the channel energies is removed by using pre- computed coefficients from a shape table. The shape table coefficients have been computed from the inverse squared magnitude spectrum of the pre-emphasis filter. The different variables and parameters used to describe the implementation are listed below. μ1 , μ2, δ, ε - Filter coefficients σ, Φ - Proportionality constants ch_enrg(i) - Float variable storing the channel energy, i.e., average energy in the i th frequency channel first - Static boolean variable which is true only for the first frame frame_count - Static integer variable indicating the frame number fupdate_flag - Boolean variable which overrides the update_flag and forces an update of background noise energy estimate gain_slope - Float variable storing the gain slope value, which is used in the computation of channel gain factors i - Integer variable used as an index min_gain - Static float variable storing the filtered value of the minimum gain value samples, which is used in the computation of channel gain factors min_gain_raw - Float variable storing the minimum gain value sample which is computed as function of the SNR level noise_enrg_dB - Float variable storing the noise energy sample in dB units noise_enrg_dB_filt - Static float variable storing the filtered version of the noise energy samples in dB units shape_table(i) - Float variable storing the i th shape table entry snr - Float variable storing the estimated value of the SNR level in dB units spch_enrg_dB - Float variable storing the speech energy sample in dB units spch_enrg_dB_filt - Static float variable storing the filtered version of the speech energy samples in dB units update_flag - Boolean variable indicating that the current frame is noise- only and so the background noise energy estimate can be updated vm_sum - Integer variable storing sum of the voice metrics of different channels GAIN_SLOPE_HIGH - Parameter for the highest value of gain slope INIT_FRAMES - Parameter indicating the number of initial frames which are known to be noise-only frames INIT_NOISE_ENRG_DB - Parameter for the initial noise energy value in dB INIT_SPCH_ENRG_DB - Parameter for the initial speech energy value in dB units MIN_GAIN_HIGH - Parameter for the highest value of minimum gain MIN_GAIN_LOW - Parameter for the lowest value of minimum gain NUM_CHAN - Parameter indicating the number of channels SNR_THLD - Parameter serving as a SNR threshold. A frame with a SNR larger than this value will be assigned the lowest value of minimum gain, i.e., MIN_GAIN_LOW. VM_SUM_THLD - Parameter serving as a voice metric sum threshold. A frame with a voice metric sum higher than this is considered to be significantly voiced. The steps involved in estimating the filtered speech energy are shown below. The first step is to initialize the filtered speech energy estimate to some reasonable value: if ((frame_count <= INIT_FRAMES) || (fupdate_flag == TRUE)) spch_enrg_dB_filt = INIT_SPCH_ENRG_DB; (4) The next step is to detect if the current frame is voiced by determining whether the voice metric sum exceeds a pre-selected threshold. If so, get the peak channel energy and use it as a sample in obtaining the filtered speech energy estimate. if (vm_sum > VM_SUM_THLD) { spch_enrg_dB = 10 * Iog10(maximum of [ch_enrg(i) * shape able(i)], i = 1 , 2, ... , NUM_CHAN); (5) if (spch_enrg_dB > spch_enrg_dB_filt) { spch_enrg_dB_filt = μ1 * spch_enrg_dB_filt + (1-μ1 ) * spch_enrg_dB; (6) } else { spch_enrg_dB_fiit = μ2 * spch_enrg_dB_filt + (1-μ2) * spch_enrg_dB; (7) } } Notice that the filters used are simple leaky integrators (or first order auto- regressive) and different integration constants are used depending on whether the speech energy in increasing or not. If the speech energy is increasing, the integration is fast; otherwise, it is slow. This ensures that the filtered estimate is smoother and it tracks the peak speech energy, which is more reliable in low SNR situations. If the current frame is not a voiced frame, the filtered speech energy estimate remains unchanged from the previous value. The steps involved in estimating the filtered noise energy are shown below. The first step is to initialize the filtered noise energy estimate to some reasonable value. if ((first == TRUE) || (fupdate_flag == TRUE)) noise_enrg_dB_filt = INIT_NOISE_ENRG_DB; (8) The next step is to detect if the current frame is a noise-only frame by means of the update_flag and get the total noise energy to be used as a sample in obtaining the filtered noise energy estimate. if (update_flag == TRUE) { noise_enrg_dB = 10 * Iog10(sum of [ch_enrg(i) * shape able(i)], i = , 2, ... , NUM_CHAN); (9) noise_enrg_dB_filt = δ * noise_enrg_dB_filt + (1- δ) * noise_enrg_dB; (10) } Notice that the filter used is a simple leaky integrator (or first order auto- regressive filter) and the integration constant is δ. If the current frame is not a noise-only frame, the filtered noise energy estimate remains unchanged from the previous value. The SNR level for the current frame in dB is obtained as snr = spch_enrg_dB_filt - noise_enrg_dB_filt; (11 ) Depending on the SNR level, the parameters min_gain and gain_slope are selected as follows. First, a raw value of minimum gain is computed from the SNR level and bounded to be within the limits defined by MIN_GAIN_LOW and MIN_GAIN_HIGH. min_gain_raw = MIN_GAIN_LOW + σ * (SNR_THLD -snr) (12) if (min_gain_raw < MIN_GAIN_LOW), min_gain_raw = MIN_GAIN_LOW; (13) if (min_gain_raw > MIN_GAIN_HIGH), min_gain_raw = MIN_GAIN_HIGH; (14) Next, the raw value is filtered to avoid sudden variations in the min_gain value. if (first == TRUE) { min_gain = min_gain_raw; (15) } else { min_gain = ε * min_gain + (1- ε) * min_gain_raw; (16) } The value of gain_slope is then calculated as follows. gain_slope = GAIN_SLOPE_HIGH + Φ * (MIN_GAIN_LOW - min_gain); (17) The SNR level dependent min_gain and gain_slope are used in the computation of gain factors for the different channels using (1 ), (2), and (3) in which MINJ3AIN and GAIN_SLOPE are replaced by min_gain and gain_slope respectively.

Claims: WE CLAIM: 1. A method for suppressing acoustic background noise in a communications system, the method comprised of: estimating a signal component and a noise component of an input signal to produce a signal-to-noise ratio estimate; determining a maximum noise attenuation factor based on at least the signal-to-noise ratio estimate; generating a gain function based on at least the maximum noise attenuation factor; and applying the gain function to the input signal to produce a noise suppressed signal for use in the communications system. 2. The method of claim 1 wherein the signal component is a speech component. 3. The method of claim 1 wherein the maximum noise attenuation factor is a minimum gain. 4. The method of claim 1 wherein the gain function is a gain for at least one channel. 5. The method of claim 1 , wherein the signal component of the input signal is estimated based on a filtered peak channel energy. 6. The method of claim 5, wherein the filtered peak channel energy is updated during periods when the input signal is indicative of strong signal content. 7. The method of claim 5, wherein the filtered peak channel energy is comprised of a maximum channel energy compensated for a pre- emphasis gain. 8. The method of claim 7 wherein the maximum channel energy is compensated for a pre-emphasis gain using a shape table. 9. An apparatus for suppressing acoustic background noise in a communications system comprising: a signal-to-noise level estimator for estimating a signal component and a noise component of an input signal to produce a signal-to-noise ratio estimate; an adaptation block for determining a maximum noise attenuation factor and a gain slope based on at least the signal-to-noise ratio estimate; and a gain calculator for computing a gain factor to be applied to the input signal to produce a noise suppressed signal for use in the communications system. 10. The apparatus of claim 21 wherein the signal-to-noise level estimator uses channel energy values and background noise energy values to estimate the signal and noise components of the input signal.

Inventors: ASHLEY JAMES P, RAMABADRAN TENKASI V, ASHLEY, JAMES, P., RAMABADRAN, TENKASI, V.
Applicants: MOTOROLA INC, MOTOROLA INC.
Application year: 2000
Main classification: H04B15
IPC codes: G10L21, H04B3, H04B15, H04S1