# Patent

## Title
System and method for enhancing a monaural audio signal

## Abstract

A method, system, and computer program for enhancing a signal are presented. The signal is received, and energy estimates of the signal may be determined. At least one characteristic of the signal may be inferred based on the energy estimates. A mask may be generated based, in part, on the at least one characteristic. In turn, the mask may be applied to the signal to produce an enhanced signal, which may be outputted.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
The present application is related to U.S. patent application Ser. No. 11/343,524, filed Jan. 30, 2006 and entitled “System and Method for Utilizing Inter-Microphone Level Differences for Speech Enhancement,” U.S. patent application Ser. No. 11/825,563, filed Jul. 6, 2007 and entitled “System and Method for Adaptive Intelligent Noise Suppression,” and U.S. patent application Ser. No. 12/072,931, filed Feb. 29, 2008 and entitled “System and Method for Providing Single Microphone Noise Suppression Fallback,” which all are incorporated by reference.
BACKGROUND
1. Technical Field
The present invention generally relates to audio processing. More specifically, the present invention relates to enhancing a monaural audio signal.
2. Description of Related Art
Presently, there are numerous methods for reducing background noise from speech in adverse environments. Many of these methods require multiple microphones. Techniques such as beam-forming, time-difference-of-arrival, inter-microphone level differences, and blind source separation are used to spatially filter signals from the multiple microphones to suppress noise originating from different spatial locations relative to a location of a wanted signal, such as speech.
There are also some methods for using a monaural signal to reducing background noise. For example, a noise suppressor is sometimes incorporated into speech codecs or within a telecommunications network. In these cases, the noise suppressor is commonly used to suppress only stationary or slowly time-varying background noise.
Disadvantageously, in adverse environments containing non-stationary noise, noise leakage and audio artifacts can result when using the noise suppressor. Additionally, noise originating in close proximity to a speech source may not be distinguishable from the speech source using method using the multiple microphones. Furthermore, damage to, blockage of, or mismatch between the multiple microphones may result in suboptimal performance. In these cases, a system using the multiple microphones may revert to a monaural method for noise suppression. As such, it is advantageous to have a system which may provide non-stationary noise suppression using the monaural signal, such as provided by a single microphone.
SUMMARY OF THE INVENTION
A method, system, and computer program for enhancing a signal are presented. The signal may be received by a microphone or as a downlink signal, in accordance with various embodiments. In some embodiments, the signal is converted to a frequency-domain. Energy estimates of the signal may then be determined. According to one embodiment, a speech probability distribution and a noise probability distribution are determined based on the energy estimates.
At least one characteristic of the signal may be inferred based on the energy estimates. In exemplary embodiments, the at least one characteristic may comprise a noise estimate or a signal-to-noise ratio. Various assumptions may be involved in inferring the at least one characteristic. For example, a distribution of speech energy in the signal may be assumed to be different from a distribution of noise energy in the signal. In addition, speech energy in the signal may be assumed to vary more rapidly than noise energy in the signal in various embodiments.
A mask may be generated based, in part, on the at least one characteristic. Generating the mask may include using a pitch estimate in exemplary embodiments. The mask may be applied to the signal to produce an enhanced signal. The enhanced signal may then be outputted, for example, by a speaker or as an uplink signal. According to various embodiments, the enhanced signal may be converted to a time-domain.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates an environment in which exemplary embodiments of the present invention may be practiced.
FIG. 2A is a block diagram of an exemplary audio device implementing various embodiments of the present invention.
FIG. 2B is a block diagram of a usage scenario of various exemplary embodiments of the present invention.
FIG. 3 is a block diagram of an exemplary embodiment of an audio processing system.
FIG. 4 is a block diagram of an inference engine according to exemplary embodiments.
FIG. 5 is a block diagram of an exemplary embodiment of the mask generator engine.
FIG. 6 is a flowchart of an exemplary method for enhancing a signal.



