# Patent

## Title
Estimation method and apparatus

## Abstract

A method and apparatus for producing an estimate of the acoustic response an environment. The method comprises receiving a first signal, and a second signal including a part of the first signal. The first and second signals are combined to produce a third signal. The first signal is combined with itself to produce a fourth signal. A plurality of weighted means of said third signal are computed and summed to produce a plurality of first summations. A plurality of weighted means of said fourth signal are computed and summed to produce a plurality of second summations. Said estimate is generated from said first and second summations.

## Background
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to a method for estimating the response of a system. More particularly, the present invention relates to a processing method which may be used to estimate the acoustic response of an environment.
2. Description of the Related Art
There is a requirement for methods and apparatus for removing echo signals from a signal output by a microphone. Such methods and apparatus have applications in, for example, hands free telephones. Here the echo signal is created by a signal received from another party which is output through a loudspeaker and input to the microphone.
One known echo cancellation apparatus takes a cross-correlation of the signal output by the loudspeaker with the signal output by the microphone, and an autocorrelation of the signal output through the loudspeaker. By using known techniques to solve a system of linear equations created using this cross-correlation and autocorrelation data, a set of filter coefficients can be generated. These coefficients can then be used to filter the signal input to the loudspeaker, and to produce an estimate of the echo signal included in the signal output by the microphone. This estimate is then subtracted from the signal output by the microphone to obtain the signal of interest.
The known echo cancellation apparatus described above is effective in reasonably accurately cancelling echo signals from the signal output from the microphone.
However, the known apparatus is unable to cope with a so-called “double talk” situation where both parties speak simultaneously causing errors in estimating the filter coefficients, such that an estimate of the echo signal is no longer accurately generated. Additionally, the autocorrelation may cause the equations to be ill conditioned, making it difficult to accurately solve the system of equations, and also making solution of the equations a process with high computational complexity.
In order to overcome this problem, some known echo cancellers are capable of detecting double-talk, and simply freezing the filter coefficients. However, it is often the case that filter coefficients are frozen incorrectly, meaning that the echo is not correctly cancelled, and in some cases, even increased.
BRIEF SUMMARY OF THE INVENTION
It is an object of the present invention to obviate or mitigate one or more of the problems outlined above.
The present invention provides a method for producing an estimate of the acoustic response of an environment. The method comprises receiving a first signal, and a second signal. The second signal including an acoustic echo of the first signal. Said first signal and said second signal are combined to produce a third signal, and said first signal is combined with itself to produce a fourth signal: A plurality of weighted means of said third signal are computed and summed so as to provide a plurality of first summations. A plurality of weighted means of said fourth signal are computed and summed to produce a plurality of second summations. The estimate of the acoustic response is generated from said first and second summations.
The method may be used, for example, in a handsfree telephone where a first speech signal is received and output through a loudspeaker. A second speech signal is input to a microphone together with part of the first speech signal output through the loudspeaker. In this case, the response of the system is defined by the manner in which an echo of the first signal is generated and included in the signal input to the microphone. Here, the response is an acoustic response determined by, for example, the geometry of the environment in which the microphone and loudspeaker are situated.
The invention can include generating a system of linear equations from said first and second summations. Such linear equations can be efficiently solved, as it is known that the system of equations is not ill conditioned, given that the coefficient matrix has dominant diagonals. The system of equations can be solved using the dichotomous coordinate descent algorithm, or any other suitable algorithm for solving systems of linear equations.
The first signal may be generated by spectrally transforming a first time domain signal. Similarly, the second signal may be generated by spectrally transforming a second time domain signal. Suitable spectral transforms include the Fourier transform and the Hadamard transform. When the Fourier transform is used, the time domain signals are transformed into frequency domain signals. Some embodiments of the invention use the fast Fourier transform as an efficient way of computing the Fourier transform of a discrete time domain signal.
The third signal may be the cross spectrum of the first and second signals, and the fourth signal may be the auto spectrum of the first signal. The weighted means may be computed by multiplying at least some values of the third and/or fourth signal by values generated using one or more predetermined polynomial functions. The predetermined polynomial functions are preferably B-splines. B-splines of various order can be used, although it has been found that cubic B-splines provide particularly desirable results.
Embodiments of the present invention will now be described, by way of example, with reference to the accompanying drawings, in which:



BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
FIG. 1 is a schematic illustration of an echo cancellation apparatus in accordance with an embodiment of the present invention;
FIG. 2 is a flow chart illustrating operation of the echo canceller of FIG. 1;
FIG. 3 is a flow chart showing part of the flow chart of FIG. 2 concerned with solving equations in further detail;
FIG. 4 is a MATLAB program implementing the process of the flow chart of FIG. 3;
FIG. 5 is a graph showing how forgetting factors are selected in the flow chart of FIG. 2;
FIG. 6 is a schematic illustration of a filter which may be used in the apparatus of FIG. 1 to update coefficients of the filter shown in FIG. 1;
FIGS. 7A to 7C and FIGS. 8A to 8C are graphs showing operation of the echo canceller of FIG. 1;
FIGS. 9 and 10 are MATLAB code fragments for creation of cubic B-spline functions;
FIG. 11 is a schematic illustration of an alternative echo cancellation apparatus in accordance with an embodiment of the present invention; and
FIG. 12 is a schematic illustration of a filter which may be used in the apparatus of FIG. 11 to update coefficients of the filter shown in FIG. 11.



DETAILED DESCRIPTION OF THE INVENTION
Referring to FIG. 1, there is illustrated an echo cancellation apparatus. A signal 1 travels along an input line and is output through a digital to analog converter (not shown), to a loudspeaker 2. A further signal such a human voice (not shown) is passed to an input of a microphone 3. The microphone signal is converted to a digital signal by means of an analog to digital converter (not shown). It is desirable that an output signal 4 of the microphone 3 contains only the human voice signal, and none of the signal output by the loudspeaker 2. However, in practice, some of the signal output by the loudspeaker 2 will be received by the microphone 3 such that the output signal 4 comprises a combination of the human voice signal and part of the loudspeaker output signal (referred to as “the echo signal”). It is desirable to remove the echo signal present in the output signal 4 of the microphone 3.
As shown in FIG. 1, the echo cancellation apparatus comprises a filter 5, which takes as input the signal 1 and which is configured to provide an estimate 6 of the echo signal. This estimate 6 is subtracted from the microphone output signal 4 by a subtractor 7. Therefore, if the echo is accurately estimated, an output 8 of the subtractor will be equal to the human voice signal input to the microphone 3.
In order to accurately model the echo signal, the filter 5 must be provided with a set of filter coefficients which can be applied to the signal 1. The set of filter coefficients should model the acoustic response of the environment in which the loudspeaker 2 and microphone 3 are situated. The echo cancellation apparatus comprises a filter coefficient setting circuit 9, which produces suitable filter coefficients. The filter coefficient setting circuit 9 takes as inputs the signal 1 which is input to the loudspeaker and the signal 4 which is output from the microphone 3.
The echo cancellation apparatus of FIG. 1 processes discrete samples in turn. The apparatus operates at a predetermined sampling frequency (Fs), which determines how often samples are taken. At each sample time, values of the signal 1 input to the loudspeaker 2 (sf), the signal 4 output from the microphone 3 (sm), the output 6 of the filter 5 (y), and the output 8 of the subtractor 7 (Δ) are considered in the manner set out below.
The purpose of the apparatus of FIG. 1 is to remove the echo signal from the signal 4 output from the microphone 3. There will be a time delay between a signal output by the loudspeaker 2 being input to the microphone 3 to form the echo signal. Furthermore, a signal output from the loudspeaker 2 at a single instant will not be input to the microphone 3 at a single instant, instead the signal output by the loudspeaker 2 will be input to the microphone 3 at a range of different times. The delay between a signal being output by the loudspeaker 2 and substantially all of that signal which are to form the echo signal being received by the microphone 3 is estimated to correspond to the time taken to obtain N samples. N will typically equate to a relatively large number of samples.
Operation of the filter 5 of FIG. 1 is described by equation (1):




  
    
      
        
          y
          ⁡
          
            (
            t
            )
          
        
        =
        
          
            ∑
            
              τ
              =
              0
            
            
              N
              -
              1
            
          
          ⁢
          
            
              
                s
                f
              
              ⁡
              
                (
                
                  t
                  -
                  τ
                
                )
              
            
            ⁢
            
              
                h
                t
              
              ⁡
              
                (
                τ
                )
              
            
          
        
      
    
    
      
        (
        1
        )
      
    
  




where

    
    
        y(t) is output 6 of the filter 5 at sample time t;
        ht is a set of N filter coefficients determined by the filter coefficient setting circuit 9 in the manner described below; and
        sf(t−τ) is the signal 1 input to the loudspeaker 2 at sample time (t−τ);
    
    


