簡體   English   中英

在AudioKit中過濾音頻

[英]Filtering audio in AudioKit

我需要做什么:

  • 錄制音頻文件;
  • 因為它是iPhone / iPad麥克風的記錄,它可以很安靜,所以我需要過濾它以使它更大聲;
  • 保存過濾記錄;

我是音頻編程的新手,但據我所知,到目前為止我需要“ 全通 ”濾鏡(如果不是請糾正我)。

為了完成這項任務,我發現了兩個庫: NovocaineAudioKit ,但用C語言寫的Novocaine,所以在swift中實現它更難,我決定使用AudioKit,但我沒有在那里找到“All Pass”過濾器。

有人知道如何在AudioKit中實現它並保存過濾后的文件嗎? 謝謝!

你有一些選擇,對於音樂錄音,我推薦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

        }
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM