在我的应用程序中,我使用 AVAudioRecorder 来检测来自麦克风的输入。但是,我需要创建一个高通滤波器,以便只记录更高音调的声音。我已经研究过 FFT,但我不知道如何实现它。所以,现在我正在寻找一种带有高通滤波器的 FFT。
任何帮助将不胜感激!谢谢!
在我的应用程序中,我使用 AVAudioRecorder 来检测来自麦克风的输入。但是,我需要创建一个高通滤波器,以便只记录更高音调的声音。我已经研究过 FFT,但我不知道如何实现它。所以,现在我正在寻找一种带有高通滤波器的 FFT。
任何帮助将不胜感激!谢谢!
看看维基百科关于高通滤波器的文章,特别是关于算法实现的部分。
对于懒惰的人,这是伪代码实现:
// Return RC high-pass filter output samples, given input samples,
// time interval dt, and time constant RC
function highpass(real[0..n] x, real dt, real RC)
var real[0..n] y
var real α := RC / (RC + dt)
y[0] := x[0]
for i from 1 to n
y[i] := α * y[i-1] + α * (x[i] - x[i-1])
return y
在这种情况下,使用 FFT 将是一个大锤解决方案。一个简单的 FIR 或 IIR 滤波器就足够了,但您需要先确定滤波器的设计参数,即截止频率(-3 dB 点)、通带纹波、阻带增益,以及您是否关心相位响应与否。