Adr*_*rez 8 java signal-processing fft equalizer
我知道有很多关于均衡器的问题,但是我没有得到我想要的东西.我想要做的是一个均衡器,用于修改音频样本,如:
equalizer.eqAudio(audiosamples, band, gain)
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是我想要的确切接口,因为我在实现它们方面对DSP知之甚少(我使用过滤器,限制器,压缩器但没有制造它们).
所以谷歌搜索我读到我必须对样本进行FFT,这样我得到每个频率范围的数据而不是幅度,按照我想要的方式处理它,然后进行FFT的反转,这样我再次得到音频样本的结果.我寻找了这个FFT的实现,并找到了JTransform for Java.该库具有称为离散余弦变换(DCT)的FFT相关算法的实现.
我的问题是:
谢谢!
Sha*_*ews 14
我不认为有必要使用FFT进行音频均衡.我将使用IIR或FIR滤波器实现均衡器.
通常推荐的参考文献是用于音频EQ双二阶滤波器系数的Cookbook公式.
用于编程双二阶滤波器的java教程.http://arachnoid.com/BiQuadDesigner/index.html
是否有一本关于DSP编程的好书可以解释均衡器?
了解数字信号处理是对DSP的一个很好的介绍.有关FIR和IIR滤波器的章节.
Julius O. Smith III对带有音频应用的数字滤波器的介绍.
使用高阶递归滤波器的图形均衡器设计 Martin Holters和Udo Zolzer是一篇简短的论文,详细介绍了一种EQ滤波器设计方法.
Kla*_*CPH 12
获得均衡器有许多不同的方法,正如Shannon所解释的那样,IIR/FIR滤波器方式就是其中之一.但是,如果您的目标是快速启动并运行均衡器,那么通过FFT方式可能会更容易,因为存在大量的参考实现.
关于FFT大小的问题,它取决于您希望均衡器具有的频率分辨率.如果您选择16的大小,您将在频域中获得9(8个复数+ 1个实数)通道,从0到fs/2等间隔.第1个以0Hz为中心,第9个以fs/2 Hz为中心.并且注意,一些实现返回16个通道,其中高部分是低部分的镜像和复杂的共轭版本.
至于均衡器功能的实现,将每个通道乘以所需增益.如果光谱具有镜像部分,也可以反映增益.如果不这样做,以下IFFT的结果将不是实值信号.乘法后,应用IFFT.
关于基于FFT和滤波器的均衡器之间的区别,请记住,FFT只是计算一组FIR滤波器的快速方法,其中正弦波为正弦脉冲,临界采样(采用滤波器长度下采样)和均匀间隔的中心频率.
问候