# Patent

## Title
Method, system and computer program product for acoustic echo cancellation

## Abstract

In response to a first signal, a first sound wave is output. A second sound wave is received that includes an acoustic echo of the first sound wave. In response to the second sound wave, a second signal is output that cancels an estimate of the acoustic echo. The estimate of the acoustic echo is iteratively adapted to increase a statistical independence between the first and second signals, irrespective of whether a first voice is present in the first sound wave, and irrespective of whether a second voice is present in the second sound wave.

## Background
CROSS-REFERENCE TO RELATED APPLICATION
This application claims priority to U.S. Provisional Patent Application Ser. No. 61/540,331, filed Sep. 28, 2011, entitled METHOD FOR IMPROVED DOUBLE-TALK HANDLING AND FAST CONVERGENCE IN ACOUSTIC ECHO CANCELLERS, naming Muhammad Ikram as inventor, which is hereby fully incorporated herein by reference for all purposes.


BACKGROUND
The disclosures herein relate in general to audio processing, and in particular to a method, system and computer program product for acoustic echo cancellation.
In full duplex communication between telephones, a double-talk condition occurs if users concurrently speak into respective microphones of the telephones. Those microphones may receive acoustic echo from respective loud speakers of the telephones. To cancel the acoustic echo, the telephones may compute an estimate of the acoustic echo using a normalized least-mean squares (“NLMS”) technique, but such technique is less accurate while a double-talk condition occurs.
SUMMARY
In response to a first signal, a first sound wave is output. A second sound wave is received that includes an acoustic echo of the first sound wave. In response to the second sound wave, a second signal is output that cancels an estimate of the acoustic echo. The estimate of the acoustic echo is iteratively adapted to increase a statistical independence between the first and second signals, irrespective of whether a first voice is present in the first sound wave, and irrespective of whether a second voice is present in the second sound wave.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of an information handling system of the illustrative embodiments.
FIG. 2 is a block diagram of a communication device of the system of FIG. 1.
FIG. 3 is an information flow diagram of an acoustic echo cancellation (“AEC”) operation of the system of FIG. 1.
FIG. 4 is an information flow diagram of a first blind source separation (“BSS”) operation of the system of FIG. 1.
FIG. 5 is an information flow diagram of a second BSS operation of the system of FIG. 1.
FIG. 6 is a graph of an example far-end signal.
FIG. 7 is a graph of an example near-end signal.
FIG. 8 is a graph of example misalignments of the NLMS technique and the BSS operation.



