我正在尝试使用Accelerate框架对音频文件执行FFT以查找频率.我已经从这个问题中修改了代码(可能是错误的):来自AVAudioPCMBuffer的频谱图,使用Swift中的Accelerate框架
虽然," 光谱 " 的幅度要么是' 0 ',' inf '要么是' nan ',而复杂分裂的' 真实 '和' 成像 '成分会产生相似的结果; 表明这是导致问题的原因:' magnitude = sqrt(pow(real,2)+ pow(imag,2) '.如果我错了,请纠正我,但我认为其余的代码都没问题.
为什么我会收到这些结果以及如何修复它(拆分组件应该是什么),以及我做错了什么?请记住,我对FFT和采样非常陌生,并且不知道如何为音频文件设置它,所以任何帮助都将非常感激.谢谢.
这是我正在使用的代码:
// get audio file
let fileURL:NSURL = NSBundle.mainBundle().URLForResource("foo", withExtension: "mp3")!
let audioFile = try! AVAudioFile(forReading: fileURL)
let fileFormat = audioFile.processingFormat
let frameCount = UInt32(audioFile.length)
let buffer = AVAudioPCMBuffer(PCMFormat: fileFormat, frameCapacity: frameCount)
let audioEngine = AVAudioEngine()
let playerNode = AVAudioPlayerNode()
audioMixerNode = audioEngine.mainMixerNode
let bufferSize = Int(frameCount)
let …Run Code Online (Sandbox Code Playgroud)