我刚刚更新到最新的AudioKit版本4.2.3和Swift 4.1我在audiokit.start()遇到崩溃,我无法破译。如果您需要更多错误代码,请注意。
AURemoteIO :: IOThread(21):EXC_BAD_ACCESS(code = 1,address = 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)
它不会崩溃,但它也不会返回正确的频率。我非常感谢任何帮助。感谢!!!
答案 0 :(得分:2)
我遇到了完全相同的问题,但终于找到了一个临时解决方案。
您需要做的就是在 AKMicrophone
和 AKFrequencyTracker
之间添加一个额外的图层,在我看来是AKHighPassFilter
。< / p>
以下是正常运行的代码:
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()
希望这有帮助,祝你好运!