DETAILED DESCRIPTION
The present invention provides exemplary systems and methods for enhancing a monaural audio signal. In exemplary embodiments, enhancement (e.g., noise suppression) of the monaural audio signal may be achieved by converting the monaural audio signal from a time-domain to a frequency-domain, applying a mask to the monaural audio signal in the frequency-domain, and converting the signal back to the time-domain to obtain an enhanced signal in the time-domain. In some embodiments, the mask may be generated based, in part, on estimates of a signal-to-noise ratio (SNR) of the monaural audio signal. Additionally, estimates of speech and noise energies of the monaural audio signal may also be a basis for generating the mask in exemplary embodiments. Generation of the mask may be further based, in part, on a pitch estimate, in accordance with various embodiments. In exemplary embodiments, the pitch estimate may be determined from a preliminary noise suppressed signal obtained by applying a preliminary mask to the monaural audio signal. As a result, enhancement of the monaural audio signal may be realized such that wanted signals (e.g., speech) are clear and undistorted, while unwanted signals (e.g., noise) are optimally suppressed. While some embodiments of the present invention may be described in reference to operation on a cellular phone, the present invention may be practiced on any audio device.
FIG. 1 illustrates an environment 100 in which exemplary embodiments of the present invention may be practiced. As depicted, the environment 100 comprises a speech source 102, an audio device 104, and a noise source 106. The audio device 104 includes an input device 108 for receiving the monaural audio signal comprising speech and noise (i.e., a mixed signal comprising both the wanted and the unwanted signals). The audio device 104 will be discussed further in connection with FIG. 2.
According to various embodiments, the speech source 102 may be an individual providing an audio signal, such as speech. However, the speech source 102 may be substituted by any originator of a wanted signal in some embodiments. To illustrate, the wanted signal may comprise a decoded downlink signal, thus making a sender of the downlink signal the originator (e.g., see FIG. 2B).
The noise source 106 may provide stationary, non-stationary, and/or a combination of both stationary and non-stationary noise. The stationary noise may be considered to be relatively constant over time (e.g., car noise, street noise, and babble noise), while the non-stationary noise may be considered to be impulsive or rapidly changing over time (e.g., keyboard typing and music). Although only a single noise source 106 is depicted in FIG. 1, the noise source 106 may comprise any sounds from one or more locations. The noise source 106 may also include echoes and reverberation in accordance with various embodiments.
FIG. 2A is a block diagram of the exemplary audio device 104 implementing various embodiments of the present invention. The audio device 104 may comprise any device configured to receive sound, for example, cellular phones, phone handsets, phone headsets, conferencing systems, and audio recording systems. The audio device 104 may include a processor 202, a memory 204, the input device 108, an output device 206, and an audio processing system 208, which are all coupled to a bus 210. The bus 210 provides communication between the components of the audio device 104. The audio device 104 may comprise further components that are necessary for certain operations, but that are not necessarily used with respect to embodiments of the present invention. The audio processing system 208 is discussed in further detail in connection with FIG. 3.
The processor 202 is configured to execute instructions. The instructions are operational when executed by the processor 202 to direct the processor 202 to operate in accordance with the invention. The components and functions described herein may be comprised of instructions that are stored in the memory 204 or any other computer-readable storage medium. These instructions may be retrieved and executed by the processor 202. Some examples of instructions include software, program code, and firmware.
The memory 204 may permanently and/or temporarily store data, including various instructions. Some examples of the memory 204 are RAM and ROM. According to various embodiments, the memory 204 may comprise a computer readable storage medium, for example, memory devices, hard drives, disks, integrated circuits, and flash memory. Those skilled in the art are familiar with various instructions, processors, and memories.
According to various embodiments, the input device 108 may comprise any device that can convert an acoustic signal into an electric signal, for example, an acoustic-to-electric transducer (e.g., a microphone). In some embodiments, the microphone may be omnidirectional or unidirectional. The electric signal may be converted by an analog-to-digital converter (not shown) into a digital signal for processing or storage, in accordance with some embodiments. In other exemplary embodiments, the input device 108 may receive an already digitized signal, such as the decoded downlink signal.
In one exemplary embodiment, the output device 206 may comprise any device that provides an audio output to a user. The output device 206 may comprise, for example, a speaker on a conferencing device or an earpiece of a headset or handset. In another exemplary embodiment, the output device 206 may output a digitized signal which may be encoded and transmitted over a communications channel (e.g., an uplink signal).
FIG. 2B is a block diagram of a usage scenario of various exemplary embodiments of the present invention. The audio processing system 208A receives a downlink signal 212, which is enhanced and outputted by the output device 206. The signal from the speech source 102 in received by the input device 108 and enhanced by the audio processing system 208B. In turn, the enhanced signal from the speech source 102 may be transmitted as an uplink signal 214. In one embodiment, the audio processing system 208A and the audio processing system 208B are in communication such that acoustic echo cancellation or suppression may be performed on the signal from the input device 108. In another embodiment, the signal sent to the output device 206 may be modified based on the signal coming from the input device, for example, to increase audibility of the downlink signal 212 above the noise level in the environment 100 of the speech source 102. As one skilled in the art will appreciate, the audio processing system 208A and the audio processing system 208B may be combined into one system that facilitates two-way communication.
FIG. 3 is a block diagram of an exemplary embodiment of the audio processing system 208. The audio processing system 208 may comprise a frequency analysis module 302, a feature extractor module 304, an inference engine 306, a mask generator engine 308, a masking module 310, and a frequency synthesis module 312. In exemplary embodiments, the audio processing system 208 is embodied within a memory device, such as the memory 204. Although FIG. 3 describes the audio processing system 208 as including various engines and modules, fewer or more engines and modules may comprise the audio processing system 208 and/or any of the various engines and modules comprising the audio processing system 208 and still fall within the scope of various embodiments.
According to exemplary embodiments, the frequency analysis module 302 receives the monaural audio signal, for example, from the input device 108. As mentioned herein, the monaural audio signal received by the frequency analysis module 302 may comprise a decoded downlink signal. In one embodiment, the frequency analysis module 302 may be a filter bank. The frequency analysis module 302 may convert the monaural audio signal from the time-domain to the frequency-domain, such that the monaural audio signal may be separated into frequency sub-bands (also simply referred to as sub-bands).
The output of the frequency analysis module 302 may be sub-band signals that correspond to the sub-bands. According to some embodiments, the sub-band signals may result from performing a filtering operation on the monaural audio signal, where the bandwidth of the filter is narrower than the bandwidth of the monaural audio signal received by the frequency analysis module 302. Additionally, or alternatively, other filters such as short-time Fourier transform (SIFT), sub-band filter banks, modulated complex lapped transforms, cochlear models, wavelets, etc., may be used in conjunction with the frequency analysis module 302. Because most acoustic signals are complex and comprise more than one frequency, a sub-band analysis on the monaural audio signal received by the frequency analysis module 302 may be useful to determine certain characteristics of the signal within various frequency ranges during a frame (i.e., a predetermined period of time). In one embodiment, the frame is 5 milliseconds long.
The exemplary feature extractor module 304 is configured to receive the sub-band signals from the frequency analysis module 302 and determine one or more features (also referred to as cues). The cues may be used in discriminating between signals from the speech source 102 and the noise source 106. One such cue is a sub-band energy level. According to exemplary embodiments, the sub-band energy level may be an energy estimate of each of the sub-band signals over a time interval (i.e., frame) expressed in decibels. One definition of the sub-band energy level in sub-band k and frame n, Ek[n], may be a mean of a magnitude-squared sub-band signal. In exemplary embodiments, speech and noise level distributions may be estimated based on the sub-band energy levels.
In addition to the sub-band energy level, the feature extractor module 304 may calculate a wide-bandwidth sub-band energy level, in exemplary embodiments. The wide-bandwidth sub-band energy level may be an energy estimate within a frequency sub-band that has a larger bandwidth than that of individual sub-band signals outputted from the frequency analysis module 302. In exemplary embodiments, the wide-bandwidth sub-band energy level may be calculated by a weighted sum of neighboring sub-band energy levels around a center frequency sub-band. In one example, energy within an octave bandwidth may be obtained by summing, with equal weight, all sub-band energy levels within half an octave above and below the center frequency sub-band k as follows:




  
    
      
        
          
            
              
                E
                ~
              
              k
            
            ⁡
            
              [
              n
              ]
            
          
          =
          
            
              
                ∑
                
                  m
                  =
                  1
                
                nT
              
              ⁢
              
                
              
              ⁢
              
                
                  
                    E
                    m
                  
                  ⁡
                  
                    [
                    n
                    ]
                  
                
                ·
                
                  w
                  
                    k
                    -
                    m
                  
                
              
            
            
              
                ∑
                
                  m
                  =
                  1
                
                nT
              
              ⁢
              
                
              
              ⁢
              
                w
                
                  k
                  -
                  m
                
              
            
          
        
        ,
      
    
    
      
        (
        1
        )
      
    
  