DETAILED DESCRIPTION
FIG. 1 is a block diagram of an information handling system, indicated generally at 100, of the illustrative embodiments. A human user 102 is able to speak into a microphone 104. The microphone 104 converts, into electrical signals, a sound wave of an environment around the microphone 104, such as (if present): (a) a voice (e.g., speech) of the user 102, which is a potential source of the sound wave; (b) music; and (c) ambient noise. A communication device 106: (a) receives the electrical signals from the microphone 104; (b) processes the electrical signals to cancel at least some of any acoustic echo therein; (c) in response thereto, encodes suitable digital information that is representative of such processed electrical signals; and (d) outputs such information through a network 108 to a communication device 110.
FIG. 2 is a block diagram of the communication device 110, which is a representative one of the communication devices 106 and 110. Referring also to FIG. 1, via an antenna 202, a receiver 204 receives such information as wireless telecommunication signals from the communication device 106 through the network 108. In an alternative embodiment, the receiver 204 receives such information from the communication device 106 through the network 108 via a wireline and/or optical fiber cable. The receiver 204 outputs such information to a decoder 206, which decodes such information.
A digital signal processor (“DSP”) 208: (a) receives the decoded information from the decoder 206; (b) processes the decoded information to suppress at least some ambient noise therein from the environment around the microphone 104; and (c) in response thereto, causes an amplifier (“AMP”) 210 to output suitable electrical signals (to a speaker 112) that are representative of such processed information. Also, the DSP 208 receives those electrical signals from the amplifier 210, so that the DSP 208 controls those electrical signals in a feedback loop. In response to those electrical signals from the amplifier 210, the speaker 112 outputs a sound wave, which is at least partially audible to a human user 114. Accordingly, those electrical signals from the amplifier 210 communicate the sound wave of the environment around the microphone 104 (e.g., the voice, if present, of the user 102), while suppressing at least some ambient noise therein.
Similarly, the human user 114 is able to speak into a microphone 116. The microphone 116 converts, into electrical signals, a sound wave of an environment around the microphone 116, such as (if present): (a) a voice (e.g., speech) of the user 114, which is a potential source of the sound wave; (b) music; and (c) ambient noise. The DSP 208: (a) receives the electrical signals from the microphone 116; (b) processes the electrical signals to cancel at least some of any acoustic echo therein; and (c) in response thereto, causes an encoder 212 to encode suitable digital information that is representative of such processed electrical signals. A transmitter 214: (a) receives such information from the encoder 212; and (b) via the antenna 202, outputs such information as wireless telecommunication signals through the network 108 to the communication device 106. In an alternative embodiment, the transmitter 214 outputs such information through the network 108 to the communication device 106 via a wireline and/or optical fiber cable.
The communication device 106: (a) receives such information from the communication device 110 through the network 108; (b) decodes such information; (c) processes the decoded information to suppress at least some ambient noise therein from the environment around the microphone 116; and (d) in response thereto, outputs suitable electrical signals (to a speaker 118) that are representative of such processed information. In response to those electrical signals from the communication device 106, the speaker 118 outputs a sound wave, which is at least partially audible to the human user 102. Accordingly, those electrical signals from the communication device 106 communicate the sound wave of the environment around the microphone 116 (e.g., the voice, if present, of the user 114), while suppressing at least some ambient noise therein.
As discussed hereinabove, the representative communication device 110 includes various electronic circuitry components for performing its operations. For example, the DSP 208 is a computational resource for executing and otherwise processing instructions, and for performing additional operations (e.g., communicating information) in response thereto. Accordingly, the DSP 208 receives instructions of computer-readable software programs that are stored on a computer-readable medium 216 (e.g., a nonvolatile memory device) of the communication device 110. In response to such instructions, the DSP 208 executes such programs and performs its operations. For executing such programs, the DSP 208 processes data, which are stored in a memory of the DSP 208 and/or in the computer-readable medium 216.
In the illustrative embodiments, the network 108 includes: (a) a mobile (e.g., cellular) telephone network; (b) a landline telephone network; and/or (c) a computer network, such as a Transport Control Protocol/Internet Protocol (“TCP/IP”) network (e.g., the Internet or an intranet). In one embodiment, the representative communication device 110 is a telephone, which is housed integrally with the speaker 112 and the microphone 116. In a first example, the speaker 112 is a loud speaker of the telephone. In a second example, the speaker 112 is an ear speaker of the telephone.
FIG. 3 is an information flow diagram of an acoustic echo cancellation (“AEC”) operation of the DSP 208. As represented in the information flow diagram of FIG. 3: (a) the DSP 208 causes the AMP 210 to output signals, which the speaker 112 receives and outputs as a sound wave, and those signals and the sound wave are denoted as s1(n)=x1(n) for a time frame n; (b) h21(n) models an acoustic echo path of s1(n) from the speaker 112 to the microphone 116, so that the microphone 116 receives the acoustic echo=h21(n)*s1(n) as a part of ambient noise from the environment around the microphone 116, where*is a convolution operator; (c) s2(n) denotes a remaining part (without the acoustic echo h21(n)*s1(n) components) of the sound wave of the environment around the microphone 116 (e.g., the voice, if present, of the user 114, and ambient noise); and (d) accordingly, the microphone 116 receives x2(n), which is a sum of s2(n) and h21(n)*s1(n), so that x2(n) denotes the sound wave of the environment around the microphone 116, including the acoustic echo h21(n)*s1(n) components.
The acoustic echo path h21(n) is represented by a finite impulse response (“FIR”) filter of length L as:

h21(n)=[h210(n),h211(n), . . . , h21L-1(n)]T,

where the superscript on the filter coefficient denotes a tap index, and [●]T denotes transposition. The FIR filter operates as a model of the environment around the microphone 116, by modeling an impulse response of a path from the speaker 112 to the microphone 116.

Similarly, an estimate w21(n) of the acoustic echo path h21(n) is represented by an adaptive filter of length P as:

w21(n)=[w210(n),w211(n), . . . , w21P-1(n)]T 

where the subscript 21 is consistent with nomenclature of operations discussed hereinbelow in connection with FIGS. 4 and 5.

