Abstract:
A method and a system for echo cancellation. The method includes receiving incoming downlink signal sample, performing Kalman filter time update of linear filter, constructing data matrix for linear filter adaptation, performing Kalman filter measurements update on linear filter, performing Kalman filter time update on non-linear filter, constructing data matrix for non-linear filter adaptation, performing Kalman filter measurements update on non-linear filter, generating echo using adapted linear and non-linear filters, subtracting the echo from microphone signal to generate echo free uplink signal, and uplinking the echo free signal to the far-end.

Description:
CROSS REFERENCES TO RELATED APPLICATIONS 
       [0001]    This application claims priority from U.S. Provisional Patent Application No. 61/948,361 filed on Mar. 5, 2014, which is hereby incorporated by reference in its entirety. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    Embodiments of the present invention generally relate to a method and system for acoustic echo cancellation using cascaded Kalman filtering. 
         [0004]    2. Description of the Related Art 
         [0005]    Acoustic echo cancellation (AEC) has been an area of active research for the past many decades. As AEC is implemented in newer and sophisticated devices, it is expected that its performance is also improved over the devices of prior generation. Various aspects of AEC have been investigated in the past; this includes double-talk, convergence, stereo-echo cancellation, etc. One of the issues that has limited the performance of a practical echo canceller is non-linearity of the echo path. A typical echo canceller is designed assuming that the echo path is linear and modeled by a linear finite impulse response (FIR) filter. Consequently, the echo cancelling filter is also modeled as linear. In practical applications, like cell phones, the echo path is non-linear because of imperfections introduced by the data converter, amplifier and the loudspeaker operating close to saturation. Attempting to cancel non-linear echo using a linear FIR filter leaves residual echo in the uplink signal resulting in annoying user experience. 
         [0006]    Several methods have been proposed in the past to address the non-linear echo cancellation. Popular among them are the Volterra filter based methods. These methods, however, suffer from high complexity because of large number of filter parameters to adapt. A large class of methods started with an assumption of a non-linear model. There are mainly two such models; memoryless non-linearity is used for smaller loudspeakers used in portable hand-held devices like cell phones. On the other hand, non-linearity with memory is generally employed in high-end audio devices like precision audio systems. 
         [0007]    Therefore, there is a need for a method and/or system for an improved acoustic echo cancellation in the presence of unavoidable non-linearity in the echo path. 
       SUMMARY OF THE INVENTION 
       [0008]    Embodiments of the present invention relate to a method and a system for echo cancellation. The method includes receiving incoming downlink signal sample, performing Kalman filter time update of linear filter, constructing data matrix for linear filter adaptation, performing Kaplan filter measurements update on linear filter, performing Kaplan filter time update on non-linear filter, constructing data matrix for non-linear filter adaptation, performing Kaplan filter measurements update on non-linear filter, generating echo signal using adapted linear and non-linear filters subtracting the echo from microphone signal to generate echo free uplink signal, and sending the echo free signal to the far-end. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0009]    So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments. 
           [0010]      FIG. 1A-B  are an embodiments of a block diagram depicting an acoustic echo cancellation using cascaded Kalman filtering; 
           [0011]      FIG. 2  is an embodiment of a graph depicting a microphone signal y(n); 
           [0012]      FIG. 3  is an embodiment of a comparison between the signal of echo cancellation method using cascaded Kalman filtering and the signal of a signal of a normalized least mean squares; 
           [0013]      FIG. 4  is an embodiment of a flow diagram of an echo cancellation method using cascaded Kalman filtering; and 
           [0014]      FIG. 5  is an embodiment of a system diagram utilizing the method of  FIG. 4 . 
       
    
    
     DETAILED DESCRIPTION 
       [0015]    Herein, the non-linear echo path is modeled by a memoryless non-linearity followed by a linear FIR filter. The problem is cast into a state-space framework and solved using a cascade of Kalman filters in time domain, one filter adapting to the linear echo path and the other to the memoryless non-linearity. It is shown that the proposed method outperforms the existing NLMS-based method in filter converge and misalignment while enjoying an additional benefit of unsupervised and variable step-size control. Experimental result is presented below to exhibit performance improvements and advantages. 
         [0016]      FIG. 1A  and  FIG. 1B  are an embodiments of a block diagram depicting an acoustic echo cancellation apparatus using cascaded Kalman filtering. The acoustic echo cancellation apparatus comprises a loudspeaker, microphone and two adaptive filters. The loudspeaker receives an incoming downlink and produces output that has non-linearity in it. The non-linear loudspeaker output is then passed through room impulse response, which has an effect of introducing linear echo. That signal incorporated with the signal from the near end speaker is then the input into the microphone. The downlink signal is subjected to the two adaptive filters to identify the echo signal in the microphone&#39;s output signal. One adaptive filter is a Kalman linear filter and the second one is a Kalman non-linear filter. The output of both filters is the combined with the output signal from the microphone to remove the echo from the uplinked signal. 
         [0017]    In order to compensate for the non-linearity and linear echo, a set of adaptive filters are placed in parallel to the echo path as shown in  FIG. 1B . These filters are learned to cancel the echo in the uplink channel. In one embodiment, the method uses state-space formulation to model the non-linear echo cancellation problem. By various mathematical manipulations, the non-linear AEC model is transformed to state-space model consisting of an observation equation and a state equation and a cascaded Kalman filters is used to operate sequentially for updating the unknown filter coefficients. As a result, faster convergence is achieved without the need of controlling the step size. Furthermore, the filter misalignment is also improved when compared with the prior state of the art. The filter misalignment is normalized mean squared error difference of adapted filter and the true filter. 
         [0018]    The non-linear echo cancellation problem is depicted in  FIG. 1B , where the echo path is modeled as a cascade of memoryless non-linearity followed by an FIR filter that models the linear echo path. The output of the non-linear part is given by 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       z 
                        
                       
                         ( 
                         n 
                         ) 
                       
                     
                     = 
                     
                       
                         
                           ∑ 
                           
                             p 
                             = 
                             1 
                           
                           P 
                         
                          
                         
                           
                             a 
                             p 
                           
                            
                           
                             
                               x 
                               p 
                             
                              
                             
                               ( 
                               n 
                               ) 
                             
                           
                         
                       
                       = 
                       
                         
                           a 
                           T 
                         
                          
                         
                           x 
                            
                           
                             ( 
                             n 
                             ) 
                           
                         
                       
                     
                   
                   , 
                 
               
               
                 
                   ( 
                   1 
                   ) 
                 
               
             
           
         
       
     
         [0000]    Where a=[a 1  a 2  . . . a P ] T , x(n)=[x(n) x 2 (n) . . . x P (n)] T , P is order of the non-linearity, and (·)T denotes conjugate transposition. 
         [0000]    
       
         
           
             
               
                 
                   
                     
                       d 
                        
                       
                         ( 
                         n 
                         ) 
                       
                     
                     = 
                     
                       
                         
                           ∑ 
                           
                             k 
                             = 
                             0 
                           
                           
                             K 
                             - 
                             1 
                           
                         
                          
                         
                           
                             h 
                             k 
                           
                            
                           
                             z 
                              
                             
                               ( 
                               
                                 n 
                                 - 
                                 k 
                               
                               ) 
                             
                           
                         
                       
                       = 
                       
                         
                           h 
                           T 
                         
                          
                         
                           z 
                            
                           
                             ( 
                             n 
                             ) 
                           
                         
                       
                     
                   
                   , 
                 
               
               
                 
                   ( 
                   2 
                   ) 
                 
               
             
           
         
       
     
         [0000]    Where h=[h 1  h 2  . . . h k-1 ] T , z(n)=[z(n) x(n−1) . . . z P (n−k=1)] T  and K is order of the FIR filter. Using (1) and (2), the echo input to the microphone is given by: 
         [0000]        d ( n )= a   T   X ( n ) h=h   T   X   T ( n ) a,   (3)
 
         [0000]    where 
         [0000]    
       
         
           
             
               
                 
                   
                     X 
                      
                     
                       ( 
                       n 
                       ) 
                     
                   
                   = 
                   
                     
                       ( 
                       
                         
                           
                             
                               x 
                                
                               
                                 ( 
                                 n 
                                 ) 
                               
                             
                           
                           
                             
                               x 
                                
                               
                                 ( 
                                 
                                   n 
                                   - 
                                   1 
                                 
                                 ) 
                               
                             
                           
                           
                             … 
                           
                           
                             
                               x 
                                
                               
                                 ( 
                                 
                                   n 
                                   - 
                                   K 
                                   + 
                                   1 
                                 
                                 ) 
                               
                             
                           
                         
                         
                           
                             
                               
                                 x 
                                 2 
                               
                                
                               
                                 ( 
                                 n 
                                 ) 
                               
                             
                           
                           
                             
                               
                                 x 
                                 2 
                               
                                
                               
                                 ( 
                                 
                                   n 
                                   - 
                                   1 
                                 
                                 ) 
                               
                             
                           
                           
                             … 
                           
                           
                             
                               
                                 x 
                                 2 
                               
                                
                               
                                 ( 
                                 
                                   n 
                                   - 
                                   K 
                                   + 
                                   1 
                                 
                                 ) 
                               
                             
                           
                         
                         
                           
                             ⋮ 
                           
                           
                             ⋮ 
                           
                           
                             ⋱ 
                           
                           
                             ⋮ 
                           
                         
                         
                           
                             
                               
                                 x 
                                 P 
                               
                                
                               
                                 ( 
                                 n 
                                 ) 
                               
                             
                           
                           
                             
                               
                                 x 
                                 P 
                               
                                
                               
                                 ( 
                                 
                                   n 
                                   - 
                                   1 
                                 
                                 ) 
                               
                             
                           
                           
                             … 
                           
                           
                             
                               
                                 x 
                                 P 
                               
                                
                               
                                 ( 
                                 
                                   n 
                                   - 
                                   K 
                                   + 
                                   1 
                                 
                                 ) 
                               
                             
                           
                         
                       
                       ) 
                     
                     . 
                   
                 
               
               
                 
                   ( 
                   4 
                   ) 
                 
               
             
           
         
       
     
         [0000]    The microphone input signal consists of echo and the near-end noise v(n), resulting in 
         [0000]        y ( n )= d ( n )+ v ( n ).  (5)
 
         [0000]    In one embodiment, the signal v(n) could also be a near-end speaker. Referring to  FIG. 1B , the error output is given by 
         [0000]        e ( n )= y ( n )−{circumflex over ( d )}( n ).  (6)
 
         [0019]    In one embodiment, a state-space framework is used to model the non-linear AEC. Accordingly, the task of controlling the step size is minimized and the number of unknown parameters to be estimated is not increased while the convergence rate and the filter misalignment is significantly improved. 
         [0020]    In an attempt to solve the problem using Kalman filter, the state and measurement (observation) equations are setup for estimating the non-linear filter parameters a and the FIR filter parameters h. Thu, the output of the two adaptive filters, d(n), as follows: 
         [0000]        d ( n )=[ a   T   x ( n ) a   T   x ( n− 1) . . .  a   T   x ( n−K+ 1)] h.   (7)
 
         [0000]    Using (5), M measurements are stacked in a vector to obtain (12), which can be compactly written as follows: 
         [0000]        y ( n )= X   a ( n ) h+v ( n ),  (8)
 
         [0000]    where v(n) is vector of measurement noise with covariance matrix R of dimension M×M. The state update equation is written as 
         [0000]        h ( n )= h ( n− 1)+ w   h ( n ),  (9)
 
         [0000]    where w h (n) is the process noise with K×K covariance matrix Q h  and is assumed to be uncorrelated with v(n). Similarly, in order to solve for the non-linear filter coefficients a(n), the output d(n) is expressed as follows 
         [0000]        d ( n )=[ h   T   {tilde over (x)} ( n ) h   T   {tilde over (x)}   2 ( n ) . . .  h   T   {tilde over (x)}   P ( n )] a,   (10)
 
         [0000]      where 
         [0000]        x ( n )=[ x ( n ) x ( n− 1) . . .  x ( n−K+ 1)] T.   (11)
 
         [0000]    Again, putting together M measurements in a vector form gives (13), which can be expressed as 
         [0000]        y ( n )= X   h ( n ) a+v ( n ).  (14)
 
         [0000]    The state update for a is 
         [0000]        a ( n )= a ( n− 1)+ w   a ( n ),  (15)
 
         [0000]    where w a (n) is process noise associate with covariance matrix Qa of dimension P×P. Equations (8), (9) and Equations (14), (15) captures the dynamics of the non-linear AEC system, and these sets of equations forms the basis of the dual Kalman filter. 
         [0021]    The Kalman filter consists of a time update and a measurement update. In the time update, the filter coefficients and their error covariance at time n are updated using only the measurements available until the previous time instant n−1. Such estimates are referred to as a priori estimates and are denoted using (·) − . The time update for a − (n) is given by 
         [0000]        â   − ( n )={circumflex over ( a )}( n− 1)  (16)
 
         [0000]        P   a   − ( n )= P   a ( n− 1)+ Q   a .  (17)
 
         [0000]    The error covariance is defined as 
         [0000]        P   a   − ( n )= Cov[a ( n )− â   − ( n )].  (18)
 
         [0022]    As the measurement at time n become available, the parameter estimates and their error variance estimates are updated in the measurement update as follows: 
         [0000]        K   a ( n )= P   a   − ( n ) X     h     T ( n )[ X   ĥ ( n ) P   a   − ( n ) X   ĥ   T ( n )+ R]   −1   (19)
 
         [0000]      {circumflex over ( a )}( n )= â   − ( n )+ K   a ( n )[ y ( n )− X   ĥ ( n ) â   − ( n )]  (20)
 
         [0000]        P   a ( n )= P   a   − ( n )− K   a ( n ) X   ĥ ( n ) P   a   − ( n− 1),  (21)
 
         [0000]    Where K a (n) is commonly referred to as Kalman gain and the error covariance P a (n) is defined by replacing a − (n) with a(n) in (18). 
         [0023]    Similar set of time and measurement updates can be developed for estimating h. 
         [0000]        ĥ   − ( n )={circumflex over ( h )}( n− 1)  (22)
 
         [0000]        P   h   − ( n )= P   h ( n− 1)+ Q   h .  (23)
 
         [0024]    The measurement update for ĥ(n) comprises of the following steps. 
         [0000]        K   h ( n )= P   h   − ( n ) X   â   T ( n )[ X   â ( n ) P   h   − ( n ) X   â   T ( n )+ R]   −1   (24)
 
         [0000]      {circumflex over ( h )}( n )= ĥ   − ( n )+ K   h ( n )[ y ( n )− X   â ( n ) ĥ   − ( n )]  (25)
 
         [0000]        P   h ( n )= P   h   − ( n )− K   h ( n ) X   â ( n ) P   h   − ( n− 1).  (26)
 
         [0025]    The data matrices X̂a(n) and X̂h(n) are obtained by using the parameter estimates a − (n) and h − (n) in (12) and (13), respectively. These matrices are updated at each iteration. Since only a data sample is updated at each time iteration, the data matrices are only shuffled to include the new value and does not require a re-computation. The Kalman filter begins with appropriate initialization of a − (0) and h − (0) as well as for the error-covariance matrices P a (0) and P h (0). 
         [0026]    Let us review the time and measurement update equations and draw some comparisons with the classical normalized least-mean squares (NLMS) or recursive least squares (RLS) based adaptation methods. In (20) and (25) it is seen that the error is weighted by the Kalman gain of (19) and (24), respectively to update the state vectors. This is in a way similar to NLMS processing where the normalized step size is used in filter update. In contrast to the NLMS update, which requires judicious choice of step size, the Kalman gain is computing as part of the measurement update using the noise covariance and the downlink data. The Kalman filter based non-linear AEC, therefore, works like a variable step size adaptive filter. As a result, this helps in promoting the convergence while the filter misalignment is improved. 
         [0027]    Like in traditional Kalman filter, the choice of process noise Q h  and Q a  plays a key role in the cascaded adaptive filter framework. A smaller value of this noise variance implies smaller adaptive filter updates, whereas a larger value results in bigger update 
         [0000]    
       
         
           
             
               
                 
                   
                     ( 
                     
                       
                         
                           
                             y 
                              
                             
                               ( 
                               n 
                               ) 
                             
                           
                         
                       
                       
                         
                           
                             y 
                              
                             
                               ( 
                               
                                 n 
                                 - 
                                 1 
                               
                               ) 
                             
                           
                         
                       
                       
                         
                           ⋮ 
                         
                       
                       
                         
                           
                             y 
                              
                             
                               ( 
                               
                                 n 
                                 - 
                                 M 
                                 + 
                                 1 
                               
                               ) 
                             
                           
                         
                       
                     
                     ) 
                   
                   = 
                   
                     
                       
                         ( 
                         
                           
                             
                               
                                 
                                   a 
                                   T 
                                 
                                  
                                 
                                   x 
                                    
                                   
                                     ( 
                                     n 
                                     ) 
                                   
                                 
                               
                             
                             
                               
                                 
                                   a 
                                   T 
                                 
                                  
                                 
                                   x 
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       1 
                                     
                                     ) 
                                   
                                 
                               
                             
                             
                               … 
                             
                             
                               
                                 
                                   a 
                                   T 
                                 
                                  
                                 
                                   x 
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       K 
                                       + 
                                       1 
                                     
                                     ) 
                                   
                                 
                               
                             
                           
                           
                             
                               
                                 
                                   a 
                                   T 
                                 
                                  
                                 
                                   x 
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       1 
                                     
                                     ) 
                                   
                                 
                               
                             
                             
                               
                                 
                                   a 
                                   T 
                                 
                                  
                                 
                                   x 
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       2 
                                     
                                     ) 
                                   
                                 
                               
                             
                             
                               … 
                             
                             
                               
                                 
                                   a 
                                   T 
                                 
                                  
                                 
                                   x 
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       K 
                                     
                                     ) 
                                   
                                 
                               
                             
                           
                           
                             
                               ⋮ 
                             
                             
                               ⋮ 
                             
                             
                               ⋱ 
                             
                             
                               ⋮ 
                             
                           
                           
                             
                               
                                 
                                   a 
                                   T 
                                 
                                  
                                 
                                   x 
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       M 
                                       + 
                                       1 
                                     
                                     ) 
                                   
                                 
                               
                             
                             
                               
                                 
                                   a 
                                   T 
                                 
                                  
                                 
                                   x 
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       M 
                                     
                                     ) 
                                   
                                 
                               
                             
                             
                               … 
                             
                             
                               
                                 
                                   a 
                                   T 
                                 
                                  
                                 
                                   x 
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       K 
                                       - 
                                       M 
                                       + 
                                       2 
                                     
                                     ) 
                                   
                                 
                               
                             
                           
                         
                         ) 
                       
                        
                       h 
                     
                     + 
                     
                       ( 
                       
                         
                           
                             
                               v 
                                
                               
                                 ( 
                                 n 
                                 ) 
                               
                             
                           
                         
                         
                           
                             
                               v 
                                
                               
                                 ( 
                                 
                                   n 
                                   - 
                                   1 
                                 
                                 ) 
                               
                             
                           
                         
                         
                           
                             ⋮ 
                           
                         
                         
                           
                             
                               v 
                                
                               
                                 ( 
                                 
                                   n 
                                   - 
                                   M 
                                   + 
                                   1 
                                 
                                 ) 
                               
                             
                           
                         
                       
                       ) 
                     
                   
                 
               
               
                 
                   ( 
                   12 
                   ) 
                 
               
             
             
               
                 
                   
                     ( 
                     
                       
                         
                           
                             y 
                              
                             
                               ( 
                               n 
                               ) 
                             
                           
                         
                       
                       
                         
                           
                             y 
                              
                             
                               ( 
                               
                                 n 
                                 - 
                                 1 
                               
                               ) 
                             
                           
                         
                       
                       
                         
                           ⋮ 
                         
                       
                       
                         
                           
                             y 
                              
                             
                               ( 
                               
                                 n 
                                 - 
                                 M 
                                 + 
                                 1 
                               
                               ) 
                             
                           
                         
                       
                     
                     ) 
                   
                   = 
                   
                     
                       
                         ( 
                         
                           
                             
                               
                                 
                                   h 
                                   T 
                                 
                                  
                                 
                                   
                                     x 
                                     ^ 
                                   
                                    
                                   
                                     ( 
                                     n 
                                     ) 
                                   
                                 
                               
                             
                             
                               
                                 
                                   h 
                                   T 
                                 
                                  
                                 
                                   
                                     x 
                                     ^ 
                                   
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       1 
                                     
                                     ) 
                                   
                                 
                               
                             
                             
                               … 
                             
                             
                               
                                 
                                   h 
                                   T 
                                 
                                  
                                 
                                   
                                     x 
                                     ^ 
                                   
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       K 
                                       + 
                                       1 
                                     
                                     ) 
                                   
                                 
                               
                             
                           
                           
                             
                               
                                 
                                   h 
                                   T 
                                 
                                  
                                 
                                   
                                     x 
                                     ^ 
                                   
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       1 
                                     
                                     ) 
                                   
                                 
                               
                             
                             
                               
                                 
                                   h 
                                   T 
                                 
                                  
                                 
                                   
                                     x 
                                     ^ 
                                   
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       2 
                                     
                                     ) 
                                   
                                 
                               
                             
                             
                               … 
                             
                             
                               
                                 
                                   h 
                                   T 
                                 
                                  
                                 
                                   
                                     x 
                                     ^ 
                                   
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       K 
                                     
                                     ) 
                                   
                                 
                               
                             
                           
                           
                             
                               ⋮ 
                             
                             
                               ⋮ 
                             
                             
                               ⋱ 
                             
                             
                               ⋮ 
                             
                           
                           
                             
                               
                                 
                                   h 
                                   T 
                                 
                                  
                                 
                                   
                                     x 
                                     ^ 
                                   
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       M 
                                       + 
                                       1 
                                     
                                     ) 
                                   
                                 
                               
                             
                             
                               
                                 
                                   h 
                                   T 
                                 
                                  
                                 
                                   
                                     x 
                                     ^ 
                                   
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       M 
                                     
                                     ) 
                                   
                                 
                               
                             
                             
                               … 
                             
                             
                               
                                 
                                   h 
                                   T 
                                 
                                  
                                 
                                   
                                     x 
                                     ^ 
                                   
                                    
                                   
                                     ( 
                                     
                                       n 
                                       - 
                                       K 
                                       - 
                                       M 
                                       + 
                                       2 
                                     
                                     ) 
                                   
                                 
                               
                             
                           
                         
                         ) 
                       
                        
                       h 
                     
                     + 
                     
                       ( 
                       
                         
                           
                             
                               v 
                                
                               
                                 ( 
                                 n 
                                 ) 
                               
                             
                           
                         
                         
                           
                             
                               v 
                                
                               
                                 ( 
                                 
                                   n 
                                   - 
                                   1 
                                 
                                 ) 
                               
                             
                           
                         
                         
                           
                             ⋮ 
                           
                         
                         
                           
                             
                               v 
                                
                               
                                 ( 
                                 
                                   n 
                                   - 
                                   M 
                                   + 
                                   1 
                                 
                                 ) 
                               
                             
                           
                         
                       
                       ) 
                     
                   
                 
               
               
                 
                   ( 
                   13 
                   ) 
                 
               
             
           
         
       
     
         [0000]    We compared the performance of the proposed method against the dual adaptive filter method, where the linear and non-linear filter coefficients were updated using NLMS adaptation.  FIG. 2  is an embodiment of a graph depicting a microphone signal y(n). In  FIG. 2 , the microphone is signal y(n), which was generated by passing x(n) through a P=5-pt non-linear filter and a K=256-pt FIR filter. As the filter parameters are learned, the performance is measured by computing the misalignment as follows: 
         [0000]    
       
         
           
             
               
                 
                   
                     Misalignment 
                      
                     
                         
                     
                      
                     of 
                      
                     
                         
                     
                      
                     
                       h 
                        
                       
                         ( 
                         n 
                         ) 
                       
                     
                   
                   = 
                   
                     20 
                      
                     
                       log 
                       10 
                     
                      
                     
                       
                          
                         
                           
                             
                               h 
                               ^ 
                             
                              
                             
                               ( 
                               n 
                               ) 
                             
                           
                           - 
                           h 
                         
                          
                       
                       
                         
                            
                           h 
                            
                         
                          
                         h 
                       
                     
                   
                 
               
               
                 
                   ( 
                   27 
                   ) 
                 
               
             
             
               
                 
                   
                     Misalignment 
                      
                     
                         
                     
                      
                     of 
                      
                     
                         
                     
                      
                     
                       a 
                        
                       
                         ( 
                         n 
                         ) 
                       
                     
                   
                   = 
                   
                     20 
                      
                     
                       log 
                       10 
                     
                      
                     
                       
                         
                            
                           
                             
                               
                                 a 
                                 ^ 
                               
                                
                               
                                 ( 
                                 n 
                                 ) 
                               
                             
                             - 
                             a 
                           
                            
                         
                         
                            
                           a 
                            
                         
                       
                       . 
                     
                   
                 
               
               
                 
                   ( 
                   28 
                   ) 
                 
               
             
           
         
       
     
         [0028]    For the proposed method, Q h =1 e −8 I and Q a =1e −3 I are used, where I is an identity matrix of appropriate dimension. The matrix R was set to 1e −8 I by estimating the noise variance in the silence interval. The matrices P h ( 0 ) and P a ( 0 ) were initialized with identity matrices. In one embodiment, M is set for M=1, 2, and 4. The adaptive filters to result in best performance by setting the step sizes of a − (n) and h − (n) to be equal to 0.2 and 0.5. The comparative results to the prior solution are shown in  FIG. 3 .  FIG. 3  is an embodiment of a comparison between the signal of echo cancellation method using cascaded Kalman filtering and the signal of echo cancellation method using NLMS. 
         [0029]    The performance of the proposed Kalman-filter based non-linear AEC solution is better than the NLMS-based algorithm in both convergence and misalignment for all values of M. Furthermore, the performance of the proposed method is optimal for M=2; i.e., the case where only 2 measurements are stacked in the vectors of (12) and (13). This also implies that with only a moderate increase in complexity over the single observation model (M=1), significant performance is obtained that is maintained as M is increased. 
         [0030]    A state-space framework is developed to solve the non-linear acoustic echo cancellation problem. Both the linear as well as non-linear blocks of the echo model are assumed unknown and adapted using a set of properly designed Kalman filters running back to back on a per-sample basis. With such an arrangement, improvements in convergence and misalignment are obtained over NLMS-based adaptation. As such, guidelines are suggested on using the proposed algorithm. The results show that with only a minor increase in complexity significant improvement is obtained over the single-snapshot Kalman filter implementation. 
         [0031]      FIG. 4  is an embodiment of a flow diagram of an echo cancellation method  400  using cascaded Kalman filtering. At step  402 , the method  400  selects adaptation constant for the two filters. At step  404 , the method  400  initializes estimates of linear and non-linear filters. At step  406 , the method  400  receives incoming downlink (far end) signal sample. At step  408 , the method  400  performs Kalman filter time update of linear filter. At step  410 , the method  400  constructs data matrix for linear filter adaptation, i.e. using time-updated linear filter. At step  412 , the method  400  performs Kalman filter measurements update of linear filter. At step  414 , the method  400  performs Kalman filter time update of non-linear filter. At step  416 , the method  400  constructs data matrix for non-linear filter adaptation. At step  418 , the method  400  performs Kalman filter measurements update of non-linear filter. At step  420 , the method  400  generates echo using the updated linear and non-linear filters. At step  422 , the method  400  subtracts the echo generated in step  420  from microphone signal to generate echo free uplink signal, which is uplinked to far-end. 
         [0032]      FIG. 5  is an embodiment of an echo cancellation system diagram utilizing the method of  FIG. 4 . The echo cancellation system comprises a processor, a loudspeaker, a microphone, and an echo cancellation module. The processor is capable of executing instruction to perform functions, such as, the functions described herein. The microphone and loudspeaker function as described in  FIG. 1A  and  FIG. 1B . The echo cancellation module performs the method  400  of  FIG. 4 . 
         [0033]    While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.