由于我是 DSP 的新手,我认为这篇文章有一个清晰的解释,我没有尝试自己回答你的问题。但是你说你看过了,觉得这些问题还是模棱两可的,那我想再试一次给我的答案。
首先,关于bin 和 band的概念,当我试图弄清楚傅里叶变换的含义时,它们让我很困惑,尤其是离散傅里叶变换(DFT),这也与你的问题有很大关系。现在我对频率区间的理解是特定的频率值,例如 2000 或 2001.5。一个频段,例如从 1000 到 2000,覆盖了一个频率范围,它由两个频段 1000 和 2000 定义(一个是地板,一个是天花板)。在物理世界中,频率的值可以取任意实数,换句话说,它们是连续的。至于上面的例子,有无限频带 [1000,2000] 中的值或频率区间。然而,当涉及到数字信号处理时,在时域中,我们以采样率获取有限(和整数)个样本,例如每秒 44100 个样本(即 44100Hz)。稍后我们以 FFT 或 STFT 的方式进行离散傅里叶变换 (DFT) 以进入频域。当我们做 STFT 时,我们以 frame 为单位做,并对其应用 hanning window。正如您提到的,窗口的宽度等于帧大小,例如 2048 个样本,而 2048 是您的 N。
至于你的问题:
并不是我们将频率尺度进一步划分为 bin,自然我们在 FFT 或 STFT 之后得到 N/2 个频率 bin。如果 N = 2048, sampling_rate = 44100,那么我们有 1024 个频率区间 [21.53, 43.07, 64.60, ..., 22028.47, 22050]。我们在时域中的有限和离散采样已经限制了我们得到的频率也是有限和离散的,如 bin。
如上所述,通常我们过滤(也许可以理解为组合或分组)频率箱以获得频段。
自然,我们有不止一种方法可以将 bin 分组到波段,我认为三角滤波器只是获得 Mel 频谱图的一种特定 (Mel) 方法。
关于这个问题,上面的教程肯定比我解释得更好。
关于问题 3,我不确定您在什么级别上询问使用三角滤波器的原因。如果是关于具体技术/算法的选择,我觉得和第4题有关,就留给教程吧。如果说做 Mel 变换的更大原因,那就是人类感觉和感知领域。当我们谈论声源的频率和幅度时,这些都是声音的纯物理特征。音高和响度是它们对应的人类感知特征。关键是我们人类的感知不会随着物理特征的值线性变化。这就是我们有分贝刻度和梅尔刻度的原因,因此我们的感知随着这些刻度中的值线性变化。
我希望这些可以提供一些帮助。