The DSP 208 is operable to compute ŝ2(n), which is an estimate of s2(n), by subtracting w21(n)*s1(n) from x2(n), so that at least some of any acoustic echo h21(n)*s1(n) in x2(n) is cancelled from ŝ2(n). Accordingly, if w21(n)=h21(n), then all of the acoustic echo h21(n)*s1(n) in x2(n) is cancelled from ŝ2(n), so that ŝ2(n)=s2(n). In that manner, ŝ2(n) represents an estimate of the sound wave of the environment around the microphone 116 (e.g., the voice, if present, of the user 114, and ambient noise), while cancelling at least some of any acoustic echo h21(n)*s1(n) therein.
As discussed hereinabove in connection with FIG. 2, the DSP 208 causes the encoder 212 to encode suitable digital information that is representative of ŝ2(n). Optionally, the DSP 208 writes ŝ2(n) (or such information) for storage on the computer-readable medium 216.
The DSP 208 is operable to compute w21(n) using a normalized least-mean squares (“NLMS”) technique, as:




  
    
      
        w
        21
        k
      
      ⁡
      
        (
        n
        )
      
    
    =
    
      
        
          w
          21
          k
        
        ⁡
        
          (
          
            n
            -
            1
          
          )
        
      
      +
      
        α
        ⁢
        
          
            
              e
              ⁡
              
                (
                n
                )
              
            
            ⁢
            
              
                x
                1
                *
              
              ⁡
              
                (
                
                  n
                  -
                  k
                
                )
              
            
          
          
            
              ∑
              
                i
                =
                0
              
              
                P
                -
                1
              
            
            ⁢
            
              
            
            ⁢
            
              
                
                
                  
                    x
                    1
                  
                  ⁡
                  
                    (
                    
                      n
                      -
                      i
                    
                    )
                  
                
                
              
              2
            
          
        
      
    
  
  ,




for k=0, . . . , P−1, where: (a) α is an adaptation constant; (b) [●]* denotes complex conjugation; and (c) e(n)=ŝ2(n). However, while a double-talk condition occurs, computation of w21(n) using the NLMS technique is less accurate.

A double-talk condition occurs if the users 102 and 114 concurrently speak into the microphones 104 and 116, respectively. In that event, the speakers 112 and 118 concurrently output sound waves that communicate the voices of the users 102 and 114, respectively. To avoid interference from the double-talk condition: (a) a half-duplex restriction could be imposed to avoid the double-talk condition by permitting only one-way communication, but such restriction would diminish functionality; (b) w21(n) could be adjusted at a slower rate, but accuracy of w21(n) would be reduced, especially if the surrounding environment changes; and/or (c) a double-talk detector could suspend or slow adjustment of w21(n) during periods in which the double-talk condition occurs (e.g., by automatically varying a step size of the NLMS technique), but accuracy of w21(n) would be reduced (in comparison to other periods without the double-talk condition), and timely detection of a double-talk condition is challenging.
FIG. 4 is an information flow diagram of a first blind source separation (“BSS”) operation of the DSP 208. In one example, if voice signals are mixed (e.g., partially mixed) with one another, then a BSS operation is useful for separating those voice signals from one another. In another example, if a voice signal is mixed with noise, then a BSS operation is useful for separating such voice signal from such noise.
FIG. 4 shows a BSS operation that has: (a) two inputs, namely s1(n) and s2(n); and (b) two outputs, namely ŝ1(n) and ŝ2(n). In the example of FIG. 4: (a) the sound waves s1(n) and s2(n) are partially mixed with one another; and (b) x1(n) and x2(n) are received by first and second microphones that are spatially separated from one another. Accordingly, in FIG. 4: (a) h12(n)*s2(n) denotes acoustic echo components of s2(n) that are mixed with s1(n), so that x1(n)=s1(n)+h12(n)*s2(n); (b) h21(n)*s1(n) denotes acoustic echo components of s1(n) that are mixed with s2(n), so that x2(n)=s2(n)+h21(n)*s1(n); and (c) h21(n) and h12(n) are represented by respective FIR filters, in the same manner as h21(n) is represented by an FIR filter in FIG. 3.
In the BSS operation of FIG. 4, the DSP 208 is operable to compute: (a) an estimate w12(n) of h12(n); and (b) an estimate w21(n) of h21(n). Moreover, the DSP 208 is operable to compute: (a) ŝ1(n), which is an estimate of s1(n), by subtracting w12(n)*s2(n) from x1(n), so that at least some of the acoustic echo h12(n)*s2(n) in x1(n) is cancelled from ŝ1(n); and (b) ŝ2(n), which is an estimate of s2(n), by subtracting w21(n)*s1(n) from x2(n), so that at least some of the acoustic echo h21(n)*s1(n) in x2(n) is cancelled from ŝ2(n). Accordingly: (a) if w12(n)=h12(n), then all of the acoustic echo h12(n)*s2(n) in x1(n) is cancelled from ŝ1(n), so that ŝ1(n)=s1(n); and (b) if w21(n)=h21(n), then all of the acoustic echo h21(n)*s1(n) in x2(n) is cancelled from ŝ2(n), so that ŝ2(n)=s2(n).
In the BSS operation of FIG. 4, the DSP 208 iteratively adapts w12(n) and w21(n) to increase a statistical independence (e.g., to reduce a cross-correlation) between ŝ1(n) and ŝ2(n) in a frequency domain (e.g., based on second-order statistics and/or higher-order statistics). Accordingly, the DSP 208 iteratively adapts: (a) w12(n) in response to x2(n), ŝ1(n) and ŝ2(n); and (b) w21(n) in response to x1(n), ŝ1(n) and ŝ2(n). Mathematically, this statistical independence is represented by:

