Tag: 阶段

使用帧之间的相位变化从FFT区提取精确频率

我一直在浏览这篇精彩的文章: http : //blogs.zynaptiq.com/bernsee/pitch-shifting-using-the-ft/ 虽然太棒了,但却非常艰难而且沉重。 这种材料真的让我感到舒服。 我从Stefan的代码模块中提取了数学,该模块计算给定bin的确切频率。 但我不明白最后的计算。 有人能告诉我最后的数学结构吗? 在深入研究代码之前,让我设置一下场景: 假设我们设置fftFrameSize = 1024,所以我们处理512 + 1个bin 例如,Bin [1]的理想频率适合帧中的单个波。 在40KHz的采样率下,tOneFrame = 1024 / 40K秒= 1/40秒,因此Bin [1]理想地将采集40Hz信号。 设置osamp(overSample)= 4,我们以256为步长沿着输入信号前进。因此,第一个分析检查字节0到1023,然后是256到1279等。注意每个浮点数被处理4次。 … void calcBins( long fftFrameSize, long osamp, float sampleRate, float * floats, BIN * bins ) { /* initialize our static arrays */ static float gFFTworksp[2*MAX_FRAME_LENGTH]; static float gLastPhase[MAX_FRAME_LENGTH/2+1]; […]