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>
-shift <shift>
-u <u>
-sf <sf>
-adap <feature>
-alpha <alpha>
-thr1 <thr1>
-thr2 <thr2>
-infA <feature>
-infF <feature>
-help
...