【问题标题】:How to resolve frequency from PCM samples如何从 PCM 样本中解析频率
【发布时间】:2014-06-25 06:59:01
【问题描述】:

我想使用 LED 灯条构建一个音频可视化显示器,以便在聚会上使用。构建显示器和编程渲染引擎相当简单,但除了渲染 PCM 样本外,我没有任何信号处理经验。

我想实现的主要功能是由可听频率驱动的动画。为了让事情变得超级简单并掌握它,我想首先根据输入信号的可听频率简单地渲染一种颜色(例如,最高可听频率将被渲染为白色)。

我知道,将输入样本读取为 PCM 可以得到气压(强度)相对于时间的幅度,并且使用傅里叶变换将信号输出为相对于频率的强度。但是从那里我迷失了如何解决实际频率。

是否需要将数字频率解析为傅里叶变换的逆变换(例如强度是参数,频率是结果)?

我知道有不同类型的傅里叶变换适用于不同的目的。哪个对这样的应用程序有用?

【问题讨论】:

    标签: audio arduino signal-processing fft pcm


    【解决方案1】:

    您可以使用 DFT 或 FFT 将样本从时域转换到频域。它输出频率及其强度。实际上,您会得到一组频率,而不仅仅是一个。基于此,可以点亮 LED 灯条。见DFT spectrum tracer

    【讨论】:

    • 感谢您的回答。是的,我意识到 FFT 的结果函数具有频域和强度范围。我感到困惑的是,这意味着解决我想要关联颜色的频率。例如,如果对音频数据的子集(可能是 1 毫秒)进行 FFT,那么该 FFT 的频率是如何实现的?我的意思是,考虑到这个 FFT,那段时间的可听频率是如何实现的?我的假设是我可能不得不取那个时间片的所有频率的平均值。
    • 您可以暂时取强度最高的频率。加权平均也是有道理的。你能解释一下你希望得到的“音频可视化显示器”的最终输出吗?
    • 当然。一般来说,我想通过不同的属性来驱动不同的动画,类似于 winamp 或任何 PC 可视化工具。有一个标准动画根据音频的属性(我相信通常是频率)运行和操作(视图变换是偏移的)。因此,为了简单起见并掌握必要的算法,我想基本上定期采样音频输入,解析每个间隔的频率,并根据该频率输出颜色。
    • 为了测试,在每个样本中绘制每个频率的同心圆,其半径是强度,颜色是频率,也就是极坐标图分析仪!
    • 我喜欢!听起来是一种有趣且有趣的测试方法。我会记住这一点。非常感谢您的智慧和参与。你的回答被接受了。
    【解决方案2】:

    “频率”,作为单个数字音频频谱值,几乎不存在于所有声音中。这就是为什么 FFT 可以为您提供完整音频频谱的所有 N/2 个频率区间,最高采样率的一半,分辨率由 FFT 的长度决定。

    【讨论】:

      猜你喜欢
      • 2010-09-09
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多