Abstract:
What is disclosed is a method and system for improving noise cancellation in a signal containing speech by classifying noise frames by their characteristics, and estimating noise based on only one classification at a time. In some instances, the disclosed method further directs the noise estimator and noise canceller to utilize only a designated noise class. Also, the disclosed system can automatically switch between pre-processing and post-processing modes in response to detected changes in acoustic environments.

Description:
FIELD OF THE INVENTION 
     The present invention relates in general to communications systems, and more particularly to methods for reducing noise in voice communications systems. 
     BACKGROUND OF THE INVENTION 
     Background noise during speech can degrade voice communications. The listener might not be able to understand what is being transmitted, and is aggravated by trying to identify and interpret speech while noise is present. Also, in speech recognition systems, errors occur more frequently as the level of background (or ambient) noise increases. 
     Substantial efforts have been made to reduce the level of ambient noise in communications systems on a real-time basis. One is to filter out the low and high bands at the extremes of the voice band. The problem with this is that much noise is located in the same frequencies as usable speech. 
     Another is to actively estimate the noise and filter it out of the associated speech. This is generally done by quantifying the signal when speech is not present (presumed to be representative of ambient noise), and subtracting out that signal during speech. If the ambient noise is consistent between periods of speech and periods of non-speech, then such cancellation techniques can be very effective. 
     A typical state-of-the-art noise cancellation (speech enhancement) system generally has three components: 
     Speech/Noise Detector 
     Noise Estimator 
     Noise Canceller 
     A standard speech enhancement system might typically operate as follows: 
     The input signal is sampled and converted to digital values, called &#34;samples&#34;. These samples are grouped into &#34;frames&#34; whose duration is typically in the range of 10 to 30 milliseconds each. An energy value is then computed for each such frame of the input signal. 
     A typical state-of-the-art Speech/Noise Detector is often implemented via a software implementation on a general purpose computer. The system can be implemented to operate on incoming frames of data by classifying each input frame as ambient noise if the frame energy is below an energy threshold, or as speech if the frame energy is above the threshold. An alternative would be to analyze the individual frequency components of the signal in relation to a template of noise components. Other variations of the above scheme are also known, and may be implemented. 
     The Speech/Noise Detector is initialized by setting the threshold to some pre-set value (usually based on a history of empirically observed energy levels of representative speech and ambient noise). During operation, as the frames are classified, the threshold can be adjusted to reflect the incoming frames, thereby creating a better discrimination between speech and noise. 
     A typical state-of-the-art Noise Estimator is then utilized to form a quantitative estimate of the signal characteristics of the frame (typically described by its frequency components). This noise estimate is also initialized at the beginning of the input signal and then updated continuously during operation as more noise signals are received. If a frame is classified as noise by the Speech/Noise Detector, that frame is used to update the running estimate of noise. Typically, the more recent frames of noise received are given greater weight in the computation of the noise estimate than older, &#34;stale&#34; noise frames. 
     The Noise Canceller component of the system takes the estimate of the noise from the Noise Estimator, and subtracts it from the signal. A state-of-the-art cancellation method is that of &#34;spectral subtraction&#34;, where the subtraction is performed on the frequency components of the signal. This may be accomplished using either linear or non-linear means. 
     Effectiveness of the overall noise-cancellation system in enhancing the signal, i.e. enhancing the speech, is critically dependent on the noise estimate; a poor or inappropriate estimate will result in the benign error of negligible enhancement, or the malign error of degradation of the speech. 
     Existing noise reduction systems realize a degradation in performance when there are two or more types of ambient noise, but only one type is representative of ambient noise during speech (target noise). In such a situation, state-of-the-art systems average these noise types together, and perform noise cancellation based on the average, which is not representative of target noise. Alternatively, existing systems would gradually replace the noise estimate of an earlier type with the more recently observed type, even though the earlier type may be more representative of target noise. 
     Such situations may involve hands-free operations where squelch (noise suppression) is applied to the signal received at the microphone, until speech is detected. Squelch is applied to avoid an echo effect. When a system utilizes squelch technology, one type of noise is observed at the far end while squelch is activated, and another type when squelch is not activated. Only the latter type of noise is representative of ambient noise during speech (target noise). 
     Another problem occurs in situations involving dynamically directional microphones and voice-activated microphones. In each case, the ambient noise during speech will more closely approximate the noise immediately following speech than the noise immediately preceding speech. This is due to the fact that the environment picked up by microphones for input into the system changes radically once speech begins, but doesn&#39;t return to the initial state until some period of time following speech. Therefore, current systems would use the unrepresentative noise prior to speech to enhance the speech, resulting in poor performance. 
     Another problem situation occurs when a speaker moves the microphone (telephone mouthpiece) closer to the mouth as the speaker begins speaking. The changed spatial relationship between the microphone and the speaker&#39;s head causes an acoustical change in ambient noise entering the microphone. Only the noise present when the mouthpiece is close to the mouth is representative of target noise. 
     Another difficulty with present systems is the occurrence of transient noise (e.g., a cough or a slamming door). Current systems would automatically average the transient noise with the general ambient noise. This will tend to degrade the noise estimate. 
     Finally, some systems have the capability of noise-cancellation on a post-processing basis. This is accomplished by storing speech and then using an estimate of noise for cancellation purposes on the stored speech. Sometimes a post-processing arrangement can be worthwhile, but other times is unnecessary. Existing systems cannot automatically switch between the two in real-time, and therefore cannot handle situations where pre-processing is sometimes appropriate and post-processing is sometimes appropriate. 
     BRIEF DESCRIPTION OF THE INVENTION 
     The foregoing drawbacks are overcome by the present invention. 
     What is disclosed is a method and system of noise cancellation which can be used to provide effective speech enhancement in environments involving situations where there is more than one type of noise present. 
     An implementation of the method and system is briefly described as follows: 
     A standard noise cancellation system can be modified such that a speech/noise detector performs further analysis on incoming signal frames. This analysis would identify speech, stable noise, and &#34;other&#34;, and would further classify stable noise into classes constructed from similar contiguous frames. 
     The detector (which is now a &#34;classifier&#34;) informs a supervisory controller of its results. The supervisory controller then determines the class of noise which is most representative of target noise, and directs the noise estimator to calculate an estimate using only frames from that noise class as input. 
     Further, the controller may direct the canceller to access the stored signal, and re-perform its cancellation on the entire stored signal based on a noise estimate from a designated noise class. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 represents a noise signal where the mouthpiece is changed in relationship to the mouth immediately prior to and subsequent to speech. 
     FIG. 2 is a block diagram of a typical existing noise reduction system. 
     FIG. 3 is a block diagram of the inventive noise reduction system. 
     FIG. 4 is a state transition diagram of the speech/noise classifier 130. 
     FIG. 5 is a flow chart of the operation of speech/noise classifier 130 when a consistent pattern of noise is detected. 
     FIG. 6 is a flow chart of the operation of supervisory control 160. 
     FIG. 7 is a block diagram of the inventive system with the addition of a frame buffer. 
     FIG. 8 is a depiction of a signal where squelch is present immediately prior to speech. 
     FIG. 9 is a depiction of a signal containing transient noise. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 1 depicts a signal which represents a person holding the microphone portion of a telephone (mouthpiece) away from their mouth, then bringing the mouthpiece close to the mouth immediately prior to speech, and then shortly after speech moving the mouthpiece away. Such a situation can cause two different levels of ambient noise. Segment 1 (signal 10) represents ambient noise when the mouthpiece is not close to the mouth. Signal 20 represents ambient noise with the mouthpiece close to the mouth. Signal 30 represents speech. Signal 40 is similar to Signal 20, representing ambient noise with the mouthpiece close to the mouth. Signal 50 is similar to Signal 10, wherein the mouthpiece is held away from the mouth. 
     In this circumstance, a typical noise enhancer would generate an estimate of noise based on Signal 10, and slightly modify it during Signal 20. This modified noise capture would be used to cancel the noise during the speech in Signal 30. A more effective noise cancellation procedure would be to use Signal 20 as the sole basis of an estimate of ambient noise during speech, and cancel that noise estimate from Signal 30 (speech). 
     FIG. 2 depicts a typical, real-time noise cancellation system. The audio signal enters analog/digital converter (A/D 110) where the analog signal is digitized. The digitized signal output of A/D 110 is then divided into individual frames within framing 120. The resultant signal frames are then simultaneously inputted into noise canceller 150, speech/noise detector 130, and noise estimator 140. 
     When speech/noise detector 130 determines that a frame is noise, it signals noise estimator 140 that the frame should be input into the noise estimate algorithm. Noise estimator 140 then characterizes the noise in the designated frame, such as by a quantitative estimate of its frequency components. This estimate is then averaged with subsequently received frames of &#34;speechless noise&#34;, typically with a gradually lessening weighting for older frames as more recent frames are received (as the earlier frame estimates become &#34;stale&#34;). In this way, noise estimator 140 continuously calculates an estimate of noise characteristics. 
     Noise estimator 140 continuously inputs its most recent noise estimate into noise canceller 150. Noise canceller 150 then continuously subtracts the estimated noise characteristics from the characteristics of the signal frames received from framing 120, resulting in the output of a noise-reduced signal. 
     Speech/noise detector 130 is often designed such that its energy threshold amount separating speech from noise is continuously updated as actual signal frames are received, so that the threshold can more accurately predict the boundary between speech and non-speech in the actual signal frames being received from framing 120. This can be accomplished by updating the threshold from input frames classified as noise only, or by updating the threshold from frames identified as either speech or noise. 
     FIG. 3 represents the inventive change to a typical noise enhancement system. Speech/noise detector 130 (of FIG. 2) has been replaced by speech/noise classifier 130. Also, noise estimate store 170 is interposed between noise estimator 140 and noise canceller 150. Supervisory control 160 controls the activity of noise estimator 140, noise estimate store 170, and noise canceller 150 upon receiving input from speech/noise classifier 130 and analyzing the input. 
     FIG. 4 is a state transition diagram of speech/noise classifier 130. When speech/noise classifier 130 receives an initial signal frame, it invokes state 330 which analyzes the frame to see if it is classified as noise or speech, or neither. If the classification is speech, then the state shifts to 360. Otherwise, loop 320 is entered until either two consistent noise frames in a row are detected, in which case the state changes to 350, or a speech frame is detected, and the state changes to 360. 
     When speech/noise classifier 130 is in state 350, loop 340 represents the analysis of incoming noise frames. If an incoming frame is not classified as noise, the state reverts to the transitional state, 330. If a sufficient number of consecutive frames (advantageously 3) are analyzed in loop 340, and following an analysis to determine that a consistent noise pattern is present (for example, they have a similar energy level), slate 350 changes to state 380, indicating that a class of noise has been detected. It should be noted that the number of frames of noise required for &#34;noise detection&#34; is dependent on the size of the frame. For instance, using a frame size of 256 samples might be conducive to Fourier transform calculations. This size frame would equate to 32 milliseconds frame duration. Since approximately 100 milliseconds of sampling of noise is required to define &#34;stable noise&#34;, 3 frames are required if 32 millisecond frames are used. 
     Once in state 380, subsequent incoming signal frames are analyzed in loop 390 to see if the same general noise parameters are present (i.e., the subsequent frames are of the same class), and if so the state remains at 380. If an incoming frame does not match the current noise classification, the state reverts to transition 330. 
     When speech/noise classifier 130 from FIG. 3 is in state 360, loop 370 represents the analysis of subsequent incoming signal frames to see if they still represent speech. If so, state 360 is maintained. If not, the state returns to transition 330. 
     FIG. 5 is a flow chart which more particularly delineates the steps taken upon entering noise state 380 of FIG. 4. Block 400 indicates that speech/noise classifier 130 has just entered noise state 380. At this point, speech/noise classifier 130 in block 410 would compute the characteristics of the current segment (a grouping of 3 frames which has been classified in state 350 as being of one noise class). Next, in block 420, speech/noise classifier 130 would determine if any noise class has previously been defined. If not, block 470 is invoked, wherein speech/noise classifier 130 would define a new noise class, and block 480 indicates that speech/noise classifier 130 would derive characteristics of the new noise class from the current segment. 
     Returning to block 420, if a previous class has been defined by speech/noise classifier 130, then in block 430 speech/noise classifier 130 would compute how close the current segment is to any defined noise class. Next, in block 440, if there was no match with an existing noise class, block 470 would be implemented, wherein speech/noise classifier 130 would define a new class, and block 480 would derive characteristics of that new noise class from the current segment. 
     Returning to block 440, if the current segment did match an existing noise class, block 450 would be invoked, wherein speech/noise classifier 130 would attach that class designation to the segment, and than block 460 would update the characteristics of that noise class based on the current segment as input. 
     Once speech/noise classifier 130 has accomplished the noise classification, this information would be transferred to supervisory control 160. Also, speech/noise classifier 130 would continuously update supervisory control 160 as to its current state (transition, noise-like, noise, or speech). 
     Loop 390 analyzes subsequent frames after the current segment to see if they fall in the same class. If so, they are added to the current segment. If not, speech/noise classifier 130 reverts to transition state 330. 
     FIG. 6 represents a flow chart of the operations of supervisory control 160. Referring simultaneously to FIGS. 3 and 6, when a new frame arrives from framing 120 (FIG. 3), block 310 is instituted, followed by block 320 which asks whether speech/noise classifier 130 has detected noise. If speech/noise classifier 130 does not detect noise, block 380 is instituted, wherein supervisory control 160 makes a determination as to the noise situation (described in more detail below). 
     Returning to block 320, if speech/noise classifier 130 has detected that the current frame represents noise, block 330 indicates that supervisory control 160 would receive the noise classification from speech/noise classifier 130. Next, block 340 would see if the noise class is new. If not, supervisory control 160 would direct noise estimator 140 to retrieve the current noise class estimate for that noise class from noise estimate store 170 (block 410), and then would direct noise estimator 140 to update the retrieved noise estimate (block 420). Next, supervisory control 160 would direct noise estimator 140 to store the current noise estimate in noise estimate store 170 in a location dedicated to that noise class, as shown in block 370. 
     Returning to block 340, if a new noise class is detected, supervisory control 160 would instruct noise estimator 140 to re-initialize (block 350), followed by a direction to noise estimator 140 to form a new noise estimate (block 360), followed by a direction by noise estimator 140 to store the current noise estimate in noise estimate store 170 (block 370). 
     Block 380 represents the processing which would determine what next step should be taken by the system based on an analysis of the physical environment generating the signal. 
     For instance, turning briefly to FIG. 8, this signal is representative of a hands free (squelch) situation. In this situation, when squelch is activated, such as in signal 10 (segment 1), there is a low level noise received (generally representative of line noise). Once speech begins in signal 20 (segment 2), squelch cuts out, and normal ambient noise is mixed in with the speech. Signal 30, immediately following speech, represents a continuation of this ambient, or target, noise which is evident until squelch kicks back in at signal 40 (segment 4). Block 380 could be readily programmed to identify the existence of a squelch situation. Supervisory control 160 can readily be programmed to detect speech onset by monitoring the speech state of speech/noise classifier 130. If the speech state remains for 3 or more frames, speech onset can be noted. 
     Another instance where the noise following speech is more representative of target noise is the dynamically directional or voice-activated microphone situation. If block 380 recognizes that the noise class immediately following speech is different from the class immediately prior to speech, it can be programmed to use the post-speech noise for estimation purposes. 
     In many situations, the noise immediately preceding speech is representative of target noise, and an estimate of such speech is typically available in a real-time system to begin canceling noise appropriately at the initiation of speech. However, in other cases, the noise immediately following speech is more representative of target noise (hands-free and dynamic or voice-activated mikes). 
     Therefore, in a real time (non-buffered) situation, block 380 can be programmed to identify and/or verify whether a &#34;post-speech target noise&#34; situation is present. If not, the noise cancellation process previously described is allowed to continue. If a post-speech target noise situation does exit, block 380 can identify the class of noise following speech which is representative of target noise, and can therefore ensure that the estimate of this noise is updated when further frames of noise of this class are received, and that noise canceller 150 only uses this class of noise for cancellation purposes. 
     Alternatively, turning briefly to FIG. 7, block 380 of FIG. 6 can decide if noise canceller 150 should operate in a normal mode without reference to frame buffer 180 if a pre-speech target noise situation is determined. Conversely, if a post-speech target noise situation is determined at block 380 (FIG. 6), noise canceller 150 can be instructed to access frame buffer 180, which would contain all or a portion of the entire signal, and reprocess that entire signal using the appropriate estimate from the noise class representing target noise. 
     Post-processing situations might be appropriate in such circumstances as store-and-forward cases (such as voice messaging), or speech recognition/verification situations where the end user of the noise-reduced signal is a system which will identify a word or words, or to identify a speaker. Such circumstances will typically allow for varying amounts of delay. 
     Therefore, when frame buffer 180 is included in the system, block 380 (FIG. 6) can be used to determine automatically when it is appropriate to reprocess the signal based on a better noise estimate. 
     Returning to FIG. 6, block 390 indicates that supervisory control 160 (FIG. 3) would direct noise canceller 150 to retrieve a specific noise estimate from noise estimate store 170. Block 400 would then direct noise canceller 150 to perform noise cancellation on either the real-time input, or in appropriate circumstances, to access frame buffer 180 to again perform cancellation using the appropriate retrieved noise estimate as directed by block 390. 
     It should be noted that the invention without block 380 of FIG. 6 performs many new, useful functions when compared to existing systems. For instance, once noise is segregated into appropriate classes, noise estimator 140, operates only on noise of a single class, as opposed to existing systems which would average sequential noise frames together, even if they were in different classes. Also, turning briefly to FIG. 9, signal 20 (segment 2) represents a transient noise. Existing systems would average such transient noise with subsequent noise, and the noise estimate would be degraded thereby. In the instant invention, as seen in FIG. 4, transient noise would be seen in loop 320 if it was an extremely short duration, or in loop 340 if the duration were somewhat longer. In either event, the transient noise would not be classified as a segment of a class of noise and the state of speech/noise classifier 130 would not change to the &#34;noise 380&#34; state. In this way, the instant invention would automatically not include transient noise in its noise estimates. 
     Beyond automatically estimating only using a single class of noise, and not including transient noise in any estimates, block 380 of FIG. 6 can be utilized to perform more sophisticated analyses of the situation, resulting in better noise estimation and therefore better speech enhancement. Beyond the examples already discussed, block 380 can be readily programmed to verify the speech environment after it has been classified. For instance, if a squelch situation has been detected by block 380, block 380 can be readily programmed to further verify this conclusion by comparing squelch segments following speech with squelch segments prior to speech, and comparing non-squelch noise immediately following speech with other non-squelch noise immediately following other speech segments. Further, squelch noise would typically be at a lower energy level than non-squelch noise, which can be verified in block 380. 
     Finally, those with skill in the art can readily determine other parameters which block 380 can readily analyze once it has the classification data as determined by speech/noise classifier 130. 
     Even outside the specific task of speech enhancement, it may be useful to output from supervisory control 160 a categorization of the speech environment. For example, it may be useful for other signal-processing purposes, such as control of an acoustic echo-cancellation sub-system, to know whether or not the particular signal involves hands-free operation.