Audio 如何从PCM样本中解析频率

Audio 如何从PCM样本中解析频率,audio,arduino,signal-processing,fft,pcm,Audio,Arduino,Signal Processing,Fft,Pcm,我想建立一个音频可视化显示使用led条在聚会上使用。构建显示和编程渲染引擎相当简单,但除了渲染PCM样本外,我没有任何信号处理经验 我想实现的主要功能是由音频驱动的动画。为了让事情保持超级简单并掌握窍门,我想首先根据输入信号的音频频率渲染颜色(例如,最高音频频率将渲染为白色) 据我所知,以PCM的形式读取输入样本会给出空气压力(强度)相对于时间的振幅,并且使用傅里叶变换将信号输出为相对于频率的强度。但是从那里我就不知道如何解析实际频率了 是否需要将数字频率解析为傅里叶变换的逆变换(例如,强度是参

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

我想实现的主要功能是由音频驱动的动画。为了让事情保持超级简单并掌握窍门,我想首先根据输入信号的音频频率渲染颜色(例如,最高音频频率将渲染为白色)

据我所知,以PCM的形式读取输入样本会给出空气压力(强度)相对于时间的振幅,并且使用傅里叶变换将信号输出为相对于频率的强度。但是从那里我就不知道如何解析实际频率了

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


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

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

“频率”与单个数字音频频谱值一样,并不适用于几乎所有声音。这就是为什么FFT为您提供全音频频谱的所有N/2个频率单元,最多为采样率的一半,分辨率由FFT的长度决定。

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