【问题标题】:Filtering audio in AudioKit在 AudioKit 中过滤音频
【发布时间】:2017-11-14 12:48:36
【问题描述】:

我需要做什么:

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

我是音频编程的新手,但据我所知,我需要“All Pass”过滤器(如果不是,请纠正我)。

对于这个任务,我找到了两个库:NovocaineAudioKit,但是 Novocaine 是用 C 语言编写的,所以很难用 swift 实现它,所以我决定使用 AudioKit,但我没有在那里找到“All Pass”过滤器。

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

【问题讨论】:

    标签: ios swift audio audiokit


    【解决方案1】:

    你有几个选择,对于音乐录音,我推荐 AKBooster,因为它纯粹提升音频,你必须小心提升多少,否则可能会导致削波。

    对于口语音频,我推荐使用 AKPeakLimiter。它会给你最大的音量而不会削波。将attackTime 和decayTime 设置为较低的值可以听到更明显的效果。

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

    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
    
            }
        }
    
    }
    

    【讨论】:

    • 嗨@Dave,你不知道如果我使用AKAudioFile 类的normalized 方法,我不应该得到更响亮的文件吗?附言我试过但收到错误WARNING AKAudioFile: cannot normalize a silent file。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多