Abstract:
A method and apparatus for generating frame voicing decisions for an incoming speech signal having periods of active voice and non-active voice for a speech encoder in a speech communications system. A predetermined set of parameters is extracted from the incoming speech signal, including a pitch gain and a pitch lag. A frame voicing decision is made for each frame of the incoming speech signal according to values calculated from the extracted parameters. The predetermined set of parameters further includes a partial residual frame full band energy, and a set of spectral parameters called Line Spectral Frequencies (LSF). A signal-to-noise value is estimated and tracked to adaptively set threshold values, thereby improving performance under various noise conditions.

Description:
This application is a continuation-in-part of application serial number 09/156,416 filed on Sep. 18, 1998 now U.S. Pat. No. 6,188,981. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates generally to the field of speech coding in communication systems, and more particularly to detecting voice activity in a communications system. 
     2. Description of Related Art 
     Modern communication systems rely heavily on digital speech processing in general, and digital speech compression in particular, in order to provide efficient systems. Examples of such communication systems are digital telephony trunks, voice mail, voice annotation, answering machines, digital voice over data links, etc. 
     A speech communication system is typically comprised of an encoder, a communication channel and a decoder. At one end of a communications link, the speech encoder converts a speech signal which has been digitized into a bit-stream. The bit-stream is transmitted over the communication channel (which can be a storage medium), and is converted again into a digitized speech signal by the decoder at the other end of the communications link. 
     The ratio between the number of bits needed for the representation of the digitized speech signal and the number of bits in the bit-stream is the compression ratio. A compression ratio of 12 to 16 is presently achievable, while still maintaining a high quality reconstructed speech signal. 
     A significant portion of normal speech is comprised of silence, up to an average of 60% during a two-way conversation. During silence, the speech input device, such as a microphone, picks up the environment or background noise. The noise level and characteristics can vary considerably, from a quiet room to a noisy street or a fast moving car. However, most of the noise sources carry less information than the speech signal and hence a higher compression ratio is achievable during the silence periods. In the following description, speech will be denoted as “active-voice” and silence or background noise will be denoted as “non-active-voice”. 
     The above discussion leads to the concept of dual-mode speech coding schemes, which are usually also variable-rate coding schemes. The active-voice and the non-active voice signals are coded differently in order to improve the system efficiency, thus providing two different modes of speech coding. The different modes of the input signal (active-voice or non-active-voice) are determined by a signal classifier, which can operate external to, or within, the speech encoder. The coding scheme employed for the non-active-voice signal uses less bits and results in an overall higher average compression ratio than the coding scheme employed for the active-voice signal. The classifier output is binary, and is commonly called a “voicing decision.” The classifier is also commonly referred to as a Voice Activity Detector (“VAD”). 
     A schematic representation of a speech communication system which employs a VAD for a higher compression rate is depicted in FIG.  1 . The input to the speech encoder  110  is the digitized incoming speech signal  105 . For each frame of a digitized incoming speech signal the VAD  125  provides the voicing decision  140 , which is used as a switch  145  between the active-voice encoder  120  and the non-active-voice encoder  115 . Either the active-voice bit-stream  135  or the non-active-voice bit-stream  130 , together with the voicing decision  140  are transmitted through the communication channel  150 . At the speech decoder  155  the voicing decision is used in the switch  160  to select the non-active-voice decoder  165  or the active-voice decoder  170 . For each frame, the output of either decoders is used as the reconstructed speech  175 . 
     An example of a method and apparatus which employs such a dual-mode system is disclosed in U.S. Pat. No. 5,774,849, commonly assigned to the present assignee and herein incorporated by reference. According to U.S. Pat. No. 5,774,849, four parameters are disclosed which may be used to make the voicing decision. Specifically, the full band energy, the frame low-band energy, a set of parameters called Line Spectral Frequencies (“LSF”) and the frame zero crossing rate are compared to a long-term average of the noise signal. While this algorithm provides satisfactory results for many applications, the present inventors have determined that a modified decision algorithm can provide improved performance over the prior art voicing decision algorithms. 
     SUMMARY OF THE INVENTION 
     A method and apparatus for generating frame voicing decisions for an incoming speech signal having periods of active voice and non-active voice for a speech encoder in a speech communications system. A predetermined set of parameters is extracted from the incoming speech signal, including a pitch gain and a pitch lag. A frame voicing decision is made for each frame of the incoming speech signal according to values calculated from the extracted parameters. The predetermined set of parameters further includes a partial residual frame full band energy, and a set of spectral parameters called Line Spectral Frequencies (LSF). A signal-to-noise ratio value is estimated and used to adaptively set threshold values, improving performance under various noise conditions. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The exact nature of this invention, as well as its objects and advantages, will become readily apparent from consideration of the following specification as illustrated in the accompanying drawings, in which like reference numerals designate like parts throughout the figures thereof, and wherein: 
     FIG. 1 is a block diagram representation of a speech communication system using a VAD; 
     FIGS.  2 (A),  2 (B) and  2 (C) are process flowcharts illustrating the operation of the VAD in accordance with the present invention; and 
     FIG. 3 is a block diagram illustrating one embodiment of a VAD according to the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     The following description is provided to enable any person skilled in the art to make and use the invention and sets forth the best modes contemplated by the inventor for carrying out the invention. Various modifications, however, will remain readily apparent to those skilled in the art, since the basic principles of the present invention have been defined herein specifically to provide a voice activity detection method and apparatus. 
     In the following description, the present invention is described in terms of functional block diagrams and process flow charts, which are the ordinary means for those skilled in the art of speech coding for describing the operation of a VAD. The present invention is not limited to any specific programming languages, or any specific hardware or software implementation, since those skilled in the art can readily determine the most suitable way of implementing the teachings of the present invention. 
     In the preferred embodiment, a Voice Activity Detection (VAD) module is used to generate a voicing decision which switches between an active-voice encoder/decoder and a non-active-voice encoder/decoder. The binary voicing decision is either 1 (TRUE) for the active-voice or 0 (FALSE) for the non-active-voice. 
     The VAD process flowchart is illustrated in FIGS.  2 (A) and  2 (B). The VAD operates on frames of digitized speech. The frames are processed in time order and are consecutively numbered from the beginning of each conversation/recording. The illustrated process is performed once per frame. 
     At the first block  200 , four parametric features are extracted from the input signal. Extraction of the parameters can be shared with the active-voice encoder module  120  and the non-active-voice encoder module  115  for computational efficiency. The parameters are the partial residual frame full band energy, a set of spectral parameters called Line Spectral Frequencies (“LSF”), the pitch gain and the pitch lag. A set of linear prediction coefficients is derived from the auto correlation and a set of          {       LSF   _     i     }       i   =   1     p                          
     is derived from the set of linear prediction coefficients, as described in ITU-T, Study Group 15 Contribution—Q. 12/15, Draft Recommendation G.729, Jun. 8, 1995, Version 5.0, or DIGITAL SPEECH—Coding for Low Bit Rate Communication Systems by A. M. Kondoz, John Wiley &amp; Son, 1994, England. The partial residual full band energy E is the logarithm of the normalized first auto correlation coefficient R(0):        E   =     10                     log   10          [       1   N                     R        (   0   )       *   α     ]                                
     where N is a predetermined normalization factor, and α is determined according to the formula:          α   =       ∏     l   =   1     4                     (     1   -     K   l   2       )         ,                          
      where k ι  are the reflection (Parcor) coefficients. 
     The pitch gain is a measure of the periodicity of the input signal. The higher the pitch gain, the more periodic the signal, and therefore the greater the likelihood that the signal is a speech signal. The pitch lag is the fundamental frequency of the speech (active-voice) signal. At block  200 , a signal-to-noise value SNR is also initialized. 
     After the parameters are extracted, the standard deviation σ of the pitch lags of the last four previous frames are computed at block  205 . The long-term mean of the pitch gain is updated with the average of the pitch gain from the last four frames at block  210 . In the preferred embodiment, the long-term mean of the pitch gain is calculated according to the following formula: 
     
       
         {overscore (P gain +L )}=0.8*{overscore (P gain +L )}+0.2*[average of last four frames] 
       
     
     The short-term average of energy, {overscore (E s +L )}, is updated at block  215  by averaging the last three frames with the current frame energy. Similarly, the short-term average of LSF vectors, {overscore (LSFs)}, is updated at block  220  by averaging the last three LSF frame vectors with the current LSF frame vector extracted by the parameter extractor at block  200 . 
     At block  225 , a pitch flag is set according to the following decision statements: 
     If σ&lt;T 1 , then P flag1 =1, otherwise P flag1 =0 
     If P gain &gt;T 2 , then P flag2 =1, otherwise P flag2 =0 
     P gain =P flag1  OR P flag2    
     If [{overscore (LSF s +L )}[0]&lt;T 6  AND P flag1 =0] 
     then P flag =0 
     In the preferred embodiment, T 1 =1.2, T 2 =0.7 and T 6 =180 Hz. 
     At block  230 , a minimum energy buffer is updated with the minimum energy value over the last 128 frames. In other words, if the present energy level is less than the minimum energy level determined over the last 128 frames, then the value of the buffer is updated, otherwise the buffer value is unchanged. 
     If the frame count (i.e. current frame number) is less than a predetermined frame count Nι at block  235 , where Nι is 32 in the preferred embodiment, an initialization routine is performed by blocks  240 - 255 . At block  240  the average energy {overscore (E)}, and the long-term average noise spectrum {overscore (LSF N +L )} are calculated over the last Nι frames. The average energy {overscore (E)} is the average of the energy of the last Nι frames. The initial value for {overscore (E)}, calculated at block  240 , is:          E   _     =       1     N   l                         ∑     n   =   1       N   l                     E                              
     The long-term average noise spectrum {overscore (LSF N +L )} is the average of the LSF vectors of the last Nι frames. At block  245 , if the instantaneous energy E extracted at block  200  is less than 15 dB, then the voicing decision is set to zero (block  255 ), otherwise the voicing decision is set one (block  250 ). The processing for the frame is then completed and the next frame is processed, beginning with block  200 . 
     The initialization processing of blocks  240 - 255  initializes the processing over the last few frames. It is not critical to the operation of the present invention and may be skipped. The calculations of block  240  are required, however, for the proper operation of the invention and should be performed, even if the voicing decisions of locks  245 - 255  are skipped. Also, during initialization, the voicing decision could always be set to “1” without significantly impacting the performance of the present invention. 
     If the frame count is not less than Nι at block  235 , then the first time through block  260  (Frame_Count=Nι), the long-term average noise energy {overscore (E N +L )} is initialized by subtracting 12 dB from the average energy {overscore (E)}: 
     
       
         {overscore (E N +L )}={overscore (E)}−12 dB 
       
     
     Next, at block  265 , a spectral difference value SD 1  is calculated using the normalized Itakura-Saito measure. The value SD 1  is a measure of the difference between two spectra (the current frame spectra represented by R and E π , and the background noise spectrum represented by {right arrow over (a)}. The Itakura-Saito measure is a well-known algorithm in the speech processing art and is described in detail, for example, in  Discrete - Time Processing of Speech Signals , Deller, John R., Proakis, John G. and Hansen, John H. L., 1987, pages 327-329, herein incorporated by reference. Specifically, SD 1  is defined by the following equation:          SD   1     =           a   →     T        R        a   →         E   rr                              
     where E π  is the prediction error from linear prediction (LP) analysis of the current frame; 
     R is the auto-correlation matrix from the LP analysis of the current frame; and 
     {right arrow over (a)} is a linear prediction filter describing the background noise obtained from {overscore (LSF N +L )}. 
     At block  270  the spectral differences SD 2  and SD 3  are calculated using a ean square error method according to the following equations:                SD   2     =       ∑     l   =   1     p                       [           LSF   s     _          (   i   )       -         LSF   N     _          (   i   )         ]     2                     SD   3     =       ∑     l   =   1     p                       [           LSF   s     _          (   i   )       -       LSF   _          (   i   )         ]     2                                    
     Where {overscore (LSF s +L )} is the short-term average of LSF; 
     {overscore (LSF N +L )} is the long-term average noise spectrum; and 
     LSF is the current LSF extracted by the parameter extraction. 
     The long-term mean of SD 2  (sm_SD 2 ) in the preferred embodiment is updated at block  275  according to the following equation: 
     
       
         sm_SD 2 =0.4*SD 2 +0.6*sm_SD 2   
       
     
     Thus, the long term mean of SD 2  is a linear combination of the past long-term mean and the current SD 2  value. 
     The initial voicing decision, obtained in block  280 , is denoted by I VD . The value of I VD  is determined according to the following decision statements: 
     
       
         
               
               
             
               
               
             
               
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
               
             
               
               
             
               
               
             
               
               
             
               
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 If 
               
             
          
           
               
                   
                 E  {overscore (E)} N  + X 2  dB 
               
             
          
           
               
                   
                 then 
                 I VD  = 1; 
               
               
                   
                   
                 If E −  {overscore (E)} N   X 3  dB 
               
             
          
           
               
                   
                 AND 
               
             
          
           
               
                   
                 sm_SD 2   T 3   
               
             
          
           
               
                   
                 AND 
               
             
          
           
               
                   
                 SD 2  &lt; T 8   
               
             
          
           
               
                   
                 then 
                 I VD  = 0 ; else I VD  = 1; 
               
             
          
           
               
                   
                 If E  1/2 (E −1  + E −2 ) + X 4 dB 
               
             
          
           
               
                   
                 OR 
               
             
          
           
               
                   
                 SD 1   1.65 
               
             
          
           
               
                   
                 then 
                 I vd  = 1.  
               
               
                   
                   
               
             
          
         
       
     
     In the preferred embodiment, X 2 =5, X 3 =4, T 3 =0.0015 and T 8 =0.001133. The value of X 4  is adaptive and is calculated as discussed below. 
     The initial voicing decision is smoothed at block  285  to reflect the long term stationary nature of the speech signal. The smoothed voicing decision of the frame, the previous frame and the frame before the previous frame are denoted by S VD   0 , S VD   −1  and S VD   −2 , respectively. Both S VD   −1  and S VD   −2  are initialized to 1 and S VD   0 =I VD . A Boolean parameter F VD   −1  is initialized to 1 and a counter denoted by C e  is initialized to 0. The energy of the previous frame is denoted by E −1 . Thus, the smoothing stage is defined by: 
     
       
         
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 if F VD   −1  = 1 and I VD  = 0 and S VD   −1  = 1 and S VD   −2  = 1 
               
             
          
           
               
                   
                 S VD   0  = 1 
               
               
                   
                 C e  = C e  + 1 
               
               
                   
                 if C e  ≦ T 4  { 
               
             
          
           
               
                   
                 F VD   −1  = 0 
               
               
                   
                 } 
               
             
          
           
               
                   
                 else { 
               
             
          
           
               
                   
                 F VD   −1  = 0 
               
               
                   
                 C e  = 0 
               
               
                   
                 } 
               
             
          
           
               
                   
                 } 
               
             
          
           
               
                   
                 else 
               
               
                   
                 F VD   −1  = 1  
               
               
                   
                   
               
             
          
         
       
     
     Ce is reset to 0 if S VD   −1 =1 and S VD   −2 =1 and I VD =1. 
     If P flag =1, then S 0   VD =1 
     If E&lt;15 dB, then S 0   VD =0 
     In the preferred embodiment, T 4  is adaptive and is calculated as discussed below. The final value of S 0   VD  represents the final voicing decision, with a value of “1” representing an active voice speech signal, and a value of “0” representing a non-active voice speech signal. 
     F SD  is a flag which indicates whether consecutive frames exhibit spectral stationarity (i.e., spectrum does not change dramatically from frame to frame). F SD  is set at block  290  according to the following where C S  is a counter initialized to 0. 
     
       
         
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 If Frame_Count &gt; 128 AND SD 3  &lt; T 5   
               
               
                   
                 then 
               
             
          
           
               
                   
                 Cs = Cs + 1 
               
             
          
           
               
                   
                 else 
               
             
          
           
               
                   
                 Cs = 0; 
               
             
          
           
               
                   
                 If Cs &gt; N 
               
             
          
           
               
                   
                 F SD  = 1 
               
             
          
           
               
                   
                 else 
               
             
          
           
               
                   
                 F SD  = 0.  
               
               
                   
                   
               
             
          
         
       
     
     In the preferred embodiment, T 5 =0.0005 and N=20. 
     At block  291 , a determination is made whether E&gt;Min+T 7  dB. If so, a running mean of energy of the voice signal is calculated at block  292 , according to the following equation: 
     
       
         R MEAN     —     E =α*R MEAN     —     E +(1−α)E 
       
     
     where α=0.9 and the initial value of R MEAN     —     E  is equal to the  VALUE {overscore (E)} over the last N ι  frames (block  240 ). In the preferred embodiment, T 7 =7 dB. The value R MEAN     —     E  represents the running mean of energy of the voice component only of the incoming speech signal. 
     Next, an SNR value is updated according to the following equation: 
     
       
         SNR=R MEAN     —     E −{overscore (E N +L )} 
       
     
     This SNR value is used to adaptively set the values of variables X 4  and T 4 . At block  200 , a signal-to-noise ratio value SNR was initialized to a predetermined value. This initialization value is used to initially determine the value of X 4  and T 4 . The value of X 4  is then adaptively determined according to the following decision statements: 
     
       
         
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 IF SNR &lt; 5 dB, then X 4  = 3 dB 
               
             
          
           
               
                   
                 else 
               
             
          
           
               
                   
                 IF SNR &lt; 10 dB, then X 4  = 4 dB 
               
             
          
           
               
                   
                 otherwise 
               
             
          
           
               
                   
                 X 4  = 5 dB  
               
               
                   
                   
               
             
          
         
       
     
     The value of T 4  is also adaptively determined according to the following decision statements: 
     
       
         
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 IF SNR &lt; 8 dB, then T 4  = 16 
               
             
          
           
               
                   
                 else 
               
             
          
           
               
                   
                 IF SNR &lt; 11 dB, then T 4  = 14 
               
             
          
           
               
                   
                 else 
               
             
          
           
               
                   
                 IF SNR &lt;, 14 dB, then T 4  = 10 
               
             
          
           
               
                   
                 else 
               
             
          
           
               
                   
                 IF SNR &lt; 17 dB; then T 4  = 6 
               
             
          
           
               
                   
                 otherwise 
               
             
          
           
               
                   
                 T 4  = 2  
               
               
                   
                   
               
             
          
         
       
     
     By estimating and tracking the signal-to-noise ratio SNR, the X 4  and T 4  thresholds can be adaptively determined. This improves the performance of the present VAD under various noise conditions, compared to prior art systems. 
     The running averages of the background noise characteristics are updated at the last stage of the VAD algorithm At block  295  and  300 , the following conditions are tested and the updating takes place only if these conditions are met: 
     
       
         
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
               
             
           
               
                   
               
             
             
               
                 If E &lt; max [(Min), ({overscore (E)} N )] + 2.44 AND P flag  = 0 
               
               
                 then E N  = β EN  * {overscore (E N)}  + (1 − β EN ) * [max of E AND {overscore (E s)} ] 
               
               
                 AND 
               
             
          
           
               
                   
                 {overscore (LSF)} N  (i) = β LSF   * {overscore (LSF)} N  (i) + (1 − β LSF ) * LSF (i) ι = 1, . . . p 
               
             
          
           
               
                 If Frame_Count &gt; 128 AND 
               
             
          
           
               
                   
                 {overscore (E)} N  &lt; Min AND F SD  = 1 AND P flag  = 0 
               
             
          
           
               
                 then 
               
             
          
           
               
                   
                 {overscore (E)} N  = Min 
               
             
          
           
               
                 else 
                 If Frame_Count &gt; 128 AND {overscore (E)} N  &gt; Min + 10 
               
               
                 then 
               
               
                   
                 {overscore (E N)}  = Min.  
               
               
                   
               
             
          
         
       
     
     FIG. 3 illustrates a block diagram of one possible implementation of a VAD  400  according to the present invention. An extractor  402  extracts the required predetermined parameters, including a pitch lag and a pitch gain, from the incoming speech signal  105 . A calculator unit  404  performs the necessary calculations on the extracted parameters, as illustrated by the flowcharts in FIGS.  2 (A) and  2 (B). A decision unit  406  then determines whether a current speech frame is an active voice or a non-active voice signal and outputs a voicing decision  140  (as shown in FIG.  1 ). 
     Those skilled in the art will appreciate that various adaptations and modifications of the just-described preferred embodiments can be configured without departing from the scope and spirit of the invention. For example, many specific values for threshold values have been presented. Those skilled in the art will readily know how to select appropriate values for various conditions. Therefore, it is to be understood that within the scope of the appended claims, the invention may be practiced other than as specifically described herein.