where nT is a number of sub-bands, Wk=1 for |k|≦Koct/2 and zero otherwise, and Koct is a number of sub-bands per octave determined in the frequency analysis module 302. In exemplary embodiments, it may be inferred whether a given sub-band is dominated by speech or noise based on the energy level of a given sub-band and the energy level of surrounding sub-bands, for example, since speech activity may tend to produce correlated energy level changes across adjacent sub-bands.

The exemplary inference engine 306 is configured to determine a noise estimate for the audio signal. The noise estimate may comprise a stationary noise estimate, a non-stationary noise estimate, or various combinations thereof. In exemplary embodiments, the inference engine 306 may receive the sub-band energy levels, Ek[n], and the wide-bandwidth sub-band energy levels, {tilde over (E)}k[n], from the feature extractor module 304. The sub-band energy level and wide-bandwidth sub-band energy level may be combined to form a hypothesis of an instantaneous SNR (i.e., the SNR within a particular time frame) within a given sub-band using probability distributions of the wide-bandwidth sub-band energy levels over a given duration of history, in accordance with various embodiments.
In one example, the inference of the instantaneous SNR per sub-band may be obtained in two successive stages. Firstly, an initial prediction of the instantaneous SNR is made given two determined energy levels (e.g., the sub-band energy level and the wide-bandwidth sub-band energy level), which may be referred to as an observed instantaneous SNR. Secondly, adaptive smoothing of the observed instantaneous SNR may be performed, for example, using a Kalman filter. The inference engine 306 may finally generate a final noise estimate, which may be outputted to the mask generator engine 308. The inference engine 306 is discussed in further detail in connection with FIG. 4.
The exemplary mask generator engine 308 is configured to generate a mask which is applied by the masking module 310 to the audio signal. Generation of the mask may comprise generating and applying a preliminary mask to the audio signal, estimating a pitch of a resulting signal, and then, according to exemplary embodiments, modifying the mask based upon a pitch estimate, referred to as harmonic sharpening. The mask generator engine 308 is discussed in further detail in connection with FIG. 5.
In exemplary embodiments, the masking module 310 is configured to apply the mask to the sub-band signals of the audio signal. In some embodiments, the masking Module 310 up-samples the mask output of the mask generator engine 308. In some examples, a constrained linear interpolator may be used to interpolate mask values between two frames, which may limit a mask slew rate. In turn, the masking module 310 applies the mask, M(s, k), to the sub-band signals, C(s, k), from the frequency analysis module 302 such that

Senh(s,k)=C(s,k)·M(s,k),  (2)

where s and k are sample and sub-band indexes, respectively, and Senh(s, k) is an enhanced sub-band signal.

According to various embodiments, the frequency synthesis module 312 combines the enhanced sub-band signals to generate an enhanced, noise suppressed audio signal. In exemplary embodiments, the frequency synthesis module 312 converts the enhanced sub-band signals to the time-domain. The frequency synthesis module 312 may utilize an inverse of filtering operation(s) or transform performed by the frequency analysis module 302 to construct the enhanced audio signal.
Referring to FIG. 4, a block diagram of the exemplary inference engine 306 is shown in more detail. As depicted, the inference engine 306 comprises a stationary noise module 402, a non-stationary noise module 404, and a final noise module 406. The inference engine 306 is configured to generate a noise estimate, based at least in part, on stationarity (i.e., stationary and/or non-stationary).
The stationary noise module 402 may provide a stationary noise estimate based on an assumption that the noise levels change at slower rates than the speech levels. It is noted that in some embodiments, the stationary noise module 402 may comprise, or be referred to as, a minimum statistics tracker. The minimum statistics tracker is described in U.S. patent application Ser. No. 12/072,931, filed Feb. 29, 2008 and entitled “System and Method for Providing Single Microphone Noise Suppression Fallback,” which has been incorporated herein by reference. In exemplary embodiments, the stationary noise estimate may be obtained using the sub-band energy level and wide-bandwidth sub-band energy level provided by the feature extractor module 304 during speech pauses to extrapolate across regions where speech is present. One skilled in the art will recognize that various embodiments of the present invention do not need to rely on minimum statistics tracking to obtain a stationary noise estimate.
The non-stationary noise module 404 may infer the instantaneous SNR per time frame, as described herein, given a corresponding sub-band energy level and wide-bandwidth sub-band energy level provided by the feature extractor module 304. The non-stationary noise module 404 may perform several processes leading to a non-stationary noise estimate, in accordance with various embodiments.
One process that the non-stationary noise module 404 may perform includes calculating the wide-bandwidth sub-band energy level distribution of the mixed signal comprising both the wanted and the unwanted components (e.g., speech and noise). An energy level distribution for a given signal is a probability distribution as a function of energy level, which may, for example, indicate the likelihood of measuring a particular energy level in the signal at an arbitrary time. The energy level distribution may be derived from a histogram of measured energy levels over time, by an appropriate normalization. Calculating the wide-bandwidth sub-band energy level distribution of the mixed signal may be performed in an adaptive manner, for example, in order to adapt to long-term changes in the characteristics of the speech source 102 or noise source 106 (e.g., the speech source may change in volume or the noise type may change suddenly, such as from car noise to street noise). An adaptation time constant may be set for the energy level distribution and be converted to an equivalent number of frames, M. For a single sub-band, an energy level distribution, h(b), where b=1, . . . , B is the energy level bin index, may be adapted over time by accumulating energy level measurements in a “leaky” manner. As such, the adaptation of the energy level distribution may be represented as




  
    
      
        
          
            h
            ⁡
            
              (
              b
              )
            
          
          =
          
            
              h
              ⁡
              
                (
                b
                )
              
            
            +
            
              
                [
                
                  
                    (
                    
                      
                        L
                        b
                      
                      ≤
                      
                        
                          E
                          ~
                        
                        ⁡
                        
                          [
                          n
                          ]
                        
                      
                      <
                      
                        L
                        
                          b
                          +
                          1
                        
                      
                    
                    )
                  
                  -
                  
                    h
                    ⁡
                    
                      (
                      b
                      )
                    
                  
                
                ]
              
              ·
              
                1
                m
              
            
          
        
        ,
      
    
    
      
        (
        3
        )
      
    
  




