我目前正在尝试计算 THD、本底噪声和其他音频测量(IMD,使用 Python 的频率响应)。为此,我将 wave 文件导入 numpy 数组,然后使用 scipy 模块计算 fft。为避免混叠,我需要在执行 fft 之前对数据进行窗口化。所以我尝试比较不同的窗口,这是一些结果(997 kHz 正弦波,32 位,192 kHz 由 adobe 试听生成):
我正在寻找精度:本底噪声应尽可能低,峰值外的响应应尽可能平坦。所以我的问题是:Rife-Vincent 真的是我最好的选择吗?我是否错过了其他我不知道且未测试的“秘密”窗口?
如果我决定保留 Rife-Vincent 窗口,问题在于时间计算!其他窗口在 scipy 模块中实现,计算速度非常快。我这样计算 Rife-Vincent 系数:
w = np.empty(M,dtype=np.float64)
a = 2*np.pi/M
for i in np.arange(0, M):
w[i] = (35 - 56*np.cos(a*i) + 28*np.cos(2*a*i) - 8*np.cos(3*a*i) + np.cos(4*a*i))/128
其中 M 是我的数据长度,可能很长。这非常耗时,有人可以帮我优化吗?