The filtering described by equation (1) can conveniently be carried out by a Finite Impulse Response (FIR) filter, the implementation of which will be readily understood by one of ordinary skill in the art.
The signal 8 output by the subtractor 7 is described by equation (2):

Δ(t)=sm(t)−y(t)  (2)

where

    
    
        sm(t) is the signal 4 output from the microphone 3 at sample time t;
        y(t) is the signal 6 output from the filter 5 at sample time t; and
        Δ(t) is the signal 8 output from the subtractor 7 at sample time t.
    
    


If the filter 5 accurately models the echo signal included in the signal 4 output by the microphone 3, Δ(t) should be close to the human voice signal input to the microphone 3 at time t.
A value M represents the number of samples to be processed in a particular step, and coefficients of the filter 5 are updated after every M samples as described below. A counter variable is incremented with each sample to determine when M samples have been processed. Calculation of coefficients for the filter 5 using the filter coefficient setting circuit 9 is now described with reference to FIG. 2.
At step S1 the Fourier transform of the signal 4 output from the microphone 3 is calculated. This converts the time-domain signal 4 output by the microphone 3 into a frequency-domain signal. Formally, the Fourier transform can be specified as:




  
    
      
        
          X
          ⁡
          
            (
            f
            )
          
        
        =
        
          
            ∫
            
              -
              ∞
            
            ∞
          
          ⁢
          
            
              x
              ⁡
              
                (
                t
                )
              
            
            ⁢
            
              e
              
                
                  -
                  j2π
                
                ⁢
                
                  
                
                ⁢
                ft
              
            
            ⁢
            
              
            
            ⁢
            
              d
              t
            
          
        
      
    
    
      
        (
        3
        )
      
    
  




Where, x(t) is the input signal and X(f) is its Fourier transform.
The above definition is formed from traditional continuous mathematics, but as described above, the present invention uses discrete signals sampled at a predetermined sampling frequency. The discrete Fourier transform (DFT) is specified as follows:




  
    
      
        
          X
          ⁡
          
            (
            k
            )
          
        
        =
        
          
            ∑
            
              n
              =
              0
            
            
              
                N
                FFT
              
              -
              1
            
          
          ⁢
          
            
              x
              ⁡
              
                (
                n
                )
              
            
            ⁢
            
              e
              
                
                  -
                  j
                
                ⁢
                
                  
                    2
                    ⁢
                    π
                  
                  N
                
                ⁢
                nk
              
            
          
        
      
    
    
      
        (
        4
        )
      
    
  




Here x(n) is an arbitrary discrete signal, and X(k) is the output transform. NFFT is the number of samples input to the DFT.
The above equation can be implemented by means of a computer program in a manner which will be apparent to one of ordinary skill in the art. However, simply writing a computer program to implement equation (4) is relatively inefficient. A more efficient way of implementing the discrete Fourier transform is the Fast Fourier Transform (FFT). The improvement in efficiency is considerable, converting an O(NFFT2) operation to an O(NFFT log2NFFT) operation.
Implementation of the Fast Fourier transform by means of a computer program is described in Press, William H.; Teukolsky, Saul A.; Vetterling, William T. and Flannery, Brian P. “Numerical Recipes in C—The Art of Scientific Computing” Second Edition, Cambridge University Press, 1992, at pages 497 to 536, and this description is incorporated herein by reference.
In preferred embodiments of the present invention, the FFT is used to compute the Fourier transform of the signal 4 output from the microphone 3. In preferred embodiments of the present invention, the FFT processing reads a predetermined number of samples NFFT of the signal 4 output from the microphone 3 (sm) from a memory and applies the FFT. NFFT is equal to 8192 in preferred embodiments of the present invention.
The FFT calculation is carried out according to equations (5) and (6):




  
    
      
        
          
            S
            m
          
          ⁡
          
            (
            k
            )
          
        
        =
        
          FFT
          ⁢
          
            {
            
              
                s
                m
              
              ⁡
              
                (
                
                  t
                  -
                  
                    N
                    FFT
                  
                  +
                  
                    1
                    ⁢
                    
                      :
                    
                    ⁢
                    t
                  
                
                )
              
            
            }
          
        
      
    
    
      
        (
        5
        )
      
    
  
  
    
      
        
          
            S
            m
          
          ⁡
          
            (
            k
            )
          
        
        =
        
          
            1
            
              N
              FFT
            
          
          ⁢
          
            
              ∑
              
                i
                =
                0
              
              
                
                  N
                  FFT
                
                -
                1
              
            
            ⁢
            
              
                
                  s
                  m
                
                ⁡
                
                  (
                  
                    i
                    +
                    t
                    -
                    
                      N
                      FFT
                    
                    +
                    1
                  
                  )
                
              
              ⁢
              
                e
                
                  
                    
                      -
                      j2π
                    
                    ⁢
                    
                      
                    
                    ⁢
                    ki
                  
                  
                    N
                    FFT
                  
                
              
            
          
        
      
    
    
      
        (
        6
        )
      
    
  




where:

    
    
        t is the current sample time;
        NFFT is as described above; and
        J=√{square root over (−1)}
    
    


It should be noted that the output of the FFT has values for NFFT frequency bins. However, given that sm(t) is real, only part of the FFT output need be considered, for values of k as represented by equation (7)




  
    
      
        
          
            S
            m
          
          ⁡
          
            (
            k
            )
          
        
        ,
        
          ∀
          
            
              k
              ⁢
              
                :
              
              ⁢
              0
            
            ≤
            k
            ≤
            
              (
              
                
                  
                    N
                    FFT
                  
                  2
                
                -
                1
              
              )
            
          
        
      
    
    
      
        (
        7
        )
      
    
  




This reduces the storage space required to implement the FFT algorithm.
At step S2 of FIG. 2, the FFT of the signal 1 input to the loudspeaker 2 (sf) is calculated, by reading NFFT samples from an appropriate memory. The FFT of the signal sf is calculated according to equation (8):




  
    
      
        
          
            S
            f
          
          ⁡
          
            (
            k
            )
          
        
        =
        
          FFT
          ⁢
          
            {
            
              
                s
                f
              
              ⁡
              
                (
                
                  t
                  -
                  
                    N
                    FFT
                  
                  +
                  
                    1
                    ⁢
                    
                      :
                    
                    ⁢
                    t
                  
                
                )
              
            
            }
          
        
      
    
    
      
        (
        8
        )
      
    
  
  
    
      
        
          
            S
            f
          
          ⁡
          
            (
            k
            )
          
        
        =
        
          
            1
            
              N
              FFT
            
          
          ⁢
          
            
              ∑
              
                i
                =
                0
              
              
                
                  N
                  FFT
                
                -
                1
              
            
            ⁢
            
              
                
                  s
                  f
                
                ⁡
                
                  (
                  
                    i
                    +
                    t
                    -
                    
                      N
                      FFT
                    
                    +
                    1
                  
                  )
                
              
              ⁢
              
                e
                
                  
                    
                      -
                      j2π
                    
                    ⁢
                    
                      
                    
                    ⁢
                    ki
                  
                  
                    N
                    FFT
                  
                
              
            
          
        
      
    
    
      
        (
        9
        )
      
    
  




where:

    
    
        t is the current sample time;
        NFFT is as described above; and
        j=√{square root over (−1)}
    
    


Again, it should be noted that only part of the FFT output need be considered, for values of k as represented by equation (7), which again reduces the storage space required to implement the FFT algorithm.
Having computed the FFT of the signal sf, the autospectrum Fa of the transformed signal Sf is computed at step S3. This computation is carried out in accordance with equations (10) and (11):

Fa(k)=Sf(k)Sf*(k)  (10)

Fa(k)=(Re[Sf(k)])2+(Im[Sf(k)])2  (11)

where:

    
    
        Re[ ] denotes the real part of a complex number;
        Im[ ] denotes the imaginary part of a complex number; and
        * represents the complex conjugate of a complex number.
    
    


