可以在代码中表示/计算声音的哪些属性?

时间:2010-07-29 18:45:28

标签: audio

这个可能适合那些对音乐理论有所了解的人。人类可以识别声音的某些特征,例如音高,频率等。基于这些属性,我们可以将一种声音与另一种声音进行比较,并获得可能性的测量。例如,将钢琴的声音与吉他的声音区分开来是相当容易的,即使两者都在播放相同的音符。

如果我们以编程方式进行相同的过程,从两个音频样本开始,我们可以计算和使用哪些声音属性进行比较?从更技术性的角度来看,是否有任何流行的API来做这种事情?

P.S。:如果我在问题中犯了任何基本错误,或者我听起来像一个完整的音乐菜鸟,请原谅。这是因为我一个完整的音乐菜鸟。

5 个答案:

答案 0 :(得分:2)

有两组属性。

“频域” - 特定样本中泛音的幅度。这是每个泛音的幅度。

“时域” - 通过时间的振幅样本序列。

您可以使用Fourier Transforms在两者之间进行转换。

时域是声音“是” - 一系列振幅。频域是我们“听到”的 - 一组决定乐器,和声和不和谐的泛音和音高。

两种频率的混合 - 随时间变化 - 是对旋律的感知。

答案 1 :(得分:2)

The Echo Nest具有易于使用的分析功能,可以找出您可能想要了解的有关音乐的所有信息。

您可能会发现the analyze documentation(警告,pdf链接)很有帮助。

答案 2 :(得分:0)

声音的任何和所有属性都可以表示/计算 - 你只需要知道如何。其中一个更有趣的是光谱分析/频谱编程(见http://en.wikipedia.org/wiki/Spectrogram)。

答案 3 :(得分:0)

您可以在代码中测量或表示您想要的任何属性。你想要什么?

您想测试两个样品来自同一台仪器吗?两个不同仪器的样品具有相同的间距?那两个样本具有相同的幅度?同样的腐烂?那两个声音有相似的光谱质心?那两个样本是一样的吗?它们是相同的,但可能是一个已被混响或通过过滤器?

答案 4 :(得分:-1)

忽略您可能不熟悉的所有人为创造的术语,并考虑更简单的现实描述。

声音,就像我们所感知的任何其他东西一样,只是一种空间 - 时间模式,在这种情况下是“运动”......原子(空气粒子,钢琴弦等)。物体的运动导致空气的运动,在我们的耳朵中产生压力波,我们将其解释为声音。

计算上,这很容易建模;然而,因为这种运动可以是任何模式 - 从剧烈的随机摇动到高度规则的振荡 - 通常没有恒定的可识别“频率”,因为它通常不是完全规律的振荡。移动物体的形状,通过它的波浪等等都会在空中造成非常复杂的图案......就像你在水池中打出的波浪一样。

问题减少到识别移动的常见模式和特征(以非常高的速度)。因为模式是任意的,所以你真的需要一个系统来学习和分类常见的运动模式(即在计算机中用数字表示的运动)到各种概念桶中。