E{ŝ1(n)ŝ*2(n−m)}=0;∀m, 

where E{●} denotes statistical expectation.

FIG. 5 is an information flow diagram of a second BSS operation of the DSP 208. In the example of FIG. 5, as in the example of FIG. 3: (a) h21(n) models the acoustic echo path of s1(n) from the speaker 112 to the microphone 116, so that the microphone 116 receives the acoustic echo=h21(n)*s1(n) as a part of ambient noise from the environment around the microphone 116, and so that the acoustic echo h21(n)*s1(n) components of s1(n) are mixed with s2(n); (b) s2(n) denotes the remaining part (without the acoustic echo h21(n)*s1(n) components) of the sound wave of the environment around the microphone 116 (e.g., the voice, if present, of the user 114, and ambient noise); (c) accordingly, the microphone 116 receives x2(n), which is the sum of s2(n) and h21(n)*s1(n), so that x2(n) denotes the sound wave of the environment around the microphone 116, including the acoustic echo h21(n)*s1(n) components; and (d) h21(n) is represented by the FIR filter.
In the BSS operation of FIG. 5, the DSP 208 computes an estimate w21(n) of h21(n). Moreover, the DSP 208 computes ŝ2(n), which is an estimate of s2(n), by subtracting w21(n)*s1(n) from x2(n), so that at least some of the acoustic echo h21(n)*s1(n) in x2(n) is cancelled from ŝ2(n). Accordingly, if w21(n)=h21(n), then all of the acoustic echo h21(n)*s1(n) in x2(n) is cancelled from ŝ2(n), so that ŝ2(n)=s2(n).
In the BSS operation of FIG. 5, the DSP 208 iteratively adapts w21(n) to increase a statistical independence (e.g., to reduce cross-correlation) between ŝ1(n) and ŝ2(n) in a frequency domain (e.g., based on second-order statistics and/or higher-order statistics), where ŝ1(n)=s1(n) in the example of FIG. 5. Accordingly, the DSP 208 iteratively adapts w21(n) in response to ŝ1(n) and ŝ2(n).
For example, if the two signals s1(n) and s2(n) are stacked in a vector form as s(n)=[s1(n), s2(n)]T, then the two received signals x1(n) and x2(n) can be: (a) modeled as convolutive mixtures of the two signals s1(n) and s2(n); and (b) expressed in matrix-vector form as x(n)=H(n)*s(n), where x(n)=[x1(n), x2(n)]T is a received signal vector,*is the convolution operator, and a (2×2) mixing filter matrix of L-point impulse responses is:




  
    H
    ⁡
    
      (
      n
      )
    
  
  =
  
    [
    
      
        
          1
        
        
          0
        
      
      
        
          
            
              h
              21
            
            ⁡
            
              (
              n
              )
            
          
        
        
          1
        
      
    
    ]
  




In the BSS operation, the DSP 208 computes a (2×2) un-mixing filter matrix W(n) of length P that separates the two signals s1(n) and s2(n), so that:



  
    
      
        
          s
          ^
        
        ⁡
        
          (
          n
          )
        
      
      =
      
        
          W
          ⁡
          
            (
            n
            )
          
        
        *
        
          x
          ⁡
          
            (
            n
            )
          
        
      
    
    ,
    
      

    
    ⁢
    
      where
      ⁢
      
        :
      
    
  




  
    
      W
      ⁡
      
        (
        n
        )
      
    
    =
    
      [
      
        
          
            1
          
          
            0
          
        
        
          
            
              
                w
                21
              
              ⁡
              
                (
                n
                )
              
            
          
          
            1
          
        
      
      ]
    
  



