低通滤波器

问题描述 投票:0回答:1

目前我正在使用AVAudioEngine从麦克风中获取音频样本,并成功实现了FFT.为了稳定的频率值,我还在FFT之前实现了音频样本的Hann窗口,现在我想在音频样本上实现低通滤波器以消除高频。 我做了一些关于iOS中低通滤波器的研究,但大多数答案都是用AVAudioUnit找到的.这让我很困惑,是否有可能只在AVAudioEngine中实现低通滤波器?是否有可能在音频样本上应用低通滤波器?如果是,我们需要遵循哪种方法?"提前感谢。

ios swift avfoundation core-audio avaudioengine
1个回答
2
投票

欢迎来到AVAudioEngine这个糟糕的文档世界。

不知道你是如何设置你的AVAudioEngine的,但作为一个快速的运行,我猜测你将会看到一些长的这些线路。

创建引擎 let engine = AVAudioEngine()创建效果节点 var equalizer = AVAudioUnitEQ(numberOfBands: 1)连接节点 engine.attach(equalizer)连接节点 engine.connect(equalizer, to: engine.mainMixerNode, format: audioFormat)准备并启动引擎。engine.prepare();try engine.start();你还将为你的音频样本附加和连接一个播放器节点。

至于你的问题。AVAudioUnits是你的效果节点用来让AVAudioEngine操纵音频的子类。你通过你操纵的节点间接使用这些与AVAudioEngine。

为了让AVAudioEngine操纵低通滤波器,你可以实例化一个叫做 "AVAudioUnits "的子类。AVAudioUnitEQ 与一个波段(如上)。然后用一个函数来操作效果,转移滤波器的频率。

    func setLowPassFilter(frequency: Float){
        filter.bands[0].filterType = .lowPass
        filter.bands[0].frequency = frequency
        filter.bands[0].bypass = false
    }

这些AVAudioUnitEQ效果的关键是设置bypass=false,否则它会忽略你的效果。

希望对大家有所帮助。AVAudioEngine的世界是相当寂寞的,所以我想给你指出这个免费的应用程序。Phonique

这是一款由真正的AudioEngine专业人员--Chris Davis创建的应用程序,它可以让你轻松地用AVAudioEngine进行实验,找到你的效果,然后检查他干净利落地生成的代码是如何接线的。在 这个 的帖子,他解释了它是如何工作的。它并不总是为你自己的代码提供一个简单的替换,但它是一个完美的地方,看看事情应该如何布线。祝您好运

© www.soinside.com 2019 - 2024. All rights reserved.