GCC_PHAT输出

时间:2014-06-27 08:23:05

标签: android audio signal-processing

我正在尝试在Android设备上开发GCC_PHAT算法。 对于FFT,我使用了this library。 我们的想法是关联两个音频文件(16位PCM单声道)以找到它们之间的延迟。使用Matlab,它可以很好地工作。 我的第一个问题是FFT输出,它给出的数字高于32768。例如:

fft re   -20830.895138576154
fft re   -30639.569794501647
fft re   -49850.48597621472
fft re   -49335.28275604235
fft re   -96060.94916529073
fft re   -91409.17426504416
fft re   -226903.051428709

有没有办法将这些数字标准化为[-1,1]的间隔?

1 个答案:

答案 0 :(得分:0)

library's forward transform definition确实匹配Matlab,所以你应该在正向变换后得到匹配的值(不是因为G_PHAT被标准化为[-1,1]所以它是关键的)。

然而,inverse transform不能说同样的话。确实来自 代码注释inverseTransform

  

此变换不执行缩放,因此反转不是真正的反转。

从图书馆网页:

  

此FFT不执行任何缩放。因此,对于长度 n 的向量,在对其进行变换和逆变换之后,结果将是原始向量乘以 n (加上近似误差)。 / p>

因此,要获得与Matlab的FFT / IFFT实现相匹配的值,您需要将IFFT的结果除以 n