The DSP 208 transforms the time-domain convolutive mixture x(n) to an instantaneous mixture in the frequency domain by computing its T-point short-time Fourier transform as:

x(ω,m)=H(ω)s(ω,m),

where m is a block index. In practice, the DSP 208 computes x(ω, m) by:





  
    
      x
      ⁡
      
        (
        
          ω
          ,
          m
        
        )
      
    
    =
    
      
        ∑
        
          τ
          =
          0
        
        
          T
          -
          1
        
      
      ⁢
      
        
      
      ⁢
      
        
          γ
          ⁡
          
            (
            τ
            )
          
        
        ⁢
        
          x
          ⁡
          
            (
            
              
                β
                ⁢
                
                  
                
                ⁢
                Tm
              
              +
              τ
            
            )
          
        
        ⁢
        
          e
          
            
              -
              j
            
            ⁢
            
              
            
            ⁢
            2
            ⁢
            
              
            
            ⁢
            π
            ⁢
            
              
            
            ⁢
            ω
            ⁢
            
              
            
            ⁢
            
              τ
              /
              T
            
          
        
      
    
  
  ,




for ω=1, . . . , T, where γ(T) is a window function, and β(0<β≦1) is a data overlap factor.

The DSP 208 estimates a covariance matrix Rx(ω, k), assuming ergodicity of received data, using M possibly overlapping blocks of x(ω, m) as:




  
    
      
        
          R
          ^
        
        x
      
      ⁡
      
        (
        
          ω
          ,
          k
        
        )
      
    
    =
    
      
        1
        M
      
      ⁢
      
        
          ∑
          
            m
            =
            0
          
          
            M
            -
            1
          
        
        ⁢
        
          
        
        ⁢
        
          
            x
            ⁡
            
              (
              
                ω
                ,
                
                  Mk
                  +
                  m
                
              
              )
            
          
          ⁢
          
            
              x
              H
            
            ⁡
            
              (
              
                ω
                ,
                
                  Mk
                  +
                  m
                
              
              )
            
          
        
      
    
  
  ,




for k=0, . . . , K−1, where (●)H denotes a conjugate transposition.

The un-mixing filter matrix W(ω) decorrelates the estimated source signals ŝ1(n) and ŝ2(n) by diagonalizing their covariance matrix as:

Aŝ(ω,k)=W(ω){circumflex over (R)}x(ω,k)WH(ω).

For non-stationary signals, the DSP 208 applies such independent decorrelation equations for K sufficiently separated time intervals. With an over-determined least-squares technique, the DSP 208 computes the un-mixing filter matrix W(ω) for each frequency bin ω(ω=1, . . . , T) that simultaneously satisfies the K decorrelation equations as:




  
    
      
        W
        ^
      
      ⁡
      
        (
        ω
        )
      
    
    =
    
      arg
      ⁢
      
        
      
      ⁢
      
        
          min
          
            W
            ⁡
            
              (
              ω
              )
            
          
        
        ⁢
        
          
            ∑
            
              k
              =
              1
            
            K
          
          ⁢
          
            
          
          ⁢
          
            
              
              
                V
                ⁡
                
                  (
                  
                    ω
                    ,
                    k
                  
                  )
                
              
              
            
            2
          
        
      
    
  
  ,




where ∥●∥2 is a squared Frobenius norm (sum of squares of all elements), and V(ω, k) is an error computed by:





  
    
      V
      ⁡
      
        (
        
          ω
          ,
          k
        
        )
      
    
    =
    
      
        
          W
          ⁡
          
            (
            ω
            )
          
        
        ⁢
        
          
            
              R
              ^
            
            x
          
          ⁡
          
            (
            
              ω
              ,
              k
            
            )
          
        
        ⁢
        
          
            W
            H
          
          ⁡
          
            (
            ω
            )
          
        
      
      -
      
        diag
        ⁡
        
          [
          
            
              W
              ⁡
              
                (
                ω
                )
              
            
            ⁢
            
              
                
                  R
                  ^
                
                x
              
              ⁡
              
                (
                
                  ω
                  ,
                  k
                
                )
              
            
            ⁢
            
              
                W
                H
              
              ⁡
              
                (
                ω
                )
              
            
          
          ]
        
      
    
  
  ,




