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
...