At step S4 the cross spectrum of the transformed signals Sm and Sf is calculated according to equations (12) and (13) below:




  
    
      
        
          
            F
            c
          
          ⁡
          
            (
            k
            )
          
        
        =
        
          
            
              S
              m
            
            ⁡
            
              (
              k
              )
            
          
          ⁢
          
            
              S
              f
              *
            
            ⁡
            
              (
              k
              )
            
          
        
      
    
    
      
        (
        12
        )
      
    
  
  
    
      
        
          
            
              
                
                  F
                  c
                
                ⁡
                
                  (
                  k
                  )
                
              
              =
              
              ⁢
              
                
                  {
                  
                    
                      
                        Re
                        [
                        
                          
                            S
                            m
                          
                          ⁡
                          
                            (
                            k
                            )
                          
                        
                        ]
                      
                      ⁢
                      
                        Re
                        [
                        
                          
                            S
                            f
                          
                          ⁡
                          
                            (
                            k
                            )
                          
                        
                        ]
                      
                    
                    +
                    
                      
                        Im
                        [
                        
                          
                            S
                            m
                          
                          ⁡
                          
                            (
                            k
                            )
                          
                        
                        ]
                      
                      ⁢
                      
                        Im
                        ⁡
                        
                          [
                          
                            
                              S
                              f
                            
                            ⁡
                            
                              (
                              k
                              )
                            
                          
                          ]
                        
                      
                    
                  
                  }
                
                +
              
            
          
        
        
          
            
              
              ⁢
              
                j
                ⁢
                
                  {
                  
                    
                      
                        Im
                        ⁡
                        
                          [
                          
                            
                              S
                              m
                            
                            ⁡
                            
                              (
                              k
                              )
                            
                          
                          ]
                        
                      
                      ⁢
                      
                        Re
                        [
                        
                          
                            S
                            f
                          
                          ⁡
                          
                            (
                            k
                            )
                          
                        
                        ]
                      
                    
                    -
                    
                      
                        Re
                        [
                        
                          
                            S
                            m
                          
                          ⁡
                          
                            (
                            k
                            )
                          
                        
                        ]
                      
                      ⁢
                      
                        Im
                        [
                        
                          
                            S
                            f
                          
                          ⁡
                          
                            (
                            k
                            )
                          
                        
                        ]
                      
                    
                  
                  }
                
              
            
          
        
      
    
    
      
        (
        13
        )
      
    
  




It will be appreciated that the purpose of the coefficient setting circuit 9 (FIG. 1) is to generate a set of coefficients which can be applied to the signal 1 input to the loudspeaker 2. The auto and cross spectra created above can be used to generate these coefficients as is now described.
A plurality of polynomial B-spline functions are generated using computer programs described below. These functions are combined with the auto and cross spectra in the coefficient setting process. Nb B-splines Bn (where n=1, . . . Nb) each having values defined at frequencies within the range analysed by the FFT process are provided. Vectors Kmax and Kmin each having Nb elements are provided. Element n of the vector Kmax specifies a maximum frequency value at which the B-spline Bn has a non-zero value. Element n of the vector Kmin similarly specifies a minimum frequency value at which the B-spline Bn has a non-zero value.
The cross spectrum values are manipulated using the B-splines in accordance with equation (14) at step S5:




  
    
      
        
          
            
              b
              c
            
            ⁡
            
              (
              
                n
                -
                1
              
              )
            
          
          =
          
            
              ∑
              
                k
                =
                
                  
                    K
                    min
                  
                  ⁡
                  
                    (
                    n
                    )
                  
                
              
              
                
                  K
                  max
                
                ⁡
                
                  (
                  n
                  )
                
              
            
            ⁢
            
              
                
                  B
                  n
                
                ⁡
                
                  (
                  k
                  )
                
              
              ⁢
              
                F
                c
              
            
          
        
        ,
        
          n
          =
          1
        
        ,
        ...
        ⁢
        
          
        
        ,
        
          N
          b
        
      
    
    
      
        (
        14
        )
      
    
  




where

    
    
        Bn, Fc, Nb, Kmin, and Kmax are as described above; and
        bc is a vector containing Nb values indexed from 0 to Nb−1.
    
    


That is, each of the Nb B-spline functions is considered in turn. For each B-spline Bn each value between Kmin(n) and Kmax(n) is considered in turn, and multiplied by the corresponding value of the cross spectrum Fc. The results of these multiplications are then summed to provide a value for an element of the vector bc.
The auto-spectrum values computed according to equation (11) are also manipulated using the B-spline functions as described by equation (15) at step S6:




  
    
      
        
          
            
              R
              0
            
            ⁡
            
              [
              
                m
                ,
                n
              
              ]
            
          
          =
          
            
              ∑
              
                k
                =
                
                  K
                  1
                
              
              
                K
                2
              
            
            ⁢
            
              
                
                  B
                  m
                
                ⁡
                
                  (
                  k
                  )
                
              
              ⁢
              
                
                  B
                  n
                
                ⁡
                
                  (
                  k
                  )
                
              
              ⁢
              
                
                  F
                  a
                
                ⁡
                
                  (
                  k
                  )
                
              
            
          
        
        ,
        m
        ,
        
          n
          =
          1
        
        ,
        ...
        ⁢
        
          
        
        ,
        
          N
          b
        
      
    
    
      
        (
        15
        )
      
    
  




where:

    
    
        R0 is an Nb×Nb matrix;
        K1=max(Kmin(n), Kmin(m));
        K2=min(Kmax(n), Kmax(m)); and
        Bn, Bm, Fa, Nb, Kmin, and Kmax are as described above.
    
    


