我想计算我的音频处理系统的输入和输出音频信号之间的延迟。输入和输出信号以带符号的 16 位整数形式提供。为了尝试,我使用以下 numpy 命令尝试了输入信号的自相关:
import numpy as np
import wave
wfp = wave.open('test.wav', 'rb')
samples = wfp.readframes(wfp.getnframes())
signal = np.frombuffer(samples, np.int16)
corr = np.correlate(signal, signal, "full")
我假设自相关的峰值始终位于滞后 0 处,即 corr 数组中的索引 corr.size / 2 处。但是,当我计算 np.argmax(corr) 时,我得到了不同的索引值。
当我首先对信号进行归一化以获得 -1.0 和 +1.0 之间的值时,峰值总是如预期的那样在 corr.size / 2 处,至少在我使用不同信号的测试中是这样。
对于标准化,我使用了以下步骤:
signal = signal / float(0xFFFF)
有人可以向我解释一下,为什么我必须对信号进行标准化。