Acoustic Feedback Effects and Solutions (FBFXLMS Algorithm)
Referring again to the simple system shown in Figure 2, the antinoise output to the loudspeaker not only cancels acoustic noise downstream, but unfortunately, it also radiates upstream to the input microphone, resulting in a contaminated reference input x(n). This acoustic feedback introduces a feedback loop or poles in the response of the model and results in potential instability in the control system.
This problem has been intensively studied in active noise and vibration control literature. Solutions such as the following have been proposed:
1. Using directional microphones and speakers. (This has a limitation
in that directional arrays are usually highly
dependent on the spacing of the array elements and
are directional over only a relatively narrow frequency range.)
2. Using fixed compensating signals (generated from the compensating
filter whose coefficients are determined off-line
by using a training signal) to cancel the effects
of the acoustic feedback.
3. Using a second off-line adaptive filter in parallel with the feedback path
4. Using an adaptive IIR filter
This report examines methods 2 and 4. An adaptive
feedforward controller with feedback compensation is shown in Figure 10.
The filter D(z) is an estimate of the feedback path F(z) from the adaptive
filter output y(n) to the output of the reference input microphone u(n).
Filter D(z) removes the acoustic feedback from the reference sensor input;
the filter C(z) compensates the secondary-path transfer function H(z) in
the FXLMS algorithm. Removal of the acoustic feedback from the reference
input adds a considerable margin of stability to the system if the model
D(z) is accurate. The models C(z) and D(z) can be estimated simultaneously
by an off-line modeling technique using an internally generated white noise.
The expressions for the antinoise y(n), filtered-X signal x’(n), and the adaptation equation for the FBFXLMS algorithm are the same as that for the FXLMS ANC system, except that x(n) in FBFXLMS algorithm is a feedback-free signal that can be expressed as:
In the case of a perfect model of the feedback path (that is, D(z) = F(z)), the acoustic feedback is completely canceled by D(z). The function of D(z) is similar to the acoustic echo cancellation that is used in teleconferencing applications.
The system performs the off-line modeling first to
estimate the secondary-path transfer function H(z) from the canceling speaker
to the error microphone and the feedback path transfer function F(z) from
the canceling speaker to the input microphone. The off-line modeling algorithm
is illustrated in Figure 11 and the procedure is summarized following the
figure.
1. a. Generate a white noise sample y(n).
2. Input x(n) from the input microphone and e(n) from the error microphone.
3. Compute e’(n) and f(n):
M-1
e’(n) = e(n) - sum
{ c i (n) * y(n - i) }
(2)
i = 0
and
L-1
f(n) = x(n) - sum
{ d j (n) * y(n - j) }
(3)
j = 0
4. Update the coefficients of the adaptive filters C(z) and D(z) using the LMS algorithm:
c i (n + 1) = c i (n) + mu * e’(n) * y(n - i), i = 0, 1,..., M - 1 (4)
and
d j (n + 1) = d j (n) + mu * f(n) * y(n - j), j = 0, 1,..., L - 1 (5)
5. Repeat the off-line modeling for about 10 seconds. Save the coefficients
of adaptive
filters C(z) and D(z) and use them in the following
active noise cancellation mode.
After the off-line modeling, the ANC system is operated in active noise cancellation mode. The algorithm is summarized as follows:
1. Input u(n) and e(n) from the input ports.
2. Compute the feedback-free reference input x(n):
L-1
x(n) = u(n) - sum
{ d j * y(n - j) }
(6)
j = 0
3. Compute the antinoise y(n):
N-1
y(n) = sum {
w i (n) * x(n - i) }
(7)
i = 0
where
w i (n) is the ‘i’th coefficient of the adaptive
filter W(z) at time n ,and
N is the order of filter W(z).
4. Output the antinoise y(n) to the output port to drive the canceling loudspeaker.
5. Compute the filtered-X version of x(n):
M
x’(n) = sum
{ c i * x(n - i) }
(8)
i = 0
6. Update the coefficients of adaptive filter W(z) using the following FXLMS algorithm:
w i (n + 1) = w i (n) + mu * e(n) * x’(n - i), i = 0, 1,..., N - 1 (9)
5. Repeat the algorithm for the next iteration. Note that the total
number of memory locations required in this algorithm
is 2(N + M + L) plus some parameters.