首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioKit中的音频过滤

AudioKit中的音频过滤
EN

Stack Overflow用户
提问于 2017-11-14 12:48:36
回答 1查看 1.1K关注 0票数 4

我需要做的是:

  • 录制音频文件;
  • 因为它是用iPhone/iPad麦克风录制的,它可以很安静,所以我需要过滤它,使它更响亮;
  • 保存过滤记录;

我是新的音频编程,但据我所知,到目前为止,我需要“所有通过”过滤器(如果不是请纠正我)。

在这个任务中,我找到了两个库: Novocaine AudioKit,但是Novocaine是用C编写的,所以很难快速实现它,我决定使用AudioKit,但是我没有在那里找到"All Pass“过滤器。

有人知道如何在AudioKit中实现它并保存已过滤的文件吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-14 15:24:58

你有几个选择,对于音乐录音,我建议AKBooster,因为它纯粹是促进音频,你必须小心,你增加了多少,否则你可能会导致剪辑。

对于口语音频,我推荐AKPeakLimiter。它会给你最大的体积,而不剪裁。将attackTime和decayTime设置为较低的值,以获得更显著的效果。

在移动滑块之前,滑块的值不会表示参数的值。

代码语言:javascript
复制
import UIKit
import AudioKit

class ViewController: UIViewController {

    let mic = AKMicrophone()
    let boost = AKBooster()
    let limiter = AKPeakLimiter()

    override func viewDidLoad() {
        super.viewDidLoad()

        mic >>> boost >>> limiter
        AudioKit.output = limiter
        AudioKit.start()

        let inset: CGFloat = 10.0
        let width = view.bounds.width - inset * 2


        for i in 0..<4 {
            let y = CGFloat(100 + i * 50)
            let slider = UISlider(frame: CGRect(x: inset, y: y, width: width, height: 30))
            slider.tag = i
            slider.addTarget(self, action: #selector(sliderAction(slider:)), for: .valueChanged)
            view.addSubview(slider)
        }

        boost.gain = 1

    }

    @objc func sliderAction(slider: UISlider) {
        switch slider.tag {
        case 0:
            boost.gain = slider.value * 40
        case 1:
            limiter.preGain = slider.value * 40
        case 2:
            limiter.attackTime = max(0.001, slider.value * 0.03)
        case 4:
            limiter.decayTime = max(0.001, slider.value * 0.06)
        default: break

        }
    }

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

https://stackoverflow.com/questions/47286344

复制
相关文章

相似问题

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