gpt4 book ai didi

math - 我不太了解 FFT 和采样率

转载 作者:行者123 更新时间:2023-12-03 02:30:50 24 4
gpt4 key购买 nike

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

最佳答案

  • DFT输出

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

    是基函数的幅值。如果需要相位,那么
    phase=atan2(Im,Re)

    当心 DFT 结果很大程度上取决于您的基函数的输入信号形状、频率和相移。这会导致输出在正确值附近振动/振荡,并产生宽峰值而不是奇异频率的尖峰,更不用说混叠了。
  • 频率

    如果你得到 44100Hz那么最大输出频率是它的一半,这意味着数据中存在的最大频率是22050Hz . DFFT 但是不包含此频率,因此如果您忽略镜像的后半部分结果,则:
  • 对于 4 个样本,DFT 输出频率为 { -,11025 }赫兹
  • 8 个采样频率为:{ -,5512.5,11025,16537.5 }赫兹

  • 输出频率从一开始就与其地址成线性关系,所以如果你得到 N=512 sample
  • 对其进行 DFFT
  • 获得第一N/2=256结果
  • i -th 样本代表频率 f=i*samplerate/N赫兹

    在哪里 i={ 1,...,(N/2)-1} ...跳过i=0

  • example signals

    该图显示了我的一个实用程序应用程序与
  • 2 声道发声器(左上)
  • 2 channel 示波器(右上)
  • 2 channel 频谱分析仪(底部)... 切换到线性频率刻度,以明确我在上面的文字
  • 中的意思

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

    这里 DCT DFT 比较:

    DFFT vs DCT

    这里是 DFT 采样率对输入信号频率混叠的输出依赖性

    DFFT vs sampling rate aliasing
  • 更多 channel

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

  • 【备注】

    更大的 N结果更好(混叠伪影更少,更接近最大频率)。对于特定频率检测是 冷杉 过滤检测器更精确、更快。

    强烈推荐阅读 DFT以及那里的所有子链接,还有这个 plotting real time Data on (qwt) Oscillocope

    关于math - 我不太了解 FFT 和采样率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28674724/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com