【发布时间】:2011-12-22 23:56:36
【问题描述】:
要确定声音的丰富度,我想确定音乐样本中的谐波数量。为此,我将 Processing 与 Minim 库一起使用,它通过 FFT 为我提供了完整的频谱。我想知道如何计算 FFT 产生的频谱中的所有峰值,我什至对基频都不感兴趣。
【问题讨论】:
标签: audio signal-processing processing spectrum minim
要确定声音的丰富度,我想确定音乐样本中的谐波数量。为此,我将 Processing 与 Minim 库一起使用,它通过 FFT 为我提供了完整的频谱。我想知道如何计算 FFT 产生的频谱中的所有峰值,我什至对基频都不感兴趣。
【问题讨论】:
标签: audio signal-processing processing spectrum minim
根据您的需要,有很多方法可以实现这一点。
如果您想计算每个峰值,那么您应该遍历频谱中的所有频率,记住强度是增加还是减少。每次您注意到从增加到减少的方向变化时,您都会增加峰值计数器。但是请注意,这也将包括非常微弱的峰,这可能是也可能不是您需要的。您可以设定一个最低限度,即必须发生多少增加和减少才能记录峰值。
或者,您可以找到信号强度的基线(在最简单的情况下使用平均值),然后计算正异常值的数量(与基线有一些可配置的最小偏差)。如果您修改此方法以使用与频率相关的基线和最小值来解释较高频率下强度的逐渐下降,您可能会获得更好的结果(同样,这取决于您的特定信号并需要这是否有用)。一种简单的方法是将您的频谱划分为多个波段(足够小,以便能够在每个波段中假设或多或少的平坦能量分布),并为每个波段使用不同的基线和最小值。
【讨论】: