Я пытаюсь осуществить вычисление FFT, используя vdSP от Apple, в записанном звуковом файле (предположим, что это моно PCM).Ускорение рамки vDSP, FFT обрамление
Я сделал исследования здесь, и я нашел следующие темы весьма полезно:
- Using the apple FFT and accelerate Framework
- Extracting precise frequencies from FFT Bins using phase change between frames
- Reading audio with Extended Audio File Services (ExtAudioFileRead)
Например, мы настроили FFT с FRAME_SIZE N = 1024 образцов, log2n = 10:
m_setupReal = vDSP_create_fftsetup(LOG_2N, FFT_RADIX2);
// allocate space for a hamming window
m_hammingWindow = (float *) malloc(sizeof(float) * N);
// generate the window values and store them in the hamming window buffer
vDSP_hamm_window(m_hammingWindow, N, vDSP_HANN_NORM);
где-то в коде:
vDSP_vmul(dataFrame, 1, m_hammingWindow, 1, dataFrame, 1, N);
vDSP_ctoz((COMPLEX *)dataFrame, 2, &(m_splitComplex), 1, nOver2);
// Do real->complex forward FFT
vDSP_fft_zrip(m_setupReal, &(m_splitComplex), 1, LOG_2N, kFFTDirection_Forward);
Что я пропускаю прямо сейчас, в моем понимании использования БПФ, как получить полный спектр большого аудиофайла, давайте предположим 12800 образцы в общей сложности.
Вопрос: мне нужно разделить исходные данные в кадры с размером 1024 выборки (~ 12800/1024 = 13 кадров), а затем выполнить БПФ на каждом кадре по отдельности, а затем, как-то, в среднем 13 FFTs ли результаты в полученный спектр? Если это правильное предположение, то как выполнить усреднение?
Я бы очень признателен за любую помощь.