Kal*_*Kal 7 audio objective-c delay correlation ios
我想知道是否有人知道如何在iOS上执行两个音频信号之间的互相关.
我想将我在接收器处获得的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
)
Run Code Online (Sandbox Code Playgroud)
该vDSP_convD()函数计算两个输入向量的卷积以产生结果向量。您不太可能想要在频域中进行卷积,因为您正在寻找时域结果 xe2\x80\x94,尽管您可能会选择将它们相乘而不是对时域序列进行卷积(但在这种情况下,要获得结果,您将需要执行逆 DFT 以再次返回时域)。
当然,假设我正确理解了你的意思。
\n\n然后,一旦获得 的结果vDSP_convD(),您将需要寻找最高值,这将告诉您信号相关性最强的位置。您可能还需要应对输入信号不包含足够参考信号的情况,在这种情况下,您可能希望(例如)忽略结果向量中低于特定级别的值。
| 归档时间: |
|
| 查看次数: |
1368 次 |
| 最近记录: |