FeatureSet method: xtalk

FeatureSet method: xtalk

Syntax: <feature set> xtalk <new feature> <channelA> <channelB> [optional flags]

Example1: fs xtalk Aout Ain Bin -L 150 -shift 75 -u 0.05

Example2: fs xtalk Aout Ain Echo -L 150 -shift 75 -u 0.05 -adap Ain

Crosstalk removal or echo cancellation using an adaptive filter. Signal A contains some echo or xtalk from signal B. By minimizing the output using a linear filtered version of signal B and subtracting it from A the adaptive filter removes interferences in A which are correlated to B.

                                                 +
   signal A ------------------------------------->O-------*------> e = Aout
                                                  ^ -     |
   correlated interference  +-----------+         |       |
   B -------------*-------->| Filter  w |---------+       |
                  |         | - - - - - |                 |
		  +-------->| Adaption  |<----------------+
		            +-----------+

  Parameters of the filter itself are:
    L             size of the input window or number of filter coefficients
    shift         shift in samples of the input relative to output
    u             filter convergence factor
  Since the filter should only remove xtalk produced by the speaker on
  channel B it mustn't be adapted if the original speaker talks and his xtalk
  might be found on the other side. Therefor the adaptation time can be
  controlled with another SVector feature 'featA' or with the parameters:
    alpha         power estimate factor
    thr1          powerB > thr1 * powerA => adaptation starts
    thr2          powerB < thr2 * powerA => adaptation ends
  In both cases the adaptation can be delayed with a counter ac or better
  the adaptation condition has to be true for 'ac' times before it really
  starts.

  If the filter should only work as echo cancellation give channel A as
  'featA'.
Optional flags:
-L <L>
Number of filter coefficients [100].
-shift <shift>
Signal A will be delayed by <shift> samples so that
e(k) = a(k) - W * X(k+shift) where
X(k+shift) is b(k+shift)..b(k+shift-(L-1)).
Default: [0].
-u <u>
<u> is the convergence factor of the filter. The filter weights will be updated as
W(k+1) = W(k) + 2 * u * e(k) * X(k) / window_energy. Default: [0.1].
-sf <sf>
<sf> is the adaptive shift factor controling how fast the shift can change when an correlation offset between A and B is detected. Values not bigger than 1 won't change the preset <shift> value. Default: [1].
-adap <feature>
Specify a feature that tells when to adapt (>0). If <feature> is identical to signal A then the adaptation mode is always on.
-alpha <alpha>
Power estimate factor <alpha> see above [0.02].
-thr1 <thr1>
see above [2.0].
-thr2 <thr2>
see above [1.5].
-infA <feature>
Creates a <feature> that tells when was adapted.
-infF <feature>
Creates a <feature> with the filter coefficients for every standard frame shift time.
-help
see more optional flags!
...


maier@ira.uka.de