where diag[●] is a diagonal matrix formed by extracting diagonal elements of the matrix argument. Notably, in such decorrelation equation: (a) only two variables are unknown, namely W21(ω) and As2(ω, k); and (b) in view of the matrix's symmetry, such decorrelation equation has three constraints. Accordingly, the DSP 208 is suitable for performing the BSS operation in real-time implementations (e.g., K may be selected as small as 1 to satisfy the over-determined condition).

In one embodiment, the DSP 208 computes the least-squares solution according to a steepest descent technique as:




  
    
      W
      
        (
        
          l
          +
          1
        
        )
      
    
    ⁡
    
      (
      ω
      )
    
  
  =
  
    
      
        W
        
          (
          l
          )
        
      
      ⁡
      
        (
        ω
        )
      
    
    -
    
      
        
          μ
          ⁡
          
            (
            ω
            )
          
        
        ·
        
          ∂
          
            
              ∂
              
                W
                
                  (
                  l
                  )
                
              
            
            *
            
              (
              ω
              )
            
          
        
      
      ⁢
      
        {
        
          
            ∑
            
              k
              =
              1
            
            K
          
          ⁢
          
            
          
          ⁢
          
            
              
              
                
                  V
                  
                    (
                    l
                    )
                  
                
                ⁡
                
                  (
                  
                    ω
                    ,
                    k
                  
                  )
                
              
              
            
            2
          
        
        }
      
    
  




for w=1, . . . , T, using a step size of:





  
    
      μ
      ⁡
      
        (
        ω
        )
      
    
    =
    
      η
      
        
          ∑
          
            k
            =
            1
          
          K
        
        ⁢
        
          
        
        ⁢
        
          
            
            
              
                
                  R
                  ^
                
                x
              
              ⁡
              
                (
                
                  ω
                  ,
                  k
                
                )
              
            
            
          
          2
        
      
    
  
  ,




where η is a normalized step size.

Per iteration, the DSP 208 adapts only W21(ω) of the W(ω) off-diagonal elements, while the remaining W(ω) elements stay at their initial values. Accordingly, the filter convergence stays on track, even if the user 114 is not then-currently speaking into the microphone 116 (e.g., during a far-end single-talk condition in which the user 102 is then-currently speaking into the microphone 104). The DSP 208 customizes a respective step size per frequency bin ω to promote overall convergence of its computation. At convergence, the DSP 208 performs an inverse Fourier transform to compute the time-domain signal ŝ2(n).
FIG. 6 is a graph of an example of s1(n), which is a far-end (from perspective of the DSP 208) signal from a male user 102. FIG. 7 is a graph of an example of s2(n), which is a near-end (from perspective of the DSP 208) signal from a female user 114. As shown in the example of FIGS. 6 and 7, before time= ̃2.5 seconds, an idle condition occurs, in which neither the user 102 nor the user 114 is then-currently speaking, so that respective voices of the user 102 and the user 114 are absent from (not present in) the sound waves s1(n) and s2(n).
From time= ̃2.5 seconds until time= ̃10 seconds, a single-talk condition occurs, in which: (a) the user 102 is then-currently speaking into the microphone 104, so that a voice of the user 102 is present in the sound wave s1(n); and (b) the user 114 is not then-currently speaking into the microphone 116, so that a voice of the user 114 is absent from the sound wave s2(n). From time= ̃10 seconds until time= ̃21 seconds, a double-talk condition occurs, in which: (a) the user 102 is then-currently speaking into the microphone 104, so that the voice of the user 102 is present in the sound wave s1(n); and (b) the user 114 is then-currently speaking into the microphone 116, so that the voice of the user 114 is present in the sound wave s2(n). After time= ̃21 seconds, the single-talk condition occurs again.
Measurements of AEC performance include: (a) AEC performance during a double-talk condition; (b) convergence rate; and (c) AEC performance if the adaptive filter's length under-estimates the acoustic echo h21(n)*s1(n). In the example of FIGS. 6 and 7, length of the acoustic echo h21(n)*s1(n) is  ̃30 msec. The average far-end signal to double-talk ratio is  ̃5 dB. One performance indicator is adaptive filter misalignment, which may be computed as:




  20
  ⁢
  
    
  
  ⁢
  log
  ⁢
  
    
  
  ⁢
  10
  ⁢
  
    
      
        
        
          
            h
            21
          
          -
          
            w
            21
          
        
        
      
      
        
        
          h
          21
        
        
      
    
    .
  




