0

Я пытаюсь осуществить вычисление FFT, используя vdSP от Apple, в записанном звуковом файле (предположим, что это моно PCM).Ускорение рамки vDSP, FFT обрамление

Я сделал исследования здесь, и я нашел следующие темы весьма полезно:

Например, мы настроили 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 ли результаты в полученный спектр? Если это правильное предположение, то как выполнить усреднение?

Я бы очень признателен за любую помощь.

ответ

1

Вы не хотите усреднять спектры, если у вас нет статистически стационарного сигнала. Если это что-то изменяющееся во времени, как речь или музыка, то у вас фактически есть набор 3D-данных: время и частота по сравнению с величиной, которую вы можете построить как spectrogram или waterfall plot.

Обратите внимание, что обычная практика заключается в перекрытии последовательных окон, чтобы получить большее разрешение на оси времени, поэтому ваш первый блок может быть образцами 0..1023, а затем второй блок с 50% перекрытием будет 512 .. 1535 и т.д.

0

с другой стороны, если ваш сигнал является неподвижен, и смешивают с некоторым количеством шума, то вектор усреднения результатов магнитуды нескольких FFTs даст вам метод Уэлча, который может улучшить сигнал шум в результате усредненного спектра амплитуды.

Кроме того, если сигнал неподвижен, то использование разности фаз между БПФ-битами офсетных окон может использоваться с алгоритмом фазового вокодера для уточнения спектральных оценок частоты. Если сигнал неподвижен в течение коротких промежутков времени, то можно сделать это только для окон, которые вписываются в эти интервалы, возможно, путем уменьшения смещений окна (увеличение перекрытий).

Таким образом, это зависит от сигнала и какой информации вы хотите от БПФ.