簡體   English   中英

AudioKit 4.2.3 Crash Microphone Frequency Analysis Swift 4.1

[英]AudioKit 4.2.3 Crash Microphone Frequency Analysis Swift 4.1

我剛剛更新到最新的AudioKit版本4.2.3和Swift 4.1我在audiokit.start()遇到崩潰,我無法破譯。 如果您需要更多錯誤代碼,請注意。

AURemoteIO :: IOThread(21):EXC_BAD_ACCESS(代碼= 1,地址= 0x100900000)

僅供參考我還使用AVAudioRecorder將麥克風輸入錄制到文件中,稍后在ViewController中使用AVKit AVAudioPlayer播放。 但是,由於我在更新之前沒有得到這個崩潰,我不相信這些因素是負責任的 - 但是跟蹤器輸入的東西。

import UIKit
import Speech
import AudioKit

class RecordVoiceViewController: UIViewController {

    var tracker: AKFrequencyTracker!
    var silence: AKBooster!
    var mic: AKMicrophone!

    let noteFrequencies = [16.35, 17.32, 18.35, 19.45, 20.6, 21.83, 23.12, 24.5, 25.96, 27.5, 29.14, 30.87]
    let noteNamesWithSharps = ["C", "C♯","D","D♯","E","F","F♯","G","G♯","A","A♯","B"]
    let noteNamesWithFlats = ["C", "D♭","D","E♭","E","F","G♭","G","A♭","A","B♭","B"]

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        AKSettings.audioInputEnabled = true
        mic = AKMicrophone()
        tracker = AKFrequencyTracker.init(mic, hopSize: 200, peakCount: 2000)
        silence = AKBooster(tracker, gain: 0)
    }

    func startAudioKit(){
        AudioKit.output = self.silence
        do {
            try AudioKit.start()
        } catch {
            AKLog("Something went wrong.")
        }
    }
}

有趣的是,當我在沒有hopSize和peakCount的情況下初始化跟蹤器時,例如:

  tracker = AKFrequencyTracker.init(mic)

它不會崩潰,但它也不會返回正確的頻率。 我非常感謝任何幫助。 謝謝!!!

我遇到了完全相同的問題,但終於找到了一個臨時解決方案。 您需要做的就是 AKMicrophone AKFrequencyTracker 之間添加一個額外的層 ,在我的例子中它是AKHighPassFilter

這是正常運行的代碼:

let microphone = AKMicrophone()
let filter = AKHighPassFilter(microphone, cutoffFrequency: 200, resonance: 0)
let tracker = AKFrequencyTracker(filter)
let silence = AKBooster(tracker, gain: 0)

AKSettings.audioInputEnabled = true
AudioKit.output = silence
try! AudioKit.start()

希望這有幫助,祝你好運!

暫無
暫無

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

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