是否可以对音频信号进行插值以提高频率分辨率?

信息处理 傅里叶变换 插值
2022-01-18 00:36:42

如果我问的一些问题不完全正确,我深表歉意,我是这个领域的新手,但非常感兴趣。

我有一个采样率为 44.1 kHz 的音频信号,我想将其分割为 30 帧,并获取每帧的 DFT 以找到该帧的某些频率的幅度。但是,这意味着我在每个 bin 中的频率分辨率为 30 Hz,这还不够窄。

是否可以对数据进行插值以获得更多数据样本?据我所知,将点数加倍将产生 88.2 kHz 的采样率,但仍会产生 30 的频率分辨率。是否可以将插值数据视为仍然具有 44.1 kHz 的采样率?

4个回答

(非常)简短的回答是否定的,插值不会增加分辨率:没有新数据,没有新信息(请注意,严格来说,根据该术语的常见定义,“分辨率”的使用是不合适的。另请查看hotpaw2,还有他的回答)。

更长的答案需要以下频谱可视化(从左到右的时域、连续频域和离散频域)。为了简单起见,我假设没有别名。

上采样

插值技术保留了频谱的信息。DFT 的输出是一组从fs+fs的频率区间。

首先,看连续频域,如果你正确地对信号进行上采样,就相当于提高了采样频率。您希望数据数量增加一倍,但它只是删除了采样过程的频谱副本的一半。

现在,看看离散频域。这个版本从标准化到加倍时,频谱会缩小倍。如果我们称为上采样前非零频率的比例,上采样后变为在上采样之前,DFT个 bin,然后个 bin;上采样后然后$fs+fsfs1/20<α<1α/2NαNα2Nα/22N×α/2=Nα相同光谱的分档。不,您的分辨率根本没有改变。

要获得“更好”的分辨率,唯一的方法是添加更多数据。在您的示例中,不是划分为 30 帧,而是将您的音频文件划分为 15 帧。

“插值”基本上包括两个步骤。第一种是在时域中具有插值函数的卷积,对应于频域中的简单乘法。第二个是在时域中以更高的密度重新采样。如果您的总变换窗口在时域中保持相同的时间跨度,则频域中 bin 的频率间隔不会改变,您只会得到更多。如果您的插值函数在作为低通滤波器方面做得很好,那么额外的 bin 将大部分为零。如果您的插值函数在作为低通滤波器方面做得不好,那么额外的 bin 将主要是无意义的。

所以基本上如果你想提高你的频率分辨率,这样做的方法是增加你的变换窗口长度。当然,这是以您跟踪不断变化的信号特征的时间分辨率为代价的。

当被视为二次测量时,时间和频率分辨率的整体权衡最适合时间和频率空间中的高斯,这意味着为了获得最佳分辨率,每个频率都需要在时域中具有自己的窗口函数。

这导致正交镜像滤波器和小波变换作为更接近理论时间/频率分辨率权衡(这是与 Heisenbergsche Unschärferelation 相关的硬数学限制)的手段,而不是 STFT 可以同时失去一些可解释性。

TLDR:为了获得更好的频率分辨率,您需要更长的时间窗口。插值不会为您提供更好的分辨率,它可能只是通过将奈奎斯特频率推离相关的非零 bin 更远来获得更好的 bin。这不会添加信息,但可能会使现有信息在频率内容的上限范围内更易于解释和操作。

频域插值不会增加峰值分离分辨率,也不会增加“信息”,但如果信噪比足够高,它可以提高频率估计分辨率。

您可以通过 Sinc 内核插值(可能是加窗的)或使用更长的零填充 FFT 对 FFT 结果进行插值,这两种方法都会产生相似的结果。与使用低得多的分辨率相比,通过插值或零填充 FFT 生成的结果点密度越大,绘图点更接近某个随机孤立谱峰的概率增加,因此可能会减少最近绘图点频率估计错误。

正如 AlexTP 等其他人指出的那样,插值不会给你更好的频率分辨率。如果 Fs 是您的采样频率,N 是信号中的样本数,则 bin 的大小以及频率分辨率将为 Fs/N。如果您将信号/音频分成 30 段,频率分辨率将降低 30 倍,我猜这是您的问题。根据不确定性原理,所需的时间分辨率越高,频率分辨率必须越低。根据您正在尝试做什么,您可以查找 STFT 和小波变换作为 FFT/DFT 的替代方案。