3
$\begingroup$

I'm looking to implement a feedback cancellation filter using Wiener Filtering, where an adaptive Wiener filter is used to cancel the feedback occurring in the path between a loudspeaker and a mic (assume PA system). The idea is essentially from this paper:

Spriet, Ann, et al. "Adaptive feedback cancellation in hearing aids with linear prediction of the desired signal." IEEE Transactions on signal processing 53.10 (2005): 3749-3763.

According to the paper:

  1. Signal delivered at the mic is $x[k]$.
  2. Signal driving the loudspeaker is $u[k]$.
  3. The transfer function of the feedback path is $F[q]$, so the signal captured at the microphone is $y[k] = x[k] + u[k]F[q]$.
  4. The feedforward transfer function from microphone to the loudspeaker is $G[q]$.

Here is the block diagram that helps put it all together:

Block Diagram from paper.

In the description, $k$ is the discrete time index, and $q^{-1}$ is the unit delay operator (I know these to conventionally be $n$ and $z^{-1}$).

The idea is to introduce an adaptive filter $\hat{F}[q]$ that estimates the feedback path and cancels it from $y[k]$. There's a couple of things being talked about, but essentially since $x[k]$ and $u[k]$ are correlated, they talk of adding a probe signal $r[k]$ to the loudspeaker input $u[k]$, which helps identify $\hat{F}[q]$. $r[k]$ is apparently usually a noise, which I assume helps decorrelate $x[k]$ and $u[k]$.

My first problem is: Wouldn't the noise also be output by the loudspeaker? Or is it added to a copy of the signal, not affecting what is fed to the loudspeaker?

Alternately, the paper also says that many audio signals can be closely approximated as a low order AR process:

$x[n] = h[n]*w[n]$, where $w[n]$ is white noise. This condition is not satisfied for voiced speech or music, in which case a pulse train is suggested.

So my bigger question is, why is this noise (white noise) so important in AR modeling, or Adaptive Filtering? It seems to defeat the purpose to add noise to the signal.

Any

$\endgroup$
  • $\begingroup$ Slightly off topic: A friend of mine was hired to build a servo control system for a very large moving antenna. During system identification he was very careful to use white noise so as to not set the antenna swinging; as it had power enough to tear itself apart. Remember he didn't know the resonances were, that is what he was determing. HP/Agilent/?? made a generator for just this mode of system-identification. $\endgroup$ – rrogers Jun 18 at 20:20
1
$\begingroup$

I believe the point of feeding white noise into the system is for the filter to adapt its coefficients before actually generating the signal $x[k]$. This would mean there are two "operating modes" for the system: coefficient adapting mode (in which white noise, a broadband signal, is used to adapt the filter to the feedback path), and performing mode (where the signal $x[k]$ is input into the system with the filter already adapted).

So the answer to your first question would be that the noise is output by the loudspeaker and follows the whole signal path. The system adapts it's coefficients to be similar to $F(q)$, and once that process has ended the white noise can be turned off. Afterwards, when generating $x[k]$ the system will already reduce feedback using the $\hat{F}_0(q)$ transfer function that was adapted previously, and the coefficients will only change when the forward path $G(q)$ is modified.

The purpose of using white noise (or a pulse train) is to have a broadband signal that has frequency components throughout the whole audible spectrum so that the adapted filter works for any kind of input signal $x[k]$. If the system was used without first feeding the broadband signal into it, every time $x[k]$ presents new frequency components, the coefficients may need to adapt during the performance/speech, which may have audible effects depending on the convergence speed of the algorithm.

$\endgroup$
  • $\begingroup$ Thanks a lot for your answer! I needed some further clarification: Would it be safe to assume that the noise injection/adapting mode is way too fast to be noticed - like a time multiplexed operation? What if $F(q)$ is changing, the filter is adapting to neutralize the effects of $F(q)$. So I expect that there is a constant interruption to the loudspeaker output so that the filter can adapt to a continually changing $F(q)$ (e.g. because the speaker is moving while talking or something). It doesn't make sense for the application to work in that way, right? $\endgroup$ – Aditya TB Jun 24 at 13:32
  • $\begingroup$ The system would be noticed; I believe the idea is to apply it in a system in which F(q) wouldn't change (like hearing aids). If F(q) changed after adapting the filter it would be necessary to again generate a wide-band signal like white noise, and this would be audible at the loudspeaker output. Thus, this system wouldn't be appropriate if F(q) is changing as far as I know. $\endgroup$ – Pablo Fergus Jul 7 at 17:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.