我需要你的幫助。想要在我的音頻文件上使用FFT。我想在更小的緩衝區陣列中剪切我的音頻文件,並將我的FFT與所有的子緩衝區一起使用。快速FFT塊音頻文件得到Amplitude
爲什麼??因爲我需要知道和看到(與情節數據)我的fréquence有多特別。我想知道,如何在我的音頻文件中開始噪音。
這是我的FFT代碼。我不知道我做錯了什麼。
THX對您有所幫助
編輯代碼
func FFT (buffer: AVAudioPCMBuffer){
let frameCount = buffer.frameCapacity
let log2n = UInt(round(log2(Double(frameCount))))
print (" log2n \(log2n)");
let bufferSizePOT = Int(1 << log2n)
print (" bufferSizePot \(bufferSizePOT)");
let inputCount = bufferSizePOT/2
let fftSetup = vDSP_create_fftsetup(log2n, Int32(kFFTRadix2))
var realp = [Float](repeating: 0, count: inputCount)
var imagp = [Float](repeating: 0, count: inputCount)
var output = DSPSplitComplex(realp: &realp, imagp: &imagp)
let windowSize = bufferSizePOT
var transferBuffer = [Float](repeating: 0, count: windowSize)
var window = [Float](repeating: 0, count: windowSize)
vDSP_hann_window(&window, vDSP_Length(windowSize), Int32(vDSP_HANN_NORM))
vDSP_vmul((buffer.floatChannelData?.pointee)!, 1, window,
1, &transferBuffer, 1, vDSP_Length(windowSize))
let temp = UnsafePointer<Float>(transferBuffer)
temp.withMemoryRebound(to: DSPComplex.self, capacity: transferBuffer.count) { (typeConvertedTransferBuffer) -> Void in
vDSP_ctoz(typeConvertedTransferBuffer, 2, &output, 1, vDSP_Length(inputCount))
}
// Do the fast Fourier forward transform, packed input to packed output
vDSP_fft_zrip(fftSetup!, &output, 1, log2n, FFTDirection(FFT_FORWARD))
//---------------------------------------------------
var magnitudes = [Float](repeating: 0.0, count: inputCount)
vDSP_zvmags(&output, 1, &magnitudes, 1, vDSP_Length(inputCount))
var normalizedMagnitudes = [Float](repeating: 0.0, count: inputCount)
vDSP_vsmul(sqrt(x: magnitudes), 1, [2.0/Float(inputCount)],
&normalizedMagnitudes, 1, vDSP_Length(inputCount))
for f in 0..<normalizedMagnitudes.count
{
print("\(f), \(normalizedMagnitudes[f])")
}
vDSP_destroy_fftsetup(fftSetup)
}
問題是什麼? –
當我使用這段代碼時,我的FFT會給我返回不正確的值。通過與更能勝任信號處理的人討論,我建議將歌曲分解成多倍速率樣本,以便創建x秒的片段,以便在其中應用FFT。所以如果在那些如果我找到一條特定曲線或更接近我想要的曲線的地方,我可能會認爲我在我的音頻中尋找的噪音是。所以分解的次數會讓我在開始之前從頭開始計時。我的計時器應該開始的地方。 –