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