归一化用于人类听觉的FFT数据

时间:2009-05-09 04:55:27

标签: math signal-processing fft

音频的典型FFT看起来非常相似,大部分动作发生在最左侧

http://www.flight404.com/blog/images/fft.jpg

他将它乘以部分正弦波使其达到最低点,但文章对此部分并不太具体。它似乎也是对数据集的“足够好”的修改,而不是基于某些属性的修改。据我所知,人类听觉更适合更高的频率,因此,大多数音乐都会放大低音和衰减高音,因此我们认为两者的力量相对相等。

我的问题是需要对FFT进行哪些修改以补偿这种标准衰减?

for(i = 0; i < fft.length; i++){
     fft[i] = fft[i] * Math.log(i + 1); // does, eh, ok but the high
                                        // end is still not really "loud"
                                        // enough
}

编辑::

http://en.wikipedia.org/wiki/Equal-loudness_contour

我遇到过这篇文章,我认为可能是方向,但仍然可能存在一些需要反击的FFT属性。

4 个答案:

答案 0 :(得分:3)

我认为equal loudness contour正是正确的方向。 但是,它的形状取决于绝对压力水平。 换句话说,我们听觉的灵敏度曲线随着声压的变化而变化。

如果您没有关于绝对水平的信息,则没有“正确的标准化”。 如果这是一个问题取决于您想要对数据做什么。

响度轮廓在ISO 226中标准化,但本文档不能免费下载。它应该在一个体面的大学图书馆。 这是another source for loudness contours

答案 1 :(得分:3)

首先,你确定要这样做吗?补偿某些事情是有意义的,例如麦克风响应不平坦,而不是人类感知。人们习惯于听到声音具有声音在现实世界中具有的声音,而不是听觉等同响度曲线。如果您播放的声音已经按照您建议的方式进行了修改,那听起来会很奇怪。也许有些人喜欢音乐增强低频,但这是一个品味问题,而不是心理物理学。

或者你可能正在补偿其他一些原因,例如,考虑到对较低频率的较差敏感度可能会增强压缩算法。这是个主意吗?

如果你想通过等响度曲线进行归一化,应该注意到大多数曲线和方程都是声压级(SPL)。 SPL是波形幅度的平方的对数,因此当您使用FFT时,最简单的方法是使用它们的平方(功率谱)。 (或者,当然,您可以通过上面的等式中的sqrt(log(i + 1))乘以其他方式进行补偿 - 假设对数是反向等响度曲线的近似值。)< / p>

答案 2 :(得分:1)

所以你试图提高高端频率的水平?听起来像具有最小乘法器的高通滤波器可能会起作用,因此您不会过多地衰减低频信号。拿起一本关于过滤器设计的好书,可能会在this applet

附近徘徊

答案 3 :(得分:0)

在第一次采样器的旧时代,这是在MOTU Boost人之前:)它不是FFT而是简单(Fairlight或Roland首先我认为)对原始或结果时域信号进行归一化(如果你是做拍切片,回收式);你不能那样做吗?或者只有在你补偿以抵消后才进行FFT?

看起来像一个两阶段的程序,否则,我个人将FFT保留为任务..