使用AudioKit从麦克风跟踪频率

时间:2016-01-27 17:59:41

标签: ios swift frequency-analysis

创建一个跟踪麦克风音频的Swift-iOS项目。目前正在使用AudioKit 3.0框架。我在Xcode模拟器中使用了以下代码,但是当我在设备上运行它时,它似乎没有正确读取麦克风信号。

    // Prepare Microphone
    let mic = AKMicrophone()


    // Connect Microphone to High Pass Filter
    let mixer = AKMixer(mic)
    let highPassFilter = AKHighPassFilter(mic)

    // Set Parameters of Hi Pass filter
    highPassFilter.cutoffFrequency = 7000 // Hz
    highPassFilter.resonance = 0 // dB


    let tracker = AKFrequencyTracker(highPassFilter, minimumFrequency: 7000, maximumFrequency: 8000)
    highPassFilter.play()
    audioKit.audioOutput = tracker
    audioKit.start()

    AKPlaygroundLoop(every: 0.1) {
        let freq = tracker.frequency
        print(freq)
    } 

2 个答案:

答案 0 :(得分:4)

我在AudioKit 3上使用此代码并且工作正常:

    let mic = AKMicrophone()
    amplitudeTracker = AKAmplitudeTracker(mic)
    AKSettings.audioInputEnabled = true
    AudioKit.output = amplitudeTracker
    AudioKit.start()
    mic.start()
    amplitudeTracker.start()

这是AKAmplitudeTracker,但情况与您几乎相同。试试AKSettings.audioInputEnabled = true

希望这有帮助。

答案 1 :(得分:2)

我从AudioKit背后的开发中得到了答案。 AudioKit 3.0中存在一个错误,在发行版中没有修复。要解决这个问题 。将AKManager.swift的第41行更改为AVAudioSessionCategoryPlayAndRecord,然后创建一个新的框架以添加到您的项目中。

这解决了麦克风节点的问题。