That is, each m, n, combination between 1,1 and Nb, Nb is considered to generate a value for element m, n. For each m,n, combination a summation between the maximum of the minimum non-zero values of Bn and Bm and the minimum of the maximum non-zero values of Bn and Bm is computed using a counter variable k. For each value of k appropriate values of Bn and Bm are multiplied together with an appropriate element of the auto-spectrum Fa. Each summation provides an element of the matrix R0.
Depending on the degree of the B-spline functions being used, only some m, n combinations produce non-zero values. With cubic B-splines (used in preferred embodiments of the invention as described below), only elements with indices such that |m−n|≦3 will produce non zero values. Therefore, given that the matrix R0 is Hermitian (i.e. R0[m,n]=R0[n,m]*, where * denotes the complex conjugate), only (4Nb−6) elements of the matrix R0 need be stored in memory. For B-splines of arbitrary degree p, only elements with indices such that |m−n|≦p will produce non zero values.
The matrix R0 is used to generate a matrix R, according to equation (16) at step S7:




  
    
      
        
          R
          ⁡
          
            [
            
              m
              ,
              n
            
            ]
          
        
        =
        
          {
          
            
              
                
                  
                    
                      
                        
                          R
                          0
                        
                        ⁡
                        
                          [
                          
                            
                              m
                              +
                              1
                            
                            ,
                            
                              n
                              +
                              1
                            
                          
                          ]
                        
                      
                      ,
                      
                        
                          if
                          ⁢
                          
                            
                          
                          ⁢
                          m
                        
                        ≠
                        n
                      
                    
                  
                
                
                  
                    
                      
                        
                          
                            vR
                            0
                          
                          ⁡
                          
                            [
                            
                              
                                m
                                +
                                1
                              
                              ,
                              
                                n
                                +
                                1
                              
                            
                            ]
                          
                        
                        +
                        
                          if
                          ⁢
                          
                            
                          
                          ⁢
                          m
                        
                      
                      =
                      n
                    
                  
                
              
              ⁢
              
                ∀
                m
              
            
            ,
            
              
                n
                ⁢
                
                  :
                
                ⁢
                0
              
              ≤
              m
            
            ,
            
              n
              ≤
              
                
                  N
                  b
                
                -
                1
              
            
          
        
      
    
    
      
        (
        16
        )
      
    
  




Where v is a coefficient (regularisation parameter) selected to aid convergence of solution of the system of linear equations (18) set out below, and is preferably set to be 1.0025.
In alternative embodiments of the invention, the matrix R may be generated according to equation (16a):




  
    
      
        
          R
          ⁡
          
            [
            
              m
              ,
              n
            
            ]
          
        
        =
        
          {
          
            
              
                
                  
                    
                      
                        
                          R
                          0
                        
                        ⁡
                        
                          [
                          
                            
                              m
                              +
                              1
                            
                            ,
                            
                              n
                              +
                              1
                            
                          
                          ]
                        
                      
                      ,
                      
                        
                          if
                          ⁢
                          
                            
                          
                          ⁢
                          m
                        
                        ≠
                        n
                      
                    
                  
                
                
                  
                    
                      
                        
                          
                            R
                            0
                          
                          ⁡
                          
                            [
                            
                              
                                m
                                +
                                1
                              
                              ,
                              
                                n
                                +
                                1
                              
                            
                            ]
                          
                        
                        +
                        μ
                      
                      ,
                      
                        
                          if
                          ⁢
                          
                            
                          
                          ⁢
                          m
                        
                        =
                        n
                      
                    
                  
                
              
              ⁢
              
                ∀
                m
              
            
            ,
            
              
                n
                ⁢
                
                  :
                
                ⁢
                0
              
              ≤
              m
            
            ,
            
              n
              ≤
              
                
                  N
                  b
                
                -
                1
              
            
          
        
      
    
    
      
        (
        
          16
          ⁢
          a
        
        )
      
    
  




Where μ is a coefficient (regularisation parameter) selected to aid convergence of solution of the system of linear equations (18) set out below, and is preferably set to be non negative (i.e. μ≧0).
A vector b is also created at step S7:

b=[bc(0), . . . bc(Nb−1)]T  (17)

Having formed the matrix R and the vector b, a system of linear equations (18) is created and solved at S8:

Rhc=b  (18)

where:

    
    
        hc is a vector of length Nb such that hc=[hc(0), . . . , hc(Nb−1)], and contains unknown parameters.

Any known method can be used to solve the system of linear equations (18). However, preferred embodiments of the present invention use an equation solving method known as the dichotomous coordinate descent (DCD) algorithm. The algorithm may be applied to the system of equations (18) directly, however, in preferred embodiments of the present invention given that the matrix R is real, the system of equations (18) can be broken up into real and imaginary parts using equations (19) and (20):

Rhrc=br  (19)

Rhic=bi  (20)

where:

b=br+j·bi; and

j=√{square root over (−1)}.

    
    


Each of equations (19) and (20) can then be solved independently, and hc can be generated according to equation (21):

hc=hrc+j·hic  (21)

Given the way in which the matrix R0 was created the matrix R is sparse. For example, where Nb is set to be 1000, there will be approximately 7×1000=7000 non-zero coefficients, when cubic B-spline functions as described below are used. This arises because each B-spline will be overlapped in the frequency domain by only seven other basis B-splines, including itself. Thus most elements of the matrix R are zero, and only elements on seven main diagonals are non-zero. If arbitrary polynomial functions are used in place of cubic B-splines, each function will overlap with each other function. Thus cubic B-splines provide sparseness defined approximately by:




  
    
      (
      
        7000
        1000
      
      )
    
    1000
  
  =
  0.007




(given that the matrix R in this case is of size 1000×1000).

Computational complexity of the DCD algorithm is proportional to sparseness, and thus the systems of equations (18), (19), (20) can be efficiently solved. Indeed, with sparseness of 0.007, as compared to sparseness of 1 obtained when arbitrary polynomials are used, complexity is reduced by 1/0.007=143 times. Some algorithms other than the DCD algorithm also have such complexity properties.
Application of the DCD algorithm to the system of equations (19) is now described with reference to FIG. 3. At step S9 the matrix R and the vector b are initialised as described above, and all elements of the vector hc are set to zero.
The algorithm maintains three counter variables p, m and it, a parameter Nb as described above which represents the number of elements in the solution vector (and also the number of equations), a parameter Mb which represents the number of bits used to represent each element of the solution vector hre (which may suitably be twelve), a parameter Nit which represents the maximum number of iterations through which the algorithm can pass for a particular value of m (which may suitably be eighty), a variable Flag which is used to indicate whether or not the solution vector has been updated, and a constant H which is a value greater than or equal to the magnitude of the maximum value which is expected for any value of the solution vector hrc. That is, the algorithm considers only solutions lying between −H and +H.
Some of these variables are initialised at step S10 and step S11 of FIG. 3. m and it are initialised to zero. p is initialised to −1. Nb, Mb, and Nit are set to the values described above which can either be chosen by a user or hard coded into the algorithm. H is initialised to 1, and a step size parameter d is initialised to H.
Operation of the algorithm can be summarised as follows. Each bit m of all elements p of the solution vector hrc is considered in turn. As described below, for each bit an element of the vector br is compared with various conditions and the result of this comparison determines whether or not further processing is applicable. This further processing comprises an appropriate update of the element p of the solution vector hrc corresponding to the element being considered and updates of selected elements of the vector br.
When it is determined that further processing for that element is not appropriate (for the current bit), the next element is considered. When each element has been considered for that particular bit, all elements of the solution vector are considered for the next bit in turn, and updated appropriately. This process continues until all elements have been considered for all bits. If the total number of iterations for any one bit reaches a predetermined limit the algorithm again ends. The algorithm is described in further detail below.
At step S11, the value of m is incremented to ‘1’. Thus, the algorithm is now considering the first bit of each element in the solution vector hrc. it is set to 0 to indicate that no iterations have yet taken place for the current value of m.
At Step S12, a step size parameter d is updated according to equation (22):

d=2−mH  (22)

where m and H are as described above. Given that m is set to 1, d is initially set to be equal to





  
    H
    2
  
  .




As will be described below, setting d in accordance with equation (22) allows each bit of each value of the solution vector hrc to be considered in turn.

At Step S13 of FIG. 3, the variable it is incremented, and the variable Flag is set to ‘0’. p (the current element of the solution vector under consideration) is incremented at Step S14.
Having performed the necessary incrementation and initialisation, the algorithm can begin processing elements of the vectors, in an attempt to solve the system of equations.
At step S15, the following operation is performed:




  
    
      
        arg
        =
        
          arg
          ⁢
          
            
          
          ⁢
          max
          ⁢
          
            {
            
              
                
                  b
                  r
                
                ⁡
                
                  (
                  p
                  )
                
              
              ,
              
                -
                
                  
                    b
                    r
                  
                  ⁡
                  
                    (
                    p
                    )
                  
                
              
              ,
              
                
                  d
                  2
                
                ⁢
                
                  R
                  ⁡
                  
                    (
                    
                      p
                      ,
                      p
                    
                    )
                  
                
              
            
            }
          
        
      
    
    
      
        (
        23
        )
      
    
  




where





  
    
      
        
          arg
          ⁢
          
            
          
          ⁢
          max
          ⁢
          
            {
            
              
                
                  b
                  r
                
                ⁡
                
                  (
                  p
                  )
                
              
              ,
              
                -
                
                  
                    b
                    r
                  
                  ⁡
                  
                    (
                    p
                    )
                  
                
              
              ,
              
                
                  d
                  2
                
                ⁢
                
                  R
                  ⁡
                  
                    (
                    
                      p
                      ,
                      p
                    
                    )
                  
                
              
            
            }
          
        
        =
        
          {
          
            
              
                
                  1
                  ,
                  
                    if
                    ⁢
                    
                      {
                      
                        
                          
                            b
                            r
                          
                          ⁡
                          
                            (
                            p
                            )
                          
                        
                        >
                        
                          
                            -
                            
                              
                                b
                                r
                              
                              ⁡
                              
                                (
                                p
                                )
                              
                            
                          
                          ⋀
                          
                            
                              b
                              r
                            
                            ⁡
                            
                              (
                              p
                              )
                            
                          
                        
                        >
                        
                          
                            d
                            2
                          
                          ⁢
                          
                            R
                            ⁡
                            
                              (
                              
                                p
                                ,
                                p
                              
                              )
                            
                          
                        
                      
                      }
                    
                  
                
              
            
            
              
                
                  2
                  ,
                  
                    if
                    ⁢
                    
                      {
                      
                        
                          -
                          
                            
                              b
                              r
                            
                            ⁡
                            
                              (
                              p
                              )
                            
                          
                        
                        >
                        
                          
                            
                              b
                              r
                            
                            ⁡
                            
                              (
                              p
                              )
                            
                          
                          ⋀
                          
                            -
                            
                              
                                b
                                r
                              
                              ⁡
                              
                                (
                                p
                                )
                              
                            
                          
                        
                        >
                        
                          
                            d
                            2
                          
                          ⁢
                          
                            R
                            ⁡
                            
                              (
                              
                                p
                                ,
                                p
                              
                              )
                            
                          
                        
                      
                      }
                    
                  
                
              
            
            
              
                
                  3
                  ,
                  
                    if
                    ⁢
                    
                      {
                      
                        
                          
                            d
                            2
                          
                          ⁢
                          
                            R
                            ⁡
                            
                              (
                              
                                p
                                ,
                                p
                              
                              )
                            
                          
                        
                        ≥
                        
                          
                            
                              -
                              
                                
                                  b
                                  r
                                
                                ⁡
                                
                                  (
                                  p
                                  )
                                
                              
                            
                            ⋀
                            
                              d
                              2
                            
                          
                          ⁢
                          
                            R
                            ⁡
                            
                              (
                              
                                p
                                ,
                                p
                              
                              )
                            
                          
                        
                        ≥
                        
                          
                            b
                            r
                          
                          ⁡
                          
                            (
                            p
                            )
                          
                        
                      
                      }
                    
                  
                
              
            
          
        
      
    
    
      
        (
        24
        )
      
    
  




The value of arg is assessed at the decision block of step S16.
If arg=1, the element of the solution vector under consideration, that is hrc(p), is set according to equation (25) at step S17.

hrc(p)=hrc(p)+d  (25)

The vector b is then updated such that values of b are set according to equation (26) at step S18:

br(r)=br(r)−dR(p,r),∀r:i1≦i2  (26)

where

    
    
        i1=max(1,p−3); and
        i2=min(Nb,p+3).
    
    


That is, at most seven values of the vector br are updated.
If arg=2, the element of the solution vector under consideration, that is hrc(p), is set according to equation (27) at step S19.

hrc(p)=hrc(p)−d  (27)

The vector br is then updated such that values of br are set according to equation (28) at step S20:

br(r)=br(r)+dR(p,r),∀r:i1≦r≦i2  (28)

where

    
    
        i1=max(1,p−3); and
        i2=min(Nb,p+3).
    
    


That is, again at most seven values of the vector br are updated.
If arg=1 or if arg=2, Flag is set to ‘1’ at step S21.
If arg=3, no update is made to any element of the solution vector hrc or the vector br, and Flag is not updated.
Having made the updates set out above, a decision block at step S22 checks the condition of equation (29);

p=Nb−1  (29)

If p is not equal to Nb−1 (i.e. all elements of the solution vector hrc have not yet been considered), control returns to step S14 and p is incremented. This process continues until all entries in the solution vector hrc have been considered, and hrc and br are updated in the manner set out above.
If p is equal to Nb−1 (step S22), a check is made to determine the value of Flag (step S23).
Flag is initially set to ‘0’ at step S13, and only updated (to be equal to ‘1’) if entries of the solution vector hrc and the vector br are amended by steps S17 and S18, or steps S19 and S20. Thus, if Flag=1, it can be deduced that a change was made to at least one element of hrc (i.e. one hrc(p) value) and some values of br, during the current iteration it. Therefore, assuming that the total number of iterations it has not exceeded the limit set by Nit (checked at S24), p is reset to ‘−1’ at step S25, control returns to step S13, and the current bit is again processed for each element p of the solution vector hrc. This is because further processing of each element of hrc for the current value of m may result in further updates. If the total number of iterations has reached the limit set by Nit (step S24), the algorithm exits.
If it is the case that Flag=0 (step S23), it can be deduced that no updates have been made to any elements of the solution vector hrc or the vector br for any value of p (that is any element of the solution vector hrc). Given that further iterations of steps S13 to S23 will result in no changes to the elements of hrc (given that neither d, hrc nor br have changed), a check is made to determine whether or not all bits m have been considered (step S26), by comparing the current value of m with the total number of bits Mb. If it is the case that m=Mb, i.e. all bits have been considered, there is no work for the algorithm to do, and the algorithm exits.
If it is the case that all bits have not been considered, p is reset to −1 at step S27, and control returns to step S11, and the algorithm processes the next bit of the solution vector entries.
In the preceding discussion, it has been explained that entries of the solution vector hrc are processed for each bit of the solution vector entries, starting with the most significant bit. However, it can be seen from the preceding discussion, that at all steps the entire value of an element of hrc is used for update. Bitwise processing is in fact achieved because following each increment of m (step S11) a new value of d is created at step S12. Given that each increment of m will result in the value of d being divided by two (given the presence of the expression 2−m in the expression for d), and given that d is used to update both hrc and br, after an update of d the next most significant bit is then updated.
It has been explained that H is preferably set to be equal to 1. That is:

H=20=1  (30)

Thus, when H is chosen in accordance with equation (30), the value of d can be updated without multiplication or division, simply by appropriate bit shift operations. This is particularly advantageous, because microprocessors can typically carry out bit shift operations far more efficiently than multiplication or division. In some embodiments of the present invention the value of H may instead by set to a different power of two, and in such cases the algorithm can still be implemented using bit shift operations, thus achieving the mentioned efficiency benefit.
FIG. 4 illustrates a MATLAB program for implementing the algorithm of FIG. 3.
Having carried out the algorithm described above, the vector hrc will now be a solution vector to the system of equations (19). The system of equations (20) can similarly be solved to produce hic, and a solution vector hc can then be formed according to equation (21).
Referring back to the flow chart of FIG. 2, an estimate of the room frequency response is then calculated at step S28 in accordance with equation (31):




  
    
      
        
          
            
              H
              c
            
            ⁡
            
              (
              k
              )
            
          
          =
          
            
              ∑
              
                n
                =
                1
              
              
                N
                b
              
            
            ⁢
            
              
                
                  h
                  c
                
                ⁡
                
                  (
                  
                    n
                    -
                    1
                  
                  )
                
              
              ⁢
              
                
                  B
                  n
                
                ⁡
                
                  (
                  k
                  )
                
              
            
          
        
        ,
        
          k
          =
          0
        
        ,
        ...
        ⁢
        
          
        
        ,
        
          
            N
            FFT
          
          -
          1
        
      
    
    
      
        (
        31
        )
      
    
  




That is, for each value of the Fourier transform a sum is calculated by multiplying each value n of the vector hc by a value from a selected B-spline function n, and adding the results of the multiplications. The resulting vector Hc represents an estimate of the acoustic frequency response of the environment in which the microphone 3 and loudspeaker 2 (FIG. 1) are located. Elements of this vector are therefore used as coefficients for an auxiliary filter which filters the frequency domain signal Sf input to the loudspeaker 2 and subtracts the filtered result from the frequency domain signal Sm, as represented by equation (32), at step S29:

Ya(k)=Sm(k)−Sf(k)Hc(k), k=0, . . . , NFFT−1  (32)

Energy, De, of the residual signal Ya is then calculated at step S30, by summing the squares of all value of the vector Ya according to equation (33):




  
    
      
        
          D
          e
        
        =
        
          
            
              ∑
              
                k
                =
                0
              
              
                
                  N
                  FFT
                
                -
                1
              
            
            ⁢
            
              
                
                
                  
                    Y
                    a
                  
                  ⁡
                  
                    (
                    k
                    )
                  
                
                
              
              2
            
          
          =
          
            
              
                ∑
                
                  k
                  =
                  0
                
                
                  
                    N
                    FFT
                  
                  -
                  1
                
              
              ⁢
              
                (
                
                  
                    Re
                    ⁡
                    
                      [
                      
                        
                          Y
                          a
                        
                        ⁡
                        
                          (
                          k
                          )
                        
                      
                      ]
                    
                  
                  2
                
                )
              
            
            +
            
              (
              
                
                  Im
                  ⁡
                  
                    [
                    
                      
                        Y
                        a
                      
                      ⁡
                      
                        (
                        k
                        )
                      
                    
                    ]
                  
                
                2
              
              )
            
          
        
      
    
    
      
        (
        33
        )
      
    
  




Similarly, energy, Dm, of the signal Sm is then calculated at step S31 by summing the squares of values of Sm according to equation (34):




  
    
      
        
          D
          m
        
        =
        
          
            
              ∑
              
                k
                =
                0
              
              
                
                  N
                  FFT
                
                -
                1
              
            
            ⁢
            
              
                
                
                  
                    S
                    m
                  
                  ⁡
                  
                    (
                    k
                    )
                  
                
                
              
              2
            
          
          =
          
            
              
                ∑
                
                  k
                  =
                  0
                
                
                  
                    N
                    FFT
                  
                  -
                  1
                
              
              ⁢
              
                (
                
                  
                    Re
                    ⁡
                    
                      [
                      
                        
                          S
                          m
                        
                        ⁡
                        
                          (
                          k
                          )
                        
                      
                      ]
                    
                  
                  2
                
                )
              
            
            +
            
              (
              
                
                  Im
                  ⁡
                  
                    [
                    
                      
                        S
                        m
                      
                      ⁡
                      
                        (
                        k
                        )
                      
                    
                    ]
                  
                
                2
              
              )
            
          
        
      
    
    
      
        (
        34
        )
      
    
  




The values of De and Dm are then compared with themselves, and also with elements of a three element vector Tsh which contains predetermined threshold energy levels (step S32). In preferred embodiments of the present invention, Th is set according to equation (35):

Tsh=[0.001, 0.003, 0.125]  (35)

It will be appreciated that in alternative embodiments of the present invention, the vector Tsh may contain a different number of predetermined threshold energy levels.
This comparison determines the value of a parameter a which is used to modify coefficients of the filter 5 (FIG. 1). The parameter a is computed according to equation (36) at step S33.




  
    
      
        α
        =
        
          {
          
            
              
                
                  
                    
                      
                        
                          α
                          0
                        
                        ⁡
                        
                          (
                          1
                          )
                        
                      
                      ,
                      
                        
                          if
                          ⁢
                          
                            
                          
                          ⁢
                          
                            D
                            e
                          
                        
                        <
                        
                          
                            
                              T
                              sh
                            
                            ⁡
                            
                              (
                              1
                              )
                            
                          
                          ⁢
                          
                            D
                            m
                          
                        
                      
                    
                  
                
                
                  
                    
                      
                        
                          α
                          0
                        
                        ⁡
                        
                          (
                          2
                          )
                        
                      
                      ,
                      
                        
                          if
                          ⁢
                          
                            
                          
                          ⁢
                          
                            
                              T
                              sh
                            
                            ⁡
                            
                              (
                              1
                              )
                            
                          
                          ⁢
                          
                            D
                            m
                          
                        
                        ≤
                        
                          D
                          e
                        
                        <
                        
                          
                            
                              T
                              sh
                            
                            ⁡
                            
                              (
                              2
                              )
                            
                          
                          ⁢
                          
                            D
                            m
                          
                        
                      
                    
                  
                
                
                  
                    
                      
                        
                          α
                          0
                        
                        ⁡
                        
                          (
                          3
                          )
                        
                      
                      ,
                      
                        
                          if
                          ⁢
                          
                            
                          
                          ⁢
                          
                            
                              T
                              sh
                            
                            ⁡
                            
                              (
                              2
                              )
                            
                          
                          ⁢
                          
                            D
                            m
                          
                        
                        ≤
                        
                          D
                          e
                        
                        <
                        
                          
                            
                              T
                              sh
                            
                            ⁡
                            
                              (
                              3
                              )
                            
                          
                          ⁢
                          
                            D
                            m
                          
                        
                      
                    
                  
                
                
                  
                    
                      0
                      ,
                      
                        
                          if
                          ⁢
                          
                            
                          
                          ⁢
                          
                            D
                            e
                          
                        
                        ≥
                        
                          
                            
                              T
                              sh
                            
                            ⁡
                            
                              (
                              3
                              )
                            
                          
                          ⁢
                          
                            D
                            m
                          
                        
                      
                    
                  
                
              
              ⁢
              
                

              
              ⁢
              where
              ⁢
              
                
              
              ⁢
              
                α
                0
              
            
            =
            
              [
              
                1
                ⁢
                
                  ,
                
                ⁢
                0.25
                ⁢
                
                  ,
                
                ⁢
                0.05
              
              ]
            
          
        
      
    
    
      
        (
        36
        )
      
    
  




where α0=[1, 0.25, 0.05]

FIG. 5 is a graph showing the relationship between the value




  
    D
    e
  
  
    D
    m
  




and the value taken by α.

The inverse fast Fourier transform (IFFT) of the function Hc(k) is then computed at step S34, to obtain a representation of Hc in the time domain as shown in equation (37):

gc=IFFT{Hc}  (37)

where gc is an N element vector.

Having computed appropriate values of α and gc, values of ht which are used as coefficients of the filter 5 (FIG. 1) are updated according to equation (38) at step S35. ht then remains constant until a further M samples have been processed.

ht(τ)=(1−α)ht−M(τ)+αgc(τ),∀τ=0, . . . , N−1  (38)

FIG. 6 shows a filter suitable for implementing that which is denoted by equation (38). It can be seen that a multiplier 10 multiplies a value of gc(τ) by the determined value of α. An adder 11 adds this value to a previous value of ht−M(τ) multiplied by (1−α) (the multiplication being achieved by a multiplier 12). It should be noted that a time delay element 13 provides a value of ht−M(τ) time delayed by M samples.
Referring back to equations (36) and (38) it can be seen that if the energy of the residual signal (De) is low relative to the energy of the signal output from the microphone (Dm), i.e.




  
    
      
        
          D
          e
        
        <
        
          
            
              T
              sh
            
            ⁡
            
              (
              1
              )
            
          
          ⁢
          
            
          
          ⁢
          
            D
            m
          
        
      
    
    
      
        (
        39
        )
      
    
  
  
    
      
        ∴
        
          
            
              D
              e
            
            
              D
              m
            
          
          <
          
            
              T
              sh
            
            ⁡
            
              (
              1
              )
            
          
        
      
    
    
      
        (
        40
        )
      
    
  




the value of gc(τ) is added to the previous filter coefficient value with a maximum coefficient (α=1). This will provide rapid convergence to accurate filter coefficient values.
It can also be seen that if the energy of the residual signal (De) is high relative to the energy of the signal output from the microphone (Dm), i.e.




  
    
      
        
          D
          e
        
        ≥
        
          
            
              T
              sh
            
            ⁡
            
              (
              3
              )
            
          
          ⁢
          
            
          
          ⁢
          
            D
            m
          
        
      
    
    
      
        (
        41
        )
      
    
  
  
    
      
        ∴
        
          
            
              D
              e
            
            
              D
              m
            
          
          ≥
          
            
              T
              sh
            
            ⁡
            
              (
              3
              )
            
          
        
      
    
    
      
        (
        42
        )
      
    
  




the value of gc(τ) is not added to the previous filter coefficient value (α=0). Therefore:

ht(τ)=ht−M(τ),∀τ=0, . . . , N−1  (43)

Thus, the coefficients used by the filter 5 remain constant. Such energy values are likely to occur in a so-called “double-talk” situation. Keeping filter coefficients constant in this way prevents the filter from diverging.
If the relationship between the two energy levels is moderate, a moderate value of a is chosen as shown in equation (36) to speed convergence of the echo canceller.
FIGS. 7A to 7C are three graphs showing signals produced when a signal is received by the loudspeaker 2, but no voice signal is received by the microphone 3. FIG. 7A shows the signal input to the loudspeaker 2, FIG. 7B shows the zero voice signal, and FIG. 7C shows attenuation (in dB) of the echo signal modelled by the filter 5 using filter coefficients created in the manner described above.
FIGS. 8A to 8C illustrate a scenario where double talk is present. FIG. 8A is identical to FIG. 7A. A voice signal input to the microphone 3 is illustrated in the graph of FIG. 8B. It can be seen from FIG. 8C that the double talk does not cause any observable difference to the modelled echo signal, as is desirable. This is contrary to that which would be expected with prior art echo cancellers where the double-talk situation would cause the echo signal to exhibit erratic behaviour, which is clearly disadvantageous.
Having described operation of the echo canceller, calculation of the Nb B-splines used in the method described above is now described. B-splines are well known in the art and are described in, for example Unser, M: “Splines, a perfect fit for Signal and Image Processing”, IEEE Signal Processing Magazine November 1999, pp 22-38, the contents of which are herein incorporated by reference. The use of B-splines is therefore not described in detail here, however it can be noted that B-splines can be defined by equations (44) to (47)




  
    
      
        
          
            b
            0
          
          ⁡
          
            (
            f
            )
          
        
        =
        
          {
          
            
              
                
                  1
                  ,
                
              
              
                
                  
                  ⁢
                  
                    
                      if
                      -
                      
                        F
                        2
                      
                    
                    <
                    
                      
                      f
                      
                    
                    <
                    
                      F
                      2
                    
                  
                
              
            
            
              
                
                  
                    1
                    2
                  
                  ,
                
              
              
                
                  
                  ⁢
                  
                    
                      if
                      ⁢
                      
                        
                      
                      ⁢
                      
                        
                        f
                        
                      
                    
                    =
                    
                      F
                      2
                    
                  
                
              
            
            
              
                
                  0
                  ,
                
              
              
                otherwise
              
            
          
        
      
    
    
      
        (
        44
        )
      
    
  
  
    
      
        
          
            b
            1
          
          ⁡
          
            (
            f
            )
          
        
        =
        
          {
          
            
              
                
                  
                  ⁢
                  
                    
                      1
                      -
                      
                        
                          
                          f
                          
                        
                        F
                      
                    
                    ,
                  
                
              
              
                
                  
                  ⁢
                  
                    
                      if
                      ⁢
                      
                        
                      
                      ⁢
                      
                        
                        f
                        
                      
                    
                    <
                    F
                  
                
              
            
            
              
                
                  
                  ⁢
                  
                    0
                    ,
                  
                
              
              
                
                  
                  ⁢
                  otherwise
                
              
            
          
        
      
    
    
      
        (
        45
        )
      
    
  
  
    
      
        
          
            b
            2
          
          ⁡
          
            (
            f
            )
          
        
        =
        
          {
          
            
              
                
                  
                  ⁢
                  
                    
                      
                        3
                        4
                      
                      -
                      
                        
                          f
                          2
                        
                        
                          F
                          2
                        
                      
                    
                    ,
                  
                
              
              
                
                  
                  ⁢
                  
                    
                      if
                      ⁢
                      
                        
                      
                      ⁢
                      
                        
                        f
                        
                      
                    
                    <
                    
                      F
                      2
                    
                  
                  ⁢
                  
                    
                  
                
              
            
            
              
                
                  
                  ⁢
                  
                    
                      
                        
                          f
                          2
                        
                        
                          2
                          ⁢
                          
                            F
                            2
                          
                        
                      
                      -
                      
                        
                          3
                          ⁢
                          
                            
                            f
                            
                          
                        
                        
                          2
                          ⁢
                          F
                        
                      
                      +
                      
                        9
                        8
                      
                    
                    ,
                  
                
              
              
                
                  
                  ⁢
                  
                    
                      if
                      ⁢
                      
                        
                      
                      ⁢
                      
                        F
                        2
                      
                    
                    ≤
                    
                      
                    
                    ⁢
                    
                      
                      f
                      
                    
                    <
                    
                      
                        3
                        ⁢
                        F
                      
                      2
                    
                  
                
              
            
            
              
                
                  
                  ⁢
                  
                    0
                    ,
                  
                
              
              
                
                  
                  ⁢
                  otherwise
                
              
            
          
        
      
    
    
      
        (
        46
        )
      
    
  
  
    
      
        
          
            b
            3
          
          ⁡
          
            (
            f
            )
          
        
        =
        
          {
          
            
              
                
                  
                  ⁢
                  
                    
                      
                        
                          1
                          6
                        
                        ⁢
                        
                          
                            (
                            
                              2
                              -
                              
                                
                                  
                                  f
                                  
                                
                                F
                              
                            
                            )
                          
                          3
                        
                      
                      -
                      
                        
                          2
                          3
                        
                        ⁢
                        
                          
                            (
                            
                              1
                              -
                              
                                
                                  
                                  f
                                  
                                
                                F
                              
                            
                            )
                          
                          3
                        
                      
                    
                    ,
                  
                
              
              
                
                  
                  ⁢
                  
                    
                      if
                      ⁢
                      
                        
                      
                      ⁢
                      0
                    
                    ≤
                    
                      
                      f
                      
                    
                    <
                    F
                  
                
              
            
            
              
                
                  
                  ⁢
                  
                    
                      
                        1
                        6
                      
                      ⁢
                      
                        
                          (
                          
                            2
                            -
                            
                              
                                
                                f
                                
                              
                              F
                            
                          
                          )
                        
                        3
                      
                    
                    ,
                  
                
              
              
                
                  
                  ⁢
                  
                    
                      if
                      ⁢
                      
                        
                      
                      ⁢
                      F
                    
                    ≤
                    
                      
                      f
                      
                    
                    <
                    
                      2
                      ⁢
                      F
                    
                  
                
              
            
            
              
                
                  
                  ⁢
                  
                    0
                    ,
                  
                
              
              
                
                  
                  ⁢
                  otherwise
                
              
            
          
        
      
    
    
      
        (
        47
        )
      
    
  




where f is a particular frequency, and F is a frequency shift between two neighbouring B-splines.

Equation (44) defines a zero order B-spline, equation (45) defines a first order B-spline, equation (46) defines a second order B-spline and equation (47) defines a third order or cubic B-spline. B-splines of other orders can also be defined. Preferred embodiments of the present invention make use of cubic B-splines in accordance with equation (47). Using cubic B-splines provides a relatively sparse matrix R as described above. It should be noted that using lower order B-splines will reduce both sparseness and computational complexity, but will do this at the cost of accuracy. For example zero-order B-splines defined by equation (44) will provide a matrix R, in which only elements on the main diagonal are non-zero. However zero-order B-splines do not provide sufficiently accurate modelling. Thus, it has been found that cubic B-splines provide a suitable compromise between computational complexity and accuracy.
FIG. 9 shows MATLAB code which can be used to generate cubic B-spline values. The code comprises a function B_spline_basis which takes values Fs, FL FH, DL. DH, and NFFT as input parameters. Fs is the sampling frequency in Hertz as described above, FL is the lowest frequency in the output of the FFT calculations described above in Hertz, FH is the highest frequency in the output of the FFT calculations described above in Hertz. DL is the frequency step at low frequencies and DH is the frequency step at high frequencies. The function returns an array B containing appropriate values for Nb cubic B-splines, together with the vector Kmax and Kmin referred to above. For any particular frequency only four B-splines will have non-zero values. Thus the array B can be of size




  
    
      
        N
        FFT
      
      2
    
    ×
    4
  
  ,




containing four B-spline values for each frequency.

It should be noted that line 36 of the code of FIG. 9 makes a call to a B_spl3 function which generates appropriate B-spline values. This function is shown in FIG. 10.
FIG. 11 illustrates an alternative echo canceller architecture to that shown in FIG. 1. In FIG. 11, the filter coefficient setting circuit 9′ operates identically to that of FIG. 1, but takes as input the residual signal 8 output from the subtractor 7 in place of the signal 4 output by the microphone 3. The filter coefficient setting circuit 9′ thus manipulates the residual signal 8 in the same way in which the filter coefficient setting circuit 9 (FIG. 1) manipulates the signal 4 output by the microphone 3.
Embodiments of the invention such as that shown in FIG. 11 operate as described, save for an amendment to equation (38) setout above which is amended to become:

ht(τ)=ht−M(τ)+αgc(τ),∀τ=0, . . . , N−1  (48)

Equation (48) can be implemented by the filter of FIG. 12, which it can be seen is based upon that of FIG. 6.
Although preferred embodiments of the present invention have been described with reference to B-splines, it should be noted that other polynomial functions can be used in a similar manner. However, it has been found that using B-splines and more particularly cubic B-splines provides advantages in terms of computational complexity and accuracy.
Embodiments of the invention described above operate on frequency domain signals generated by Fourier transforming time domain signals. It will be appreciated that other spectral-domain transforms such as the Hadamard transform can be applied to the time-domain signals, and the output signals can then be manipulated in the manner described above. Furthermore, in some embodiments of the invention, time domain signals can be manipulated directly.
Although preferred embodiments and various alternative embodiments of the invention have been described above, it will be appreciated that various modifications can be made to the invention without departing from the scope and spirit of the invention. For example, although one way of computing B-splines is shown in FIGS. 9 and 10, it will be appreciated that B-splines can be computed in a variety of different ways which will be apparent to one of ordinary skill in the art.

## Claims

1. A method of producing an estimate of the acoustic response of an environment, the method comprising:
receiving a first signal, and a second signal, the second signal including an acoustic echo of the first signal;
combining said first signal and said second signal to produce a third signal;
combining said first signal with itself to produce a fourth signal;
multiplying a first plurality of values sampled from said third signal by respective values generated using a first predetermined polynomial function and summing results of said multiplications to generate a first weighted mean of said third signal;
multiplying a second plurality of values sampled from said third signal by respective values generated using a second predetermined polynomial and summing results of said multiplications to generate a second weighted mean of said third signal;
computing a plurality of weighted means of said fourth signal; and
generating said estimate from said first and second weighted means of said third signal and said plurality of weighted means of said fourth signal;
wherein each of said first and second polynomial functions produces values for a predetermined set of discrete frequencies; and
the method further comprises computing for each of said first and second polynomials a maximum frequency for which the output of the polynomial is non-zero and a minimum frequency for which the output of the polynomial is non-zero.

2. A method according to claim 1, wherein said first and second signals are frequency domain signals and the method comprises multiplying each value of said third signal between said minimum frequency and said maximum frequency with corresponding values generated using a respective one of said polynomial functions.

3. A method according to claim 1, further comprising:
multiplying a plurality of values of said fourth signal by respective values generated using a predetermined polynomial and summing results of said multiplications to generate one of said weighted means of said fourth signal.

4. A method according to claim 3, further comprising:
multiplying a first plurality of values of said fourth signal by respective values generated using a third predetermined polynomial and summing results of said multiplications to generate a first weighted mean of said fourth signal; and
multiplying a second plurality of values of said fourth signal by respective values generated using a fourth predetermined polynomial and summing results of said multiplications to generate a second weighted mean of said fourth signal.

5. A method according to claim 4, wherein each polynomial produces values for a predetermined set of discrete frequencies.

6. A method according to claim 1, wherein said first and second signals are frequency domain signals, the method comprising:
spectrally transforming a first time domain signal to generate said first signal; and
spectrally transforming a second time domain signal to generate said second signal.

7. A method according to claim 1, wherein said third signal is the cross-spectrum of the first and second signals and wherein the fourth signal is the autospectrum of the first signal.

8. A method according to claim 1 wherein:
said first signal is output via a loudspeaker;
said second signal is input to a microphone; and
the loudspeaker and the microphone are located within the environment.

9. A method of producing an estimate of the acoustic response of an environment, the method comprising:
receiving a first signal and a second signal, the second signal including an acoustic echo of the first signal;
combining said first signal and said second signal to produce a third signal;
combining said first signal with itself to produce a fourth signal;
multiplying values sampled from said fourth signal by respective values generated using a third predetermined polynomial and summing results of said multiplications to generate a first weighted mean of said fourth signal;
multiplying values sampled from said fourth signal by respective values generated using a fourth predetermined polynomial and summing results of said multiplications to generate a second weighted means of said fourth signal; and
generating said estimate from said weighted means of said third signal and said first and second weighted means of said fourth signal;
wherein each of said third and fourth polynomials produces values for a predetermined set of discrete frequencies; and
the method further comprising computing for each of said third and fourth polynomials a maximum frequency for which the output of the polynomial is non-zero and a minimum frequency for which the output of the polynomial is non-zero.

10. A method according to claim 9, comprising:
spectrally transforming a first time domain signal to generate said first signal; and
spectrally transforming a second time domain signal to generate said second signal.

11. A method according to claim 9, wherein said first and second signals are frequency domain signals.

12. A method according to claim 11, further comprising:
Fourier transforming a first time domain signal to generate said first signal; and
Fourier transforming a second time domain signal to generate said second signal.

13. A method according claim 12, comprising fast Fourier transforming said first and second time domain signals.

14. A method according to claim 11, wherein said third signal is the cross-spectrum of the first and second signals.

15. A method according to claim 11, wherein the fourth signal is the auto-spectrum of the first signal.

16. A method according to claim 9, further comprising:
multiplying a plurality of values sampled from said third signal by respective values generated using a predetermined polynomial function and summing results of said multiplications to generate one of said weighted means of said third signal.

17. A method according to claim 16, further comprising:
multiplying a first plurality of values of said third signal by respective values generated using a first predetermined polynomial function and summing results of said multiplications to generate a first weighted mean of said third signal; and
multiplying a second a second plurality of values of said third signal by respective values generated using a second predetermined polynomial function and summing results of said multiplications to generate a second weighted mean of said third signal.

18. A method according to claim 17, wherein each polynomial produces values for a predetermined set of discrete frequencies.

19. A method according to claim 17, wherein said third polynomial is said first polynomial, and said fourth polynomial is said second polynomial.

20. A method according to claim 9, wherein said first and second signals are frequency domain signals and the method comprises multiplying each value sampled from said fourth signal between said minimum frequency and said maximum frequency with corresponding values generated using a respective one of said polynomial functions.

21. A method according to claim 16, wherein each polynomial function is a B-spline.

22. A method according to claim 21, wherein each polynomial is a cubic function B-spline.

23. A method according to claim 9, wherein generating said estimate comprises:
generating a system of linear equations using said weighted means of said third and fourth signals; and
solving said linear equations.

24. A method according to claim 23, further comprising:
generating a system of linear equations of the form:


Rhc=b


where:
R is a matrix generated using said weighted means of said fourth signal;
b is a vector generated using said weighted means of said third signal; and
hc is a vector representing said estimate.

25. A method according to claim 24, comprising:
generating a first system of equations of the form Rhrc=br and generating a second system of equations of the form Rhic=bi, where b=jbi+br;
solving said first and second systems of equations for hrc and hic respectively; and
computing hc in accordance with hc=hrc+jhic, where j=√{square root over (−1)}.

26. A method of producing an estimate of the acoustic response of an environment, the method comprising:
receiving a first signal, and a second signal, the second signal including an acoustic echo of the first signal,
combining said first signal and said second signal to produce a third signal;
combining said first signal with itself to produce a fourth signal;
computing a plurality of weighted means of said third signal;
computing a plurality of weighted means of said fourth signal;
generating a system of linear equations using said weighted measures of said third and fourth signals; and
generating a system of linear equations using said weighted means of said third and fourth signals; and
solving the system of linear equations using the dichotomous coordinate descent algorithm to generated said estimate from said system of linear equations.

27. A method according to claim 26, further comprising:
multiplying values of said vector hc with values generated by a predetermined polynomial function to generate a vector Hc.

28. A method according to claim 27, comprising filtering said first signal using said vector Hc as filter coefficients.

29. A method according to claim 28, further comprising subtracting the result of said filtering from said second signal to generate a residual signal.

30. A method according to claim 29, further comprising calculating a value indicative of energy of said residual signal (Dc).

31. A method according to claim 30, further comprising calculating a value indicative of energy of said second signal (Dm).

32. A method according to claim 31, further comprising:
storing an estimate of impulse response of a filter operable to remove an estimate of the echo of first signal included in the second signal;
updating said estimate based upon said energy values.

33. A method according to claim 32, further comprising:
comparing said energy values with at least one predetermined threshold; and
updating said estimate based upon said comparison.

34. A method according to claim 33, wherein said updating multiplies values of said estimate by a factor based upon a scalar parameter (α).

35. A method according to claim 34, wherein said scalar parameter (α) is determined according to:




  α
  =
  
    {
    
      
        
          
            
              
                α
                0
              
              ⁡
              
                (
                1
                )
              
            
            ,
            
              
                if
                ⁢
                
                  
                
                ⁢
                
                  D
                  e
                
              
              <
              
                
                  
                    T
                    sh
                  
                  ⁡
                  
                    (
                    1
                    )
                  
                
                ⁢
                
                  D
                  m
                
              
            
          
        
      
      
        
          
            
              
                α
                0
              
              ⁡
              
                (
                2
                )
              
            
            ,
            
              
                if
                ⁢
                
                  
                
                ⁢
                
                  
                    T
                    sh
                  
                  ⁡
                  
                    (
                    1
                    )
                  
                
                ⁢
                
                  D
                  m
                
              
              ≤
              
                D
                e
              
              <
              
                
                  
                    T
                    sh
                  
                  ⁡
                  
                    (
                    2
                    )
                  
                
                ⁢
                
                  D
                  m
                
              
            
          
        
      
      
        
          
            
              
                α
                0
              
              ⁡
              
                (
                3
                )
              
            
            ,
            
              
                if
                ⁢
                
                  
                
                ⁢
                
                  
                    T
                    sh
                  
                  ⁡
                  
                    (
                    2
                    )
                  
                
                ⁢
                
                  D
                  m
                
              
              ≤
              
                D
                e
              
              <
              
                
                  
                    T
                    sh
                  
                  ⁡
                  
                    (
                    3
                    )
                  
                
                ⁢
                
                  D
                  m
                
              
            
          
        
      
      
        
          
            0
            ,
            
              
                if
                ⁢
                
                  
                
                ⁢
                
                  D
                  e
                
              
              ≥
              
                
                  
                    T
                    sh
                  
                  ⁡
                  
                    (
                    3
                    )
                  
                
                ⁢
                
                  D
                  m
                
              
            
          
        
      
    
  



where α0 is a three element array containing predetermined scalar values and Tsh is a three element array storing predetermined threshold values.

36. A method according to claim 32, further comprising computing the inverse Fourier transform of said vector Hc.

37. A method according to claim 36, wherein said updating comprises adding to said estimate of impulse response a value output by said inverse Fourier transform multiplied by a determined scalar value.

38. A method according to claim 9 wherein:
said first signal is output via a loudspeaker;
said second signal is input to a microphone; and
the loudspeaker and the microphone are located within the environment.

39. A method according to claim 9, wherein:
said first signal is output from a loudspeaker;
said second signal is a signal input to a microphone from which an estimate of said acoustic echo has been subtracted; and
said loudspeaker and said microphone are located within the environment.

40. A method according to claim 9 wherein said estimate comprises filter coefficients.

41. A method according to claim 40 wherein said signal is filtered using said filter coefficients to generate an estimate of the acoustic echo of said first signal included in said second signal.

42. A method according to claim 41 wherein said filtering is finite impulse response filtering.

43. A method according to claim 40 comprising:
generating a system of linear equations of the form:


Rhc=b


where:
R is a matrix generated using said weighted means of said fourth signal;
b is a vector generated using said weighted means of said third signal; and
hc is a vector representing said estimate; and
generating said coefficients using said vector hc.

44. A method wherein a data carrier carrying computer program code, which when executed, causes a computer to produce an estimate of the acoustic response of an environment according to the method of claim 9.

45. A computer apparatus for producing an estimate of the acoustic response of the environment in which a system is located, comprising:
a program memory containing processor readable instructions; and
a processor for reading and executing instructions contained in the program memory;
wherein said processor readable instructions include instructions which when executed, to control the processor to carry out the method of claim 9.

46. A method of producing an estimate of the acoustic response of an environment, the method comprising:
receiving a first signal, and a second signal, the second signal including an acoustic echo of the first signal;
combining said first signal and said second signal to produce a third signal;
combining said first signal with itself to produce a fourth signal;
multiplying each of a plurality of points of said third signal by a respective associated value of a first B-spline function to generate a plurality of first multiplications, and summing said first multiplications to generate a first summation
multiplying each of a plurality of points of said fourth signal by a respective associated value of a second B-spline function and a respective associated value of a third B-spline function to generate a plurality of second multiplications, and summing said second multiplications to generate a second summation; and
generating said estimate from said first and second summations.

47. A method according to claim 46 wherein said first B-spline function and said second B-spline function are the same.

48. A method according to claim 46 further comprising:
generating a plurality of first summations, each of said first summations being generated by multiplying each of a plurality of points of said third signal by a respective associated value of a first respective B-spline function to generate a respective plurality of first multiplications and summing said first multiplications to generate said first summation;
generating a plurality of second summations, each of said second summations being generated by multiplying each of a plurality of points of said fourth signal by a respective associated value of a second respective B-spline function and a respective associated value of a third respective B-spline function to generate a plurality of second multiplications, and summing said second multiplications to generate each of said plurality of second summations; and
wherein said estimate is generated from said plurality of first summations and said plurality of second summations.

49. A method according to claim 27, wherein said predetermined polynomial function is a B-spline.