Objective C - 音频延迟估计的互相关

2024-04-26

我想知道是否有人知道如何执行互相关两个音频信号之间iOS.

我想将接收器(我正在从麦克风接收信号)处获得的 FFT 窗口与发射器处(正在播放音轨)处的 FFT 窗口对齐,即确保每个窗口的第一个样本(除了发射机的“同步”周期之外)也将是接收机的第一个窗口。

我在传输的音频的每个块中注入了一个已知的波形(在频域中)。我想通过已知波形和接收信号(在几个连续块上)之间的互相关来估计延迟,但我不知道该怎么做。

貌似有这个方法vDSP_convD来做到这一点,但我不知道如何使用它,也不知道我是否首先必须对样本执行真正的 FFT(可能是,因为我必须传递 double[])。

void vDSP_convD (
   const double __vDSP_signal[],
   vDSP_Stride __vDSP_signalStride,
   const double __vDSP_filter[],
   vDSP_Stride __vDSP_strideFilter,
   double __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_lenResult,
   vDSP_Length __vDSP_lenFilter
)

The vDSP_convD()函数计算两个输入向量的卷积以产生结果向量。您不太可能想要在频域中进行卷积,因为您正在寻找时域结果 - 尽管您可能会选择将它们相乘,而不是对时域序列进行卷积,如果您已经出于某种其他原因进行了 FFT (但在这种情况下,要获得结果,您将需要执行逆 DFT 以再次返回时域)。

当然,假设我正确理解了你的意思。

然后一旦你得到结果vDSP_convD(),您需要寻找最高值,这将告诉您信号相关性最强的位置。您可能还需要应对输入信号不包含足够参考信号的情况,在这种情况下,您可能希望(例如)忽略结果向量中低于特定级别的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective C - 音频延迟估计的互相关 的相关文章

随机推荐