In one example of the NLMS technique, α=0.5. In one example of the BSS operation of the DSP 208, η=0.5, T=512, β=0.5 (50% overlap), and M=10. For comparing the NLMS technique with the BSS operation of the DSP 208, a Hamming window function may be used for γ(T), and an initial value of P=256.
FIG. 8 is a graph of example misalignments of the NLMS technique and the BSS operation of the DSP 208. As shown in FIG. 8, the BSS operation of the DSP 208 achieves faster convergence than the NLMS technique. For example, with the BSS operation of the DSP 208, in response to s1(n) and s2(n) from the example of FIGS. 6 and 7, the misalignment quickly converges to −20 dB (as indicated by dashed enclosure 802) and remains stable during the single-talk condition and the double-talk condition, even if P is reduced from 256 to 128. By comparison, with the NLMS technique, in response to s1(n) and s2(n) from the example of FIGS. 6 and 7, the misalignment: (a) slowly converges during the first single-talk condition, as indicated by dashed enclosure 804; (b) suddenly rises and becomes unstable during the double-talk condition, as indicated by dashed enclosure 806; and (c) slowly converges during the second single-talk condition, as indicated by dashed enclosure 808.
Accordingly, in the BSS operation of FIG. 5, the DSP 208 successfully achieves AEC by iteratively adapting w21(n) to increase the statistical independence between ŝ1(n) and ŝ2(n) in the frequency domain, irrespective of whether the conversation switches between the idle condition, single-talk condition and/or double-talk condition, and without: (a) requiring a double-talk detector; or (b) suspending or slowing adjustment of w21(n) during periods in which the double-talk condition occurs. Moreover, the BSS operation of FIG. 5 is robust against under-estimation (by the adaptive filter's length) of the acoustic echo h21(n)*s1(n). In view of its faster convergence and relatively efficient processing, the BSS operation of FIG. 5 is suitable for implementation on a low-power handheld device that performs voice communication operations with a loud speaker.
In the illustrative embodiments, a computer program product is an article of manufacture that has: (a) a computer-readable medium; and (b) a computer-readable program that is stored on such medium. Such program is processable by an instruction execution apparatus (e.g., system or device) for causing the apparatus to perform various operations discussed hereinabove (e.g., discussed in connection with a block diagram). For example, in response to processing (e.g., executing) such program's instructions, the apparatus (e.g., programmable information handling system) performs various operations discussed hereinabove. Accordingly, such operations are computer-implemented.
Such program (e.g., software, firmware, and/or microcode) is written in one or more programming languages, such as: an object-oriented programming language (e.g., C++); a procedural programming language (e.g., C); and/or any suitable combination thereof. In a first example, the computer-readable medium is a computer-readable storage medium. In a second example, the computer-readable medium is a computer-readable signal medium.
A computer-readable storage medium includes any system, device and/or other non-transitory tangible apparatus (e.g., electronic, magnetic, optical, electromagnetic, infrared, semiconductor, and/or any suitable combination thereof) that is suitable for storing a program, so that such program is processable by an instruction execution apparatus for causing the apparatus to perform various operations discussed hereinabove. Examples of a computer-readable storage medium include, but are not limited to: an electrical connection having one or more wires; a portable computer diskette; a hard disk; a random access memory (“RAM”); a read-only memory (“ROM”); an erasable programmable read-only memory (“EPROM” or flash memory); an optical fiber; a portable compact disc read-only memory (“CD-ROM”); an optical storage device; a magnetic storage device; and/or any suitable combination thereof.
A computer-readable signal medium includes any computer-readable medium (other than a computer-readable storage medium) that is suitable for communicating (e.g., propagating or transmitting) a program, so that such program is processable by an instruction execution apparatus for causing the apparatus to perform various operations discussed hereinabove. In one example, a computer-readable signal medium includes a data signal having computer-readable program code embodied therein (e.g., in baseband or as part of a carrier wave), which is communicated (e.g., electronically, electromagnetically, and/or optically) via wireline, wireless, optical fiber cable, and/or any suitable combination thereof.
Although illustrative embodiments have been shown and described by way of example, a wide range of alternative embodiments is possible within the scope of the foregoing disclosure.

## Claims

1. A method performed by an information handling system for acoustic echo cancellation, the method comprising:
in response to a first signal, outputting a first sound wave;
receiving a second sound wave that includes an acoustic echo of the first sound wave;
computing an estimate of the acoustic echo;
in response to the second sound wave, outputting a second signal that represents the second sound wave minus the estimate of the acoustic echo; and
iteratively adapting the estimate of the acoustic echo to increase a statistical independence between the first signal and the second signal in a frequency domain based on second-order statistics without higher-order statistics, irrespective of whether a first voice is present in the first sound wave, and irrespective of whether a second voice is present in the second sound wave.

2. The method of claim 1, wherein the first voice is a voice of a first human user, and the second voice is a voice of a second human user.

3. The method of claim 1, wherein outputting the first sound wave includes: outputting the first sound wave from a speaker.

4. The method of claim 3, wherein receiving the second sound wave includes: receiving the second sound wave from a microphone.

5. The method of claim 4, wherein the second sound wave includes the acoustic echo as a part of ambient noise from an environment around the microphone.

6. The method of claim 5, wherein outputting the second signal includes: in response to a model of the environment around the microphone, computing the estimate of the acoustic echo.

7. The method of claim 6, wherein the model is for modeling an impulse response of a path from the speaker to the microphone.

8. The method of claim 1, wherein outputting the second signal includes: outputting the second signal through a network to a source of the first signal.

9. The method of claim 1, wherein iteratively adapting the estimate of the acoustic echo includes: iteratively adapting the estimate of the acoustic echo to reduce cross-correlation between the first signal and the second signal.

10. A system for acoustic echo cancellation, the system comprising:
at least one device for: in response to a first signal, outputting a first sound wave; receiving a second sound wave that includes an acoustic echo of the first sound wave; computing an estimate of the acoustic echo; in response to the second sound wave, outputting a second signal that represents the second sound wave minus the estimate of the acoustic echo; and iteratively adapting the estimate of the acoustic echo to increase a statistical independence between the first signal and the second signal in a frequency domain based on second-order statistics without higher-order statistics, irrespective of whether a first voice is present in the first sound wave, and irrespective of whether a second voice is present in the second sound wave.

11. The system of claim 10, wherein the first voice is a voice of a first human user, and the second voice is a voice of a second human user.

12. The system of claim 10, wherein the device includes a speaker for outputting the first sound wave.

13. The system of claim 12, wherein the device includes a microphone for receiving the second sound wave.

14. The system of claim 13, wherein the second sound wave includes the acoustic echo as a part of ambient noise from an environment around the microphone.

15. The system of claim 14, wherein outputting the second signal includes: in response to a model of the environment around the microphone, computing the estimate of the acoustic echo.

16. The system of claim 15, wherein the model is for modeling an impulse response of a path from the speaker to the microphone.

17. The system of claim 10, wherein outputting the second signal includes: outputting the second signal through a network to a source of the first signal.

18. The system of claim 10, wherein iteratively adapting the estimate of the acoustic echo includes: iteratively adapting the estimate of the acoustic echo to reduce cross-correlation between the first signal and the second signal.

19. A computer program product for acoustic echo cancellation, the computer program product comprising:
a non-transitory computer-readable storage medium; and
a computer-readable program stored on the non-transitory computer-readable storage medium, wherein the computer-readable program is processable by an information handling system for causing the information handling system to perform operations including: in response to a first signal, outputting a first sound wave; receiving a second sound wave that includes an acoustic echo of the first sound wave; computing an estimate of the acoustic echo; in response to the second sound wave, outputting a second signal that represents the second sound wave minus the estimate of the acoustic echo; and iteratively adapting the estimate of the acoustic echo to increase a statistical independence between the first signal and the second signal in a frequency domain based on second-order statistics without higher-order statistics, irrespective of whether a first voice is present in the first sound wave, and irrespective of whether a second voice is present in the second sound wave.

20. The computer program product of claim 19, wherein the first voice is a voice of a first human user, and the second voice is a voice of a second human user.

21. The computer program product of claim 19, wherein outputting the first sound wave includes: outputting the first sound wave from a speaker.

22. The computer program product of claim 21, wherein receiving the second sound wave includes: receiving the second sound wave from a microphone.

23. The computer program product of claim 22, wherein the second sound wave includes the acoustic echo as a part of ambient noise from an environment around the microphone.

24. The computer program product of claim 23, wherein outputting the second signal includes: in response to a model of the environment around the microphone, computing the estimate of the acoustic echo.

25. The computer program product of claim 24, wherein the model is for modeling an impulse response of a path from the speaker to the microphone.

26. The computer program product of claim 19, wherein outputting the second signal includes: outputting the second signal through a network to a source of the first signal.

27. The computer program product of claim 19, wherein iteratively adapting the estimate of the acoustic echo includes: iteratively adapting the estimate of the acoustic echo to reduce cross-correlation between the first signal and the second signal.