-->

倒谱自相关(Auto-correlating the cepstrum)

2019-10-19 13:01发布

我想检测的声音有些回声来自麦克风。 回声将是周期性的,并在两个可能偏移的一个。 我听说,我需要以检测这些回波的存在自动关联的信号的频谱。 使用加速框架,展示了如何检测的音频数据相呼应你能提供的代码?

Answer 1:

我不完全知道为什么你最好的自动关联倒谱。 自相关性,虽然给你,所以我想你想只汽车相关的信号是关系到倒谱表示。

在其最简单的形式,它被执行如下:

int sample      = 0;
int sampleMax   = inSize;

while( sample < sampleMax )
{
            vDSP_vsmul( pInput, 1, pInputSample, tempBuffer, 1, sampleMax );

    const size_t kAutoCorrWritePos  = outSize - sampleMax - sample;
            vDSP_vsadd( &pOutput[kAutoCorrWritePos], 1, tempBuffer, 1, &pOutput[kAutoCorrWritePos], 1, sampleMax )
    sample++;
}

然而这是一个非常缓慢的操作。 值得庆幸的是相关性可以用几种不同的方式进行。 最快的方法是执行FFT,通过本身的缀合物,然后逆FFT该相乘的复数值。

或者在iOS中你有很好的优化vDSP_conv功能:

std::vector< float > paddedBuffer( (inSize + inSize) - 1 );
memcpy( &paddedBuffer.front(), pInput, sizeof( float ) * inSize );
vDSP_conv( &paddedBuffer.front(), 1, (float*)pInput, 1, (float*)pOutput + (inSize - 1), 1, inSize, inSize );

// Reflect the auto correlation for the true output.
int posWrite    = (inSize - 1);
int posRead     = (inSize - 1);
while( posWrite > 0 )
{
    posWrite--;
    posRead++;

    pOutput[posWrite] = pOutput[posRead];
}

所以,现在你有你的自相关,你怎么用它做什么?

那么在中间首先对你会有最高峰。 这就是零延迟点。 那么,什么你想要做的就是扫描到这个中央峰的识别次级峰值的权利。 如果哟是在一个特定的寻找一个特定峰值偏移就可以了,简单地说,从中央峰检查的样本数量,并检查是否有一个峰值出现。 如果没有,那么你正在寻找的信号是不存在的。 如果它的存在,该信号是存在的。

编辑 :它值得注意的是,有512样本宽的窗口,如果你正在寻找的滞后超出约128它可能无法获得足够的相关信号是spottable。 的相关性的工作原理是在采样数据的重复信号的分提供峰值。 在128滞后你有那点足够的数据来重复4次。 在256,你只能看到点重复两次。 这将影响相关峰的高度。 256之后,你可能不反对只是随机的可重复性因素,在所有发现的高峰期。 这就是说,虽然,尝试不同的窗口大小,看看有什么可以为您提供最可靠的结果。



Answer 2:

自相关是基本上与其自身的信号,它基本上在信号本身检测相似性的一个互相关,通过在一定的时间延迟。 这实际上是搜索的信号回波的好主意。 虽然我不能给你最准确和正确的解决方案,你将能够使用下面的链接中找到的信息来编写你自己的。

有对这个已经有一些答案:

  • 目标C -音频延迟估计互相关
  • https://dsp.stackexchange.com/questions/736/how-do-i-implement-cross-correlation-to-prove-two-audio-files-are-similar
  • 与vDSP_conv从苹果执行自相关框架加速

存在用于VDSP(加速框架)在Github通过注:Kunal Kandekar可用的源代码。 这可能是一个很好的起点。

https://github.com/kunalkandekar/vDSPxcorr



Answer 3:

如果您知道回声延迟长度您可以构建一个更为高效过滤器:

https://dsp.stackexchange.com/questions/14951/trivial-echo-separation

你在哪里读书用倒?



文章来源: Auto-correlating the cepstrum