我为此困扰了很长时间。对于iOS App,我正在使用设备的麦克风录制一些音频。我稍后尝试评估录音。我使用SciPy用Python完成了所有工作,并且效果很好。我使用了SciPy的Butterworth过滤器实现。

但是,当我尝试将代码转换为Swift时,找不到一种将带通滤波器应用于我的float数组的好方法。

谁能指导我朝正确的方向发展,或者您完成了代码示例?我需要一个频率范围为1100至2100 Hz的带通滤波器。

最佳答案

对于任何 future 的访客,这里是解决方案:

https://github.com/bartolsthoorn/NVDSP
多亏了答案,这个库才解决了。
我必须为Swift创建一个桥接头,但这没什么大问题。最终代码如下所示。

let bandpass: NVBandpassFilter = NVBandpassFilter(samplingRate: fs)
bandpass.centerFrequency = 1600.0
bandpass.q = 1.6
bandpass.filterData(&DATA, numFrames: nsamples, numChannels: 1)

Q值可以这样计算:
Q = center_frequency / (top_frequency - bottom_frequency)

关于ios - 将带通滤波器快速应用于 float 数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46634273/

10-12 23:21