我真的不了解FFT和采样率

时间:2015-02-23 13:17:44

标签: math audio signal-processing fft

我真的很困惑。我是一名致力于游戏的ai程序员,旨在检测歌曲中的节拍等等。我以前没有关于音频的知识,只是阅读我能找到的任何材料。虽然我有fft工作和东西我只是不明白样本转移到不同频率的方式。问题1,每个频率代表什么。对于我得到的算法。我可以将1024个样本转换成512个结果。那么它们是对当前第二个频谱强度的描述吗?它真的没有意义,因为我记得的是44.1khz录音中有20,000hz。那么512个频谱样本如何解释当时发生的事情呢?问题2,从我读到的,它是一个代表此时声波的数字。然而,我通过平方左声道和右声道来读取它,并将它们加在一起,您将获得当前的功率水平。这两个看起来似乎与我的理解不连贯,我真的爱上了,所以请解释一下。

1 个答案:

答案 0 :(得分:0)

  1. DFT输出

    输出是基函数(通常是正弦波)的相量(Re,Im,Frequency)的复杂表示。第一项是 DC 偏移,因此请跳过它。所有其他都是相同基频sampling rate/N)的倍数。输出是对称的(如果输入是真实的),所以只使用前半部分的结果。通常使用功率谱

    Amplitude=sqrt(Re^2+Im^2)
    

    这是基函数的幅度。如果需要阶段那么

    phase=atan2(Im,Re)
    

    注意 DFT 结果强烈依赖于输入信号的形状,频率和相移到基函数。这会导致输出在正确的值附近振动/振荡,并产生宽峰而不是尖峰,而不是混淆。

  2. <强>频率

    如果你得到44100Hz,则最大输出频率是其一半,这意味着数据中存在的最大频率为22050Hz。然而, DFFT 不包含此频率,因此如果您忽略镜像的后半部分,则:

    • 对于4个样本,DFT输出频率为{ -,11025 } Hz
    • 对于8个样本频率为:{ -,5512.5,11025,16537.5 } Hz

    输出频率与开始时的地址呈线性关系,如果您有N=512个样本

    1. 对其进行DFFT
    2. 获得第一个N/2=256结果
    3. i - 样本代表频率f=i*samplerate/N Hz

      其中i={ 1,...,(N/2)-1} ...正在跳过i=0

    4. example signals

      图像显示了与

      一起被收录的一个实用程序应用程序
      • 双声道声音发生器(左上)
      • 双通道示波器(右上)
      • 2通道频谱分析仪(下图)...切换到线性频率刻度,使我在上面的文字中明白我的意思

      缩放图像以查看设置...我尽可能接近真实设备。

      此处 DCT DFT 比较:

      DFFT vs DCT

      此处 DFT 输出对输入信号频率混叠的依赖性取样率

      DFFT vs sampling rate aliasing

    5. 更多频道

      通道的总和功率更安全。如果你只是添加频道,那么你可能会错过一些数据。例如,让左声道正在播放1 Khz正弦波,而正确的正好相反,所以如果你只是将它们相加,那么结果为零,但你可以听到声音....(如果你不是正好在扬声器之间的中间)。如果你独立分析每个通道,那么你需要计算每个通道的DFFT,但如果你使用通道的功率和(或绝对和),那么你可以一次获得所有通道的频率,粗略需要缩放幅度。

    6. <强> [注释]

      结果越N越好(混叠伪像越少,越接近最大频率)。对于特定频率,检测 FIR 滤波器检测器更精确,更快速。

      强烈建议您阅读DFT及其中的所有子链接以及此plotting real time Data on (qwt) Oscillocope