2016-01-27 61 views
0

創建一個跟蹤麥克風音頻的Swift-iOS項目。目前使用AudioKit 3.0框架。我有以下代碼在Xcode模擬器中工作,但是當我在設備上運行它時,它似乎沒有正確讀取麥克風信號。使用AudioKit麥克風的音軌頻率

// 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) 
    } 
+5

您能否澄清「看起來沒有正確地讀取麥克風信號」 –

+2

我們看到您回答了您自己的問題,這很好,並且可能對其他問題有幫助。然而,正如@john_ryan所說,目前還不清楚究竟是什麼錯誤。我鼓勵你編輯原始問題和答案,以便明確確切的問題是什麼。 – themantalope

+1

此鏈接可能會對您有所幫助:https://github.com/audiokit/AudioKit/issues/322 – ayalcinkaya

回答

2

我從AudioKit後面的開發者那裏得到了答案。 AudioKit 3.0中存在一個缺陷,在發行版中尚未修復。要解決這個問題 。將AKManager.swift的第41行更改爲AVAudioSessionCategoryPlayAndRecord,然後創建一個新的框架添加到您的項目中。

這可以糾正麥克風節點的問題。

3

我用這個代碼AudioKit 3,它工作正常:

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

這是AKAmplitudeTracker但情況幾乎與您相約。嘗試AKSettings.audioInputEnabled = true

希望這會有所幫助。