确定音频是否为音乐的算法

时间:2011-04-03 19:36:08

标签: algorithm audio

我不完全确定这是发布此问题的正确堆栈交换子网站,但是......

我正在寻找一种算法,如果给定的音频片段不是音乐,我可以用它来确定一定程度的确定性。只是一个布尔结果很好,我不需要知道键,bpm或类似的东西,我只需要能够确定它是否看起来像是音乐(而不是语音)。编程语言无关紧要,但我最终会将其转换为Python。

4 个答案:

答案 0 :(得分:12)

在短语Fourier analysis中。随着时间的推移,看看不同频率的功率。这是speech,而这里是violin playing。前者显示每个音节的戏剧性变化; '流'是非常不相交的,可以通过算法来获取,该算法将不同频带的导数作为时间的函数。另一方面,在范式音乐中,过渡更平滑,色调更纯净(图中的“模糊”更少)。另请参阅'spectrogram' wikipedia page

答案 1 :(得分:2)

你可以做的是设置一些Karplus Strong共振环并通过它们通过音频,只监控每个环中的能量水平

如果是西方音乐,它几乎全部调到12-TET,即基于音乐会音高A4 @ 440Hz的对数12音调音阶

所以只需选择通过八度音程等间隔的3或4个音符,例如C5,(省略C#D D#)E5(省略F F#G)G#5(省略A A#B)

并且这些戒指中至少有一个会经常发声 - 无论音乐在哪个关键位置,都可能会发出相当多的音符

理想情况下是为一堆笔记做的,但是如果你需要这个实时它可以让你的音频同时变得有点重50环

或者,您甚至可以使用音高检测器和目录记录的音高,并查看log(noteAfreq):log(noteBfreq)的比率,看看它们是否正在将自己排列成低阶分数,如3:4 + = 0.5%。但我认为没有人建造过一个像样的复音音调探测器 - 它实际上是不可能的。

Melodyne可能已将其拉下来

如果只是一个声音信号,你可以给我发电子邮件。

答案 2 :(得分:0)

出于某种原因,这个问题吸引了大量非常糟糕的答案。

使用pyAudioAnalysis。此外,谷歌“音频特征分析”。

从表面上看,这听起来像是一个难题,但在过去的20年里,分类器的工作大量增加,因此存在许多记录良好的解决方案。今天的大多数分类器通常可以解决这个问题,错误率只有几个百分点。有些分类器甚至可以算出what genre of music it is

目前大多数算法分解为检测输入音频(特征)的一系列统计表示,然后根据以前的训练数据做一组automatic classifications输入。

pyAudioAnalysis是一个用于提取这些功能,然后根据检测到的功能训练kNN或其他混合模型的库。还有许多类似的库,例如C ++的Essentia。 Essentia也有Python绑定。

An Introduction to Audio Content Analysis: Applications in Signal Processing and Music Informatics是一本很好的入门书。

答案 3 :(得分:-1)

在音乐音调范围内的一系列FFT上寻找小的“第一差分”(即:每个块通过FFT运行1024个采样,然后绘制chunk1-chunk0,chunk2-chunk1,......)。作为第一个近似值,这应该足以检测简单的事物。

这种算法可以永久调整,即使是特定类型的方式。音乐本身通常也是周期性的,因此提出了一种在FFT上运行FFT的方法。寻找两个突出频率的一致的第十二根的想法听起来似乎是合理的。

我打赌你希望找到这个坐在免费的Python库中,只需将文件放入。 : - )

相关问题