音频的典型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属性。
答案 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保留为任务..