I have been working on a project where I have to mix multiple audio signals of the same source coming from different slave smartphones on one master smartphone in a distributed way. Now I have aligned multiple audio packets **(Packet level synchronization)** in real-time (still unable to do **sample-level synchronization**) but when I mix them I get a comb filter effect.
My packet contains **40ms of data** at a **sampling rate of 48KHz**. How can I eliminate this effect?
I am more into ways of making it smooth rather than subtracting delayed signals? Is there any kind of filter somewhat "**Antiomb Filter**" to make this happen?
Best Regards.
1 Answer
Repeating what I suggested before:
Your best shot is to time align the signals before you mix them and avoid the comb filter in the first place.
An "anti-comb" filter can be done, but you have to match the fundamental frequency, the depth and the "Q" of the comb very carefully, otherwise the correction will make things only worse. You will also get a lot of noise amplification in the "teeth" of the comb.
For a very simply comb, you can write the difference equation as
$$y[n] = x[n] + g\cdot x[n-M]$$
The transfer function is than simply
$$H(z) = 1 + g \cdot z^{-M}$$ and the inverse is
$$H^{-1}(z)= \frac{1}{1 + g \cdot z^{-M}}$$
However, most real world combs are not nearly as simple.
-
$\begingroup$ I am aligning signals on smartphone and so far I am unable to align packets on sample level. I have successfully aligned it to packet level i.e in 40ms of difference $\endgroup$ Sep 17, 2021 at 12:46
-
$\begingroup$ What prevents you from doing sample alignment ? A simple running cross correlation should do the trick $\endgroup$– HilmarSep 17, 2021 at 13:05
-
$\begingroup$ First, the processing of smartphone as I have to do it in real-time. There is a constraint that I can't use the server. Data is causal, I can have real-time data of present and past packets. Same audio packets (in terms of source) are being recorded by different slave smartphones to master phone where I am performing Packet level alignment. There is a jitter and packet missing. These are all the constraints so far. I know GCC-PHAT will work amazingly well in terms of speech. But is it possible to perform crosscorrelation under such circumstances? $\endgroup$ Sep 17, 2021 at 13:22