Closed. This question needs to be more focused。它当前不接受答案。












想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。

2年前关闭。



Improve this question





给定一个音乐文件,是否可以拆分正在演奏的每种乐器?即假设我有someSong.mp3,而那首歌中有人声,吉他,贝斯和鼓。我想获得4条“音轨”-每个不同的乐器一个。

我猜想,鉴于乐器可以重叠,几乎不可能做到这一点,而且很难区分重叠的声音,更不用说乐器了。

但是,有没有一个库,一个算法或某种执行此操作的方法,我很想知道如何做。

最佳答案

我的本科项目涉及将音符从WAV文件转录为MIDI文件。我们仅处理一种乐器的简单情况,一次可能演奏多个音符(例如,钢琴)。在开始研究之前,我们对该主题的研究表明,即使是这种(即只有一种乐器)也被认为是微不足道的。基本上,问题是:


查找在任何给定时间播放的频率。可以通过一次对一个小窗口进行DFT / FFT来完成。
使用一些试探法来猜测哪些频率是同一音符的和声,而哪些属于不同的音符。如果您知道正在演奏什么乐器,这可能很容易,但是在一般情况下很难,因为每个和声的大小因乐器而异。例如,您可能与一台仪器相距一个八度的两个C,或者您可能与另一台仪器相隔一个C的一个C。
在知道每次演奏的音符之后,您必须猜测音符何时中断。您可以有一个长音或一系列短音。根据用于初始DFT的窗口的大小,此处可能会有不同的结果。


现在,如果您一次拥有一个以上的乐器,而没有两个乐器同时演奏相同的音符或和声,则您可以使用一些关于和声幅度或音序的试探法来区分这些乐器他们正在演奏的音符。很有可能有时候两种乐器演奏同一音符。那么,您实际上没有任何办法来确定是否存在(a)一种乐器弹奏音符,(b)两种乐器以相同的音量演奏,(c)一种柔和而另一种大声演奏,或(d)任何一种它们的组合。

无论如何,这是要解决的问题的简短清单。在一般情况下,我不知道有什么算法可以解决这个问题。我认为这个问题尚未解决。

编辑:我的项目演示文稿可以在http://www-sipl.technion.ac.il/new/Archive/Special_Events/sipl2004/Projects_PowerPoint/WAV-to-MIDI.pdf上找到

关于language-agnostic - 在音乐文件中区分乐器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/698191/

10-08 22:33