Math 用于人耳的FFT数据归一化

Math 用于人耳的FFT数据归一化,math,signal-processing,fft,Math,Signal Processing,Fft,音频的典型FFT看起来与此非常相似,大部分动作发生在最左侧 他将其乘以部分正弦波,使其达到底部,但这篇文章对这一部分没有太具体。它似乎也是对数据集的“足够好”的修改,而不是基于某些属性的修改。我知道人类的听觉更适合于更高的频率,因此,大多数音乐都会放大低音和衰减高音,这样对我们来说,这两种声音的强度相对相等 我的问题是需要对FFT做什么修改来补偿这种标准衰减 for(i = 0; i < fft.length; i++){ fft[i] = fft[i] * Math.log(

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

他将其乘以部分正弦波,使其达到底部,但这篇文章对这一部分没有太具体。它似乎也是对数据集的“足够好”的修改,而不是基于某些属性的修改。我知道人类的听觉更适合于更高的频率,因此,大多数音乐都会放大低音和衰减高音,这样对我们来说,这两种声音的强度相对相等

我的问题是需要对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
}
for(i=0;i
编辑::


我看到了这篇文章,我认为这可能是一个前进的方向,但FFT的某些特性仍然需要抵消。

那么你是想提高高端频率的水平?听起来像是一个带有最小乘法器的高通滤波器可以工作,这样你就不会对低频信号衰减太多。拿起一本关于滤波器设计的好书,也许在第一个采样器的旧时代,这是在MOTU Boost人之前:)它不是FFT,而是简单的(Fairlight或Roland,我认为它首先)对原始或产生的时域信号进行归一化(如果你在做节拍切片,循环式);你不能那样做吗?或者只在补偿后进行FFT以抵消它

似乎是一个两阶段的过程,否则,我个人会让FFT保持原样来完成任务。

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

如果没有关于绝对级别的信息,就没有“正确的规范化”。 这是否是一个问题取决于您想对数据做什么

响度轮廓在ISO 226中是标准化的,但本文件不能免费下载。它应该在一个像样的大学图书馆里。
这是

首先,您确定要执行此操作吗?对某些事情进行补偿是有意义的,比如麦克风的响应不是平坦的,但不是人类的感知。人们习惯于听到真实世界中声音的频谱内容,而不是沿着感知的等响度曲线。如果你用你建议的方式播放你修改过的声音,听起来会很奇怪。也许有些人喜欢增强低频的音乐,但这是一个品味的问题,而不是心理物理学

或者,您可能是出于其他原因进行补偿,例如,考虑到对较低频率的敏感性较差,可能会增强压缩算法。是这样吗


如果您确实希望通过等响度曲线进行规范化,那么应该注意,大多数曲线和方程都是以声压级(SPL)为单位的。SPL是波形振幅平方的对数,因此当您使用FFT时,可能最容易使用其平方(功率specta)。(当然,你也可以通过其他方式进行补偿,比如说,在上面的等式中乘以sqrt(log(i+1))——假设对数是反向等响度曲线的近似值。)

人类听力的大部分动作发生在<20kHz,因此根据FFT的大小,你可能会在最左侧看到主要的“动作”。记住,FFT被反射到FFT大小的1/2左右。音频信号是44100hz,得到的FFT被限制在22500hz。我刚刚拼接了数据的后半部分。不能截断数据的后半部分!它是用来从频域转换到时域的(也就是让声音再次听得见)。哈哈,就是这样!但是这仅仅是为了可视化和节拍检测。好吧,我唯一真正做过的DSP是在Matlab中,因为它是做这类事情的一个很棒的工具。然而,你可能正在寻找的只是通过高通滤波器运行数据,然后进行乘法放大。这可能最终会发生-但这里应该有一些原理在起作用。我不确定你的确切意思-但我正在尝试补偿拍强度的差异,低音的节拍比高帽子的节拍大两到三倍。对于FFT的每个子带,我可以有一个不同的阈值——但如果有一个基本原理,解释为什么高电平比低电平弱,那么我可以将它应用到FFT,得到的拍频幅度就会得到校正。嗯。。我自己也不确定我会做什么,结果又尝试了什么,这听起来并不容易。我相信Audacity已经尝试过了,并因一些类似的问题而停止;资源和维基都在那里,所以可能会有所帮助。我只看到你在归一化和FFT过程的数量上这样做,每一个切片或一组,这是循环似乎总是花费相当长的时间。另一个昂贵/耗时的途径是“逆转”其他软件包的做法。。虽然有很多新的东西,但我很落后,但上次我检查的时候,NI的家伙们在游戏中处于领先地位。或者给我一个机会看看它是否成功:我只是在转换音频文件,有什么我们可以假设的绝对水平知道这一点吗?恐怕没有。麦克风的灵敏度,放大水平,记录软件中的缩放等。在记录过程中,一切都是一个倍增的因素。如果你真的需要考虑这个效果,那就要看你想解决的问题了。首先,你可以使用wik的蓝色曲线