gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:34:01 26 4
gpt4 key购买 nike

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

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

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

看起来有方法 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
)

最佳答案

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

当然,前提是我理解正确。

然后,一旦您从 vDSP_convD() 获得结果,您就会想要寻找最高值,这将告诉您信号在何处最相关。您可能还需要处理输入信号不包含足够引用信号的情况,在这种情况下,您可能希望(例如)忽略结果向量中低于特定水平的值。

关于objective-c - Objective-C - 音频延迟估计的互相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6415528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com