audio - 音乐样本中的谐波计数

标签 audio signal-processing processing spectrum minim

为了确定声音的丰富度,我想确定音乐样本中谐波的数量。为此,我正在使用 加工最小 库,它为我提供了一个完整的频谱 FFT .我想知道如何计算 产生的光谱中的所有峰值FFT ,我什至对基频不感兴趣。

最佳答案

根据您的需要,有很多方法可以实现这一点。

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

或者,您可以找到信号强度的基线(在最简单的情况下使用平均值),然后计算正异常值的数量(与基线的一些可配置的最小偏差)。如果您修改此方法以使用与频率相关的基线和最小值来解释更高频率下强度的逐渐下降,您可能会获得更好的结果(同样,这取决于您的特定信号和需求,这是否有用)。一种简单的方法是将您的频谱划分为多个波段(小到足以假设每个波段的能量分布或多或少是平坦的),并为每个波段使用不同的基线和最小值。

关于audio - 音乐样本中的谐波计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8026233/

相关文章:

java - 处理加载和播放声音

Linux 音频录制和质量比较

c# - SoundPlayer和Windows 7 WAV文件

c# - 每秒在C#Windows窗体应用程序中的自定义.wav文件

python - Python 和 Matlab 中平均频率的差异

c - 如何在C中实现Z系数?

drag-and-drop - 如何在旧版本的Processing中选择并拖动椭圆?

javascript - 有没有办法在同一个视频中分别播放音频和视频

Python:小波、PyWavelets 的问题

processing - 在 p5js 中创建星星的数学原理是什么