首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >低通滤波器

低通滤波器
EN

Stack Overflow用户
提问于 2020-02-26 15:49:35
回答 1查看 619关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2020-05-04 14:15:01

欢迎来到文档匮乏的AVAudioEngine世界。

不确定你是如何设置你的AVAudioEngine的,但作为一个快速浏览,我猜你会看到一些东西,这些行很长:

创建引擎let engine = AVAudioEngine()创建效果节点var equalizer = AVAudioUnitEQ(numberOfBands: 1)附加节点engine.attach(equalizer)连接节点engine.connect(equalizer, to: engine.mainMixerNode, format: audioFormat)准备并启动引擎。您还将为您的音频样本附加和连接playerNode。

至于你的问题。AVAudioUnits是效果节点用于让AVAudioEngine操纵音频的子类。您可以通过所操纵的节点间接地将其与AVAudioEngine一起使用。

为了让AVAudioEngine操作低通滤波器,您可以使用一个频带实例化一个AVAudioUnitEQ (如上所述)。然后用一个改变滤波器频率的函数来操纵效果:

代码语言:javascript
复制
    func setLowPassFilter(frequency: Float){
        filter.bands[0].filterType = .lowPass
        filter.bands[0].frequency = frequency
        filter.bands[0].bypass = false
    }

这些旁路效果的关键是设置AVAudioUnitEQ = false,否则它将忽略您的效果。

我希望这能帮到你。AVAudioEngine世界非常孤单,所以我想向你推荐这个免费的应用程序:Phonique

这是一个由真正的AudioEngine专家Chris Davis创建的应用程序,它可以让你轻松地试验AVAudioEngine来找到你的效果,然后检查他干净的生成的代码是如何连接的。在this的帖子中,他解释了它是如何工作的。它并不总是提供对您自己的代码的替代,但它是查看应该如何连接的完美位置。祝好运

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60409092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档