where Lb and Lb+1 are lower and upper bounds in decibels for the energy level bin b, respectively, and m is similar to a time constant for a first-order leaky integrator, for example. In order to achieve a rapid initial convergence of the energy level distribution, m may be set equal to a number of frames from a start of the audio processing until m reaches M. In exemplary embodiments, once m=M, m may remain constant (e.g., m=1, 2, . . . , M, M, . . . ). In some cases, an explicit normalization of the energy level distribution may not be necessary to interpret the energy level distribution as a probability distribution since if L1=−∞, LB+1=∞, and the energy level bins are distinct and monotonically increasing, then





  
    
      ∑
      
        b
        =
        1
      
      B
    
    ⁢
    
      
    
    ⁢
    
      h
      ⁡
      
        (
        b
        )
      
    
  
  =
  1.




Another process performed by the non-stationary noise module 404 may include inferring wide-bandwidth sub-band energy level distributions of both the speech and the noise separately. In one embodiment, the speech energy level distribution may be determined, partly, by the wide-bandwidth energy level distribution of a training clean speech signal, and partly, by an overall gain of the speech component of the mixed signal (e.g., the monaural audio signal) relative to the training clean speech signal. The overall gain may be determined by maximizing a cross-correlation across energy level and sub-band indices between a wide-bandwidth energy level distribution of the training clean speech signal and a wide-bandwidth energy level distribution of the mixed signal.
In another embodiment, the overall gain may be determined, partly, by a median value across sub-bands of the difference between an upper percentile energy level (e.g., 95% level) of the mixed signal and an upper percentile energy level of the training speech. The median may be used rather than a mean to improve robustness when isolated bands are severely corrupted by noise. In exemplary embodiments, the upper percentile value may be adjusted using an external voice activity detector, based upon an average percentage of speech activity over the adaptation time constant of the energy level distribution of the mixed signal.
A noise energy level distribution may represent the wide-bandwidth sub-band energy level distribution of the noise, according to some embodiments. The noise energy level distribution may be inferred from the mixture energy level distribution. One solution that may be adequate for many noise sources assumes that noise dominates lower energy levels of the mixture distribution. By setting a percentile level between zero and one, which reflects a percentage of time that speech is expected to be absent, a noise energy level distribution, hn(b), may be obtained from the mixture distribution, hm(b), using, for example:




  
    
      
        
          
            h
            n
          
          ⁡
          
            (
            b
            )
          
        
        =
        
          {
          
            
              
                
                  
                    
                      
                        h
                        m
                      
                      ⁡
                      
                        (
                        b
                        )
                      
                    
                    
                      η
                      ·
                      
                        
                          ∑
                          
                            b
                            =
                            1
                          
                          B
                        
                        ⁢
                        
                          
                        
                        ⁢
                        
                          
                            h
                            m
                          
                          ⁡
                          
                            (
                            b
                            )
                          
                        
                      
                    
                  
                  ;
                
              
              
                
                  b
                  ≤
                  
                    η
                    ·
                    
                      
                        ∑
                        
                          b
                          =
                          1
                        
                        B
                      
                      ⁢
                      
                        
                      
                      ⁢
                      
                        
                          h
                          m
                        
                        ⁡
                        
                          (
                          b
                          )
                        
                      
                    
                  
                
              
            
            
              
                
                  0
                  ;
                
              
              
                
                  b
                  >
                  
                    η
                    ·
                    
                      
                        ∑
                        
                          b
                          =
                          1
                        
                        B
                      
                      ⁢
                      
                        
                      
                      ⁢
                      
                        
                          
                            h
                            m
                          
                          ⁡
                          
                            (
                            b
                            )
                          
                        
                        .
                      
                    
                  
                
              
            
          
        
      
    
    
      
        (
        4
        )
      
    
  




In an alternative embodiment, the noise distribution may be obtained by subtracting the speech energy level distribution from the mixture distribution.

The non-stationary noise module 404 may also infer the instantaneous SNR by factoring in that a wide-bandwidth energy level measurement or “observation” of a sub-band of the mixed signal falling into an energy level bin b may correspond to one of two conditions:

    
    
        (i) speech is present at the energy level bin b and noise is present at any energy level bin<b, or
        (ii) noise is present at the energy level bin b and speech is present at any energy level bin<b.

The observed instantaneous SNR, ISNR(b), may be determined as a function of wide-bandwidth energy level bin b, for example, as follows:

    
    






  
    
      
        
          
            ISNR
            ⁡
            
              (
              b
              )
            
          
          =
          
            
              
                
                  
                    h
                    s
                  
                  ⁡
                  
                    (
                    b
                    )
                  
                
                ·
                
                  
                    g
                    s
                  
                  ⁡
                  
                    (
                    b
                    )
                  
                
              
              +
              
                
                  
                    h
                    n
                  
                  ⁡
                  
                    (
                    b
                    )
                  
                
                ·
                
                  
                    g
                    n
                  
                  ⁡
                  
                    (
                    b
                    )
                  
                
              
            
            
              
                
                  h
                  s
                
                ⁡
                
                  (
                  b
                  )
                
              
              +
              
                
                  h
                  n
                
                ⁡
                
                  (
                  b
                  )
                
              
            
          
        
        ,
      
    
    
      
        (
        5
        )
      
    
  




where gs(b) is an expectation of ISNR(b) in condition (i) and gn(b) is the expectation of ISNR(b) in condition (ii). The expectations of ISNR(b) may be represented, for example, by:





  
    
      
        
          
            
              
                g
                s
              
              ⁡
              
                (
                b
                )
              
            
            =
            
              δ
              ·
              
                
                  ∑
                  
                    p
                    =
                    1
                  
                  
                    b
                    -
                    1
                  
                
                ⁢
                
                  
                
                ⁢
                
                  
                    (
                    
                      b
                      -
                      p
                    
                    )
                  
                  ·
                  
                    
                      h
                      n
                    
                    ⁡
                    
                      (
                      p
                      )
                    
                  
                
              
            
          
          ⁢
          
            

          
          ⁢
          and
        
        ⁢
        
          

        
      
    
    
      
        (
        6
        )
      
    
  
  
    
      
        
          
            
              g
              n
            
            ⁡
            
              (
              b
              )
            
          
          =
          
            δ
            ·
            
              
                ∑
                
                  p
                  =
                  1
                
                
                  b
                  -
                  1
                
              
              ⁢
              
                
              
              ⁢
              
                
                  (
                  
                    b
                    -
                    p
                  
                  )
                
                ·
                
                  
                    h
                    s
                  
                  ⁡
                  
                    (
                    p
                    )
                  
                
              
            
          
        
        ,
      
    
    
      
        (
        7
        )
      
    
  




where δ is a resolution of the energy level bins. In one embodiment, δ is roughly 3 decibels.

An observed variance of the instantaneous SNR, VISNR(b), may be determined by the non-stationary noise module 404, for example, by:




  
    
      
        
          
            VISNR
            ⁡
            
              (
              b
              )
            
          
          =
          
            
              
                
                  
                    h
                    s
                  
                  ⁡
                  
                    (
                    b
                    )
                  
                
                ·
                
                  
                    f
                    s
                  
                  ⁡
                  
                    (
                    b
                    )
                  
                
              
              +
              
                
                  
                    h
                    n
                  
                  ⁡
                  
                    (
                    b
                    )
                  
                
                ·
                
                  
                    f
                    n
                  
                  ⁡
                  
                    (
                    b
                    )
                  
                
              
            
            
              
                
                  h
                  s
                
                ⁡
                
                  (
                  b
                  )
                
              
              +
              
                
                  h
                  n
                
                ⁡
                
                  (
                  b
                  )
                
              
            
          
        
        ,
      
    
    
      
        (
        8
        )
      
    
  




where fs(b) is an expectation of VISNR(b) in condition (i) and fn(b) is an expectation of VISNR(b) in condition (ii). The expectations of VISNR(b) may be expressed, in exemplary embodiments, by:





  
    
      
        
          
            
              
                f
                s
              
              ⁡
              
                (
                b
                )
              
            
            =
            
              
                ∑
                
                  p
                  =
                  1
                
                
                  b
                  -
                  1
                
              
              ⁢
              
                
              
              ⁢
              
                
                  
                    
                    
                      
                        ISNR
                        ⁡
                        
                          (
                          b
                          )
                        
                      
                      -
                      
                        δ
                        ·
                        
                          (
                          
                            b
                            -
                            p
                          
                          )
                        
                      
                    
                    
                  
                  2
                
                ·
                
                  
                    h
                    n
                  
                  ⁡
                  
                    (
                    p
                    )
                  
                
              
            
          
          ⁢
          
            

          
          ⁢
          and
        
        ⁢
        
          

        
      
    
    
      
        (
        9
        )
      
    
  
  
    
      
        
          
            f
            n
          
          ⁡
          
            (
            b
            )
          
        
        =
        
          
            ∑
            
              p
              =
              1
            
            
              b
              -
              1
            
          
          ⁢
          
            
          
          ⁢
          
            
              
                
                
                  
                    ISNR
                    ⁡
                    
                      (
                      b
                      )
                    
                  
                  -
                  
                    δ
                    ·
                    
                      (
                      
                        p
                        -
                        b
                      
                      )
                    
                  
                
                
              
              2
            
            ·
            
              
                
                  h
                  s
                
                ⁡
                
                  (
                  p
                  )
                
              
              .
            
          
        
      
    
    
      
        (
        10
        )
      
    
  




The observed variance of the instantaneous SNR may indicate an expected variance of the observed instantaneous SNR, which may be used in a Kalman filter to determine the Kalman gain.

The observed instantaneous SNR, ISNR(b), which is derived from the distribution of the wide-bandwidth energy level, {tilde over (E)}[n], in the mixture, may be adjusted based on the sub-band energy level, E[n], determined by the feature extractor module 304. In one exemplary embodiment, ISNR(b) may be perturbed by an amount proportional to the spectral contrast, E[n]−{tilde over (E)}[n]. The observed variance of the instantaneous SNR, VISNR(b), may also be adjusted based upon the sub-band energy level, E[n].
A real instantaneous SNR per sub-band in the mixed signal may be modeled as the state of a Kalman filter. The transition of the state from frame-to-frame may be optimally smoothed under the assumption that the temporal dynamics of both the speech and noise energy levels, and consequently the instantaneous SNR, are constrained. The observed instantaneous SNR may be considered to be observations of the state which are corrupted by Gaussian “observation noise.” VISNR(b) may provide an estimate of the variance of the observation noise. The prediction variance of the Kalman filter, may determine the a priori probability of a particular state transition between frames. The non-stationary noise module 404 may apply the Kalman filter to obtain an optimally and temporally-smoothed version of the observed instantaneous SNR, balancing the variance of the observation noise the prediction variance of the Kalman filter, in the form of a Kalman gain.
Some embodiments may invoke a simple model for an evolution of the state x[n], such as the instantaneous SNR, from frame n−1 to n that assumes

x[n]=x[n−1]+w[n],  (11)

where w[n] ̃N[0, Q] is a process noise with prediction variance Q. In some examples, Q may be assumed to be constant based on empirical data. In turn, the observed instantaneous SNR at frame n may be measured to be, for example:

z[n]=x[n]+v[n],  (12)

where v[n] ̃N(0, R[n]) is an observation noise with variance R[n] (e.g., VISNR(b)).

Using this simple model, a prediction stage and an update stage of the Kalman filter may estimate the state x[n] given noisy observation z[n] (e.g., the observed instantaneous SNR at frame n) and the previous state x[n−1]. For example, the prediction stage may predict the state in the current frame n as

{circumflex over (x)}[n]=x[n−1].  (13)

This may be interpreted as an expectation that the instantaneous SNR may remain fairly constant on average from frame to frame. A predicted variance of the state estimate may follow as

{circumflex over (p)}[n]=p[n−1]+Q.  (14)

The update stage of the Kalman filter may comprise determining a measurement residual, the Kalman gain, an updated state estimate, and an updated variance of the state estimate. The measurement residual may be calculated, for example, as

y[n]=z[n]−{circumflex over (x)}[n].  (15)

In exemplary embodiments, the Kalman gain may be calculated as





  
    
      
        
          G
          ⁡
          
            [
            n
            ]
          
        
        =
        
          
            
              
                p
                ^
              
              ⁡
              
                [
                n
                ]
              
            
            
              
                
                  p
                  ^
                
                ⁡
                
                  [
                  n
                  ]
                
              
              +
              
                R
                ⁡
                
                  [
                  n
                  ]
                
              
            
          
          .
        
      
    
    
      
        (
        16
        )
      
    
  




In various embodiments, the updated state estimate and the updated variance of the state estimate may be determined by

x[n]=x[n]+G[n]·y[n]  (17)

and

p[n]=(1−G[n])·{circumflex over (p)}[n],  (18)

respectively. The extent to which the Kalman filter temporally smoothes the observed instantaneous SNR may be dependent on the input mixed signal and may also depend on a value set for the process variance Q.

The non-stationary noise module 404 may finally derive a non-stationary noise estimate, NNE, from the state of the Kalman filter, x[n], and the stationary noise estimate, SNE, determined in the stationary noise module 402, for example, such that




  
    
      
        
          NNE
          =
          
            max
            ⁡
            
              (
              
                SNE
                ,
                
                  
                    E
                    ⁡
                    
                      [
                      n
                      ]
                    
                  
                  
                    1
                    +
                    
                      10
                      
                        
                          (
                          
                            
                              ISNR
                              Kalman
                            
                            -
                            
                              Δ
                              SNR
                            
                          
                          )
                        
                        /
                        10
                      
                    
                  
                
              
              )
            
          
        
        ,
      
    
    
      
        (
        19
        )
      
    
  




where E[n] is a sub-band energy of the mixed signal and ΔSNR is an offset applied to x[n]. Typically, ISNR may be close or equal to zero, although in some examples, ΔSNR may be made dependent on the SNR determined for the mixture, for example, across all sub-bands.

The exemplary final noise module 406 is configured to combine the non-stationary noise estimate determined by the non-stationary noise module 404 with the stationary noise estimate determined by the stationary noise module 402 into a final noise estimate. Since the stationary noise estimate may be fairly insensitive to the SNR, and at low SNRs the non-stationary noise estimate may not be reliable, the final noise module 406 may adjust a weight given to the non-stationary noise estimate and the stationary noise estimate to optimize the final noise estimate. According to various embodiments, the final noise module 406 may provide a smooth transition in the final noise estimate from being dominated by the non-stationary noise estimate at high SNRs to being dominated by the stationary noise estimate at low SNRs.
In some embodiments, calculation of the SNR in the final noise module 406 may be based on the overall gain of the speech level determined by the interference engine 306, the energy level of a training speech signal, the noise estimate determined by the stationary noise module 402, or combinations thereof.
In some embodiments, a transition region in the SNR may be defined by a lower and an upper threshold in decibels as SNRlow and SNRhigh, respectively. A transition, or cross-fade, between the stationary noise estimate and the non-stationary noise estimate may be determined by linear interpolation in the logarithmic domain to obtain the final noise estimate as follows:

NE=w·NNE+(1−w)·SNE,  (20)

where NE is the final noise estimate and





  
    
      
        w
        =
        
          
            min
            ⁡
            
              (
              
                1
                ,
                
                  max
                  ⁡
                  
                    (
                    
                      0
                      ,
                      
                        
                          SNR
                          -
                          
                            SNR
                            low
                          
                        
                        
                          
                            SNR
                            high
                          
                          -
                          
                            SNR
                            low
                          
                        
                      
                    
                    )
                  
                
              
              )
            
          
          .
        
      
    
    
      
        (
        21
        )
      
    
  




FIG. 5 is a block diagram of an exemplary embodiment of the mask generator engine 308. The mask generator engine 308 may comprise a mask module 502, a modifier/reconstructor module 504, a pitch estimation module 506, and a harmonic sharpening module 508, according to various embodiments.
The exemplary mask module 502 is configured to generate a preliminary mask and a perceptual mask based on the final noise estimate received from the inference engine 306. It is noted that in various embodiments, the mask module 502 may comprise, or be referred to as, an adaptive intelligent suppression (AIS) generator. The AIS generator is described in U.S. patent application Ser. No. 11/825,563, filed Jul. 6, 2007 and entitled “System and Method for Adaptive Intelligent Noise Suppression,” which has been incorporated herein by reference. In one embodiment, the mask module 502 may comprise a Wiener filter. In exemplary embodiments, the preliminary mask may be subsequently used by the modifier/reconstructor module 504 and the perceptual mask may be subsequently used by the harmonic sharpening module 508, as discussed further herein.
In exemplary embodiments, the modifier/reconstructor module 504 may generate a preliminary signal (also referred to as a preliminary noise suppressed signal). As such, the modifier/reconstructor module 504 may be referred to as a preliminary signal module in various embodiments. The preliminary signal, Sprelim(s, k), may be generated by applying the preliminary mask, Mprelim(s, k), to the sub-band signals, C(s, k), from the frequency analysis module 302 such that, for example,

Sprelim(s,k)=C(s,k)·Mprelim(s,k),  (22)

where s and k are sample and sub-band indexes, respectively. According to some embodiments, the modifier/reconstructor module 504 may convert the preliminary signal to the time-domain (e.g., using an inverse of the filtering operations performed by the frequency analysis module 302) prior to outputting the preliminary signal to the pitch estimation module 506. In exemplary embodiments, reducing the noise in the signal inputted to the pitch estimation module 506 relative to the monaural input signal, may improve pitch estimation performance. In this regard, the preliminary mask generated by the mask module 502 may be optimized for subsequent pitch estimation performance, whereas the perceptual mask generated by the mask module 502 may be optimized for overall subjective quality. In other embodiments, a pitch estimation method may be applied directly to the input monaural signal, and the preliminary mask and modifier/reconstructor module 504 may be unnecessary.

The pitch estimation module 506 is configured to determine a pitch estimate based on the preliminary signal from the modifier/reconstructor module 504. In embodiments where the preliminary signal has been converted to the time-domain, an estimate of pitch in each frame may be obtained using a time-domain autocorrelation based method. In one embodiment, the time-domain autocorrelation based method may be similar to an open-loop pitch analysis in ITU-T recommendation G.729. The estimate of the pitch may be used by the harmonic sharpening module 508 as discussed herein.
The exemplary harmonic sharpening module 508 is configured to improve the SNR of the output of the system. According to various embodiments, the harmonic sharpening module 508 may modify a perceptual mask generated by the mask module 502 such that additional gain may be applied to sub-bands containing speech harmonics. The additional gain may only be applied to sub-bands containing speech harmonics that are resolvable by the frequency analysis module 302, and/or when operating at low SNRs (e.g., SNR<10 decibels). Applying positive gain to sub-bands that have much wider bandwidth than the pitch estimate, may inadvertently boost any noise that also occupies that sub-band.
The harmonic sharpening module 508 may apply a gain in decibels to a sub-band, k, neighboring a predicted speech harmonic, m, by an amount Wm(k−v), where v may be the closest sub-band in frequency to the predicted harmonic. In one simple exemplary embodiment, an additional gain may be applied only to the closest sub-band to the predicted harmonic, i.e., the gain function Wm(k−v)=0 if k≠v. Alternative gain functions may be utilized, such as where both the nearest sub-band to the harmonic and the sub-bands adjacent to the nearest sub-band have a positive gain. A harmonic sharpening mask may be computed that is equal to one everywhere except at the harmonics, at which the harmonic sharpening mask is equal to Wm(k−v) after converting from decibels to linear. The harmonic sharpening mask may be smoothed temporally, for example, by using a leaky integrator with a time constant of approximately 10 milliseconds. In exemplary embodiments, the perceptual mask and the harmonic sharpening mask may be combined to obtain a final mask to be outputted to the masking module 310. In one embodiment, the perceptual mask and the harmonic sharpening mask may be multiplicatively combined.
FIG. 6 is a flowchart of an exemplary process 600 for providing noise suppression on an audio signal. According to various embodiments, the process 600 may be performed by the audio processing system 208, the audio device 104, or any combination thereof.
At step 602, an audio signal is received. The audio signal may comprise the monaural audio signal having the wanted component (e.g., speech) and the unwanted component (e.g., noise). In some embodiments, the wanted signal may be speech, for example, emanating from the speech source 102, as described in connection with FIG. 1. In other embodiments, the audio signal may comprise the decoded downlink signal. As discussed herein, the frequency analysis module 302 may receive the audio signal, for example, from the input device 108. Furthermore, the frequency analysis module 302 may be a filter-bank, in accordance with some embodiments. The frequency analysis module 302 may also convert the audio signal from the time-domain into the frequency-domain for further processing. In one example, the audio signal may be separated into frequency sub-bands.
At step 604, energy estimates of the signal are determined. According to various embodiments, the energy estimates may be determined by the feature extractor module 304. According to one embodiment, a speech probability distribution and a noise probability distribution are determined based on the energy estimates.
At step 606, at least one characteristic of the signal is inferred based on the energy estimates. The at least one characteristic may be inferred by the inference engine 306, in accordance with various embodiments. In exemplary embodiments, the at least one characteristic comprises a noise estimate and/or a signal-to-noise ratio. Various assumptions may be involved in inferring the at least one characteristic. For example, a distribution of speech energy in the signal may be assumed to be different from a distribution of noise energy in the signal in one embodiment. Additionally, speech energy in the signal may be assumed to vary more rapidly than noise energy in the signal in some embodiments.
As discussed herein, the inference engine 306 may comprise the stationary noise module 402, the non-stationary noise module 404, the final noise module 406, and/or any combination thereof. The final noise module 406 may combine the stationary noise estimate from the stationary noise module 402 with the non-stationary noise estimate from the non-stationary noise module 404 into a final noise estimate. In some embodiments, the final noise estimate may be weighted towards the stationary noise estimate or the non-stationary noise estimate based on the estimate of the SNR of the audio signal in the final noise module 406.
At step 608, a mask based, in part, on the at least one characteristic is generated. The mask generator engine 308 may generate the mask in some embodiments. In exemplary embodiments, generating the mask may include using a pitch estimate, such as that provided by the pitch estimation module 506.
At step 610, the mask is applied to the signal to produce an enhanced signal. In exemplary embodiments, the masking module 310 may apply the mask to the signal from the frequency analysis module 302.
At step 612, the enhanced signal is outputted. The enhanced signal may then be outputted, for example, by a speaker or as an uplink signal. According to various embodiments, the enhanced signal may be converted to a time-domain, such as by the frequency synthesis module 312.
The above-described components and functions can be comprised of instructions that are stored on a computer-readable storage medium. The instructions can be retrieved and executed by a processor (e.g., the processor 202). Some examples of instructions are software, program code, and firmware. Some examples of storage medium are memory devices, tape, disks, integrated circuits, and servers. The instructions are operational when executed by the processor to direct the processor to operate in accord with the invention. Those skilled in the art are familiar with instructions, processor(s), and storage medium.
The above description is illustrative and not restrictive. Many variations of the invention will become apparent to those of skill in the art upon review of this disclosure. The scope of the invention should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims along with their full scope of equivalents.

## Claims

1. A method for enhancing a signal, the method comprising:
receiving the signal, the receiving the signal comprising converting the signal to a frequency-domain such that the signal is separated into sub-bands;
determining energy estimates of the signal for each sub-band of the signal;
calculating an energy level distribution based on the energy estimates over time, the energy level distribution being a probability distribution as a function of energy level;
determining a noise energy estimate for each sub-band of the signal and a speech energy estimate for each sub-band of the signal based on the energy level distribution;
generating a mask for each sub-band of the signal based, in part, on the noise energy estimate for each sub-band of the signal and speech energy estimate for each sub-band of the signal;
applying the mask to the signal for each sub-band of the signal to produce an enhanced signal; and
outputting the enhanced signal.

2. The method of claim 1, wherein outputting the enhanced signal comprises converting the enhanced signal to a time-domain.

3. The method of claim 1, wherein a distribution of speech energy in the signal is different from a distribution of noise energy in the signal.

4. The method of claim 1, wherein speech energy in the signal varies more rapidly than noise energy in the signal.

5. A system for enhancing a signal, the system comprising:
an input device configured to receive the signal;
a frequency analysis module configured to convert the signal to a frequency-domain such that the signal is separated into sub-bands;
a features module configured to determine energy estimates of the signal for each sub-band of the signal;
an inference engine configured to determine an energy level distribution based on the energy estimates over time, the energy level distribution being a probability distribution as a function of energy level, and the inference engine being further configured to determine a noise energy estimate for each sub-band of the signal and a speech energy estimate for each sub-band of the signal based on the energy level distribution;
a mask generator engine configured to generate a mask for each sub-band of the signal based, in part, on the noise energy estimate for each sub-band of the signal and speech energy estimate for each sub-band of the signal;
a masking module configured to apply the mask for each sub-band of the signal to the signal to produce an enhanced signal; and
an output device configured to output the enhanced signal.

6. The system of claim 5, further comprising a frequency synthesis module configured to convert the enhanced signal to a time-domain.

7. The system of claim 5, wherein the inference engine is further configured to assume that a distribution of speech energy in the signal is different from a distribution of noise energy in the signal.

8. The system of claim 5, wherein the inference engine is further configured to assume that speech energy in the signal varies more rapidly than noise energy in the signal.

9. A non-transitory computer readable storage medium having embodied thereon a program, the program being executable by a processor for performing a method for enhancing a signal, the method comprising:
receiving the signal, the receiving the signal comprising converting the signal to a frequency-domain such that the signal is separated into sub-bands;
determining energy estimates of the signal for each sub-band of the signal;
determining an energy level distribution based on the energy estimates over time, the energy level distribution being a probability distribution as a function of energy level;
determining a noise energy estimate for each sub-band of the signal and a speech energy estimate for each sub-band of the signal based on the energy level distribution;
generating a mask for each sub-band of the signal based, in part, on the noise energy estimate for each sub-band of the signal and speech energy estimate for each sub-band of the signal;
applying the mask to the signal for each sub-band of the signal to produce an enhanced signal; and
outputting the enhanced signal.

10. The non-transitory computer readable storage medium of claim 9, wherein outputting the enhanced signal comprises converting the enhanced signal to a time-domain.

11. The non-transitory computer readable storage medium of claim 9, wherein speech energy in the signal varies more rapidly than noise energy in the signal.

12. The method of claim 1, wherein applying the mask results in attenuating signal components with low energy, and preserving signal components with high energy.

13. The method of claim 1, wherein determining the energy level distribution comprises tracking one or more percentile estimates of the energy estimates over time.

14. The method of claim 1, wherein calculating the energy level distribution comprises tracking an energy histogram over time.

15. The method of claim 1, wherein determining the noise energy estimate for each sub-band of the signal and the speech energy estimate for each sub-band of the signal comprises determining a speech energy histogram and a noise energy histogram.

16. The method of claim 1, wherein determining the noise energy estimate for each sub-band of the signal and the speech energy estimate for each sub-band of the signal depends on a predetermined speech energy histogram.

17. The method of claim 1, wherein determining the noise energy estimate for each sub-band of the signal and the speech energy estimate for each sub-band of the signal is based on one or more differences between tracked percentile estimates.

18. The method of claim 1, wherein determining the noise energy estimate for each sub-band of the signal is performed by computing a non-linear function of at least one of the energy estimates for the particular sub-band, a temporally-smoothed energy estimate for the particular sub-band, and a frequency-smoothed energy estimate for the particular sub-band.