音乐样本中的谐波计数

6
为了确定音乐样本中的音质,我想要确定谐波的数量。为此,我使用带有FFT的Minim库在Processing中获取完整频谱。我想知道如何计算FFT产生的频谱中所有峰值的数量,我甚至不关心基频。
1个回答

3

根据您的需求,有许多不同的方法可以实现此目标。

如果您想计算每个峰值,那么应该遍历频谱中的所有频率,并记住强度是增加还是减少。每次注意到从增加到减少的方向变化时,都要增加峰值计数器。但请注意,这也将包括非常微弱的峰值,这可能是您需要的,也可能不是您需要的。您可以设置一个最小限制,以确定注册峰值需要多少增加和减少。

另一种方法是找到信号强度的基线(在最简单的情况下使用平均值),然后计算正异常值的数量(与基线具有一定的最小偏差)。如果您修改此方法以使用频率相关的基线和最小值,则可能会获得更好的结果,以考虑在高频率下强度逐渐降低的情况(同样,这取决于您的特定信号和需求是否有用)。一种简单的方法是将频谱分成带(足够小,以便能够假定每个带内部能量分布大致相同),并为每个带使用不同的基线和最小值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接