从单声道非MIDI音乐文件中分离乐器的音频

时间:2017-10-19 18:45:31

标签: machine-learning artificial-intelligence signal-processing midi

我的朋友Prasad Raghavendra和我一起试图在音频上试验机器学习。

我们正在努力学习并探索任何即将到来的聚会的有趣可能性。 我决定看看有多深入学习或任何机器学习可以用人类评定的某些音频(评估)。

令我们沮丧的是,我们发现问题必须分开才能适应输入的维度。 因此,我们决定放弃人声并通过伴奏进行评估,假设人声和乐器始终是相关的。

我们试图寻找MIDI转换器的mp3 / wav。不幸的是,它们仅适用于SourceForge和Github上的单一乐器,其他选项是付费选项。 (Ableton Live,Fruity Loops等)我们决定将此作为一个子问题。

我们想到了FFT,带通滤波器和移动窗口以适应这些。

但是,如果弹奏和弦并且档案中有5-6种乐器,我们就不能理解如何分割乐器。

  1. 我可以寻找哪些算法?

  2. 我的朋友知道要玩键盘。所以,我将能够获得MIDI数据。但是,有没有针对此的数据集?

  3. 这些算法可以检测多少种仪器?

  4. 我们如何拆分音频?我们没有多个音频或混音矩阵

  5. 我们也在考虑找出伴奏的模式,并在唱歌的同时实时使用这些伴奏。我想一旦我们得到1,2,3和4的答案,我们就能够考虑它。(我们正考虑和弦进程和马尔可夫动力学)

  6. 感谢您的帮助!

    P.S。:我们也尝试过FFT,我们能够看到一些谐波。当在时域中输入矩形波时,是由于fft中的Sinc()吗?可以用它来确定音色吗?

    FFT of the signals considered

    我们能够粗略地制定问题。但是,我们仍然发现难以制定问题。如果我们将频域用于特定频率,则仪器难以区分。以440赫兹播放的长号或以440赫兹播放的吉他将具有除音色之外的相同频率。我们仍然不知道如何确定音色。我们决定通过考虑笔记来到时域。如果音符超过某个八度音阶,我们会将其用作下一个八度音阶的单独维度+1,当前八度音阶为0,前一个八度音阶为-1。

    如果音符由诸如“A”,“B”,“C”等字母表示,则问题会缩小为混合矩阵。

    培训期间

    O = MI M是必须使用已知的O输出和我输入的MIDI文件找到的混合矩阵。

    在预测期间,M必须由使用先前M矩阵生成的概率矩阵P替换。

    问题减少到 I 预测 = P -1 O 。然后将误差降低到I的LMSE。我们可以使用DNN来使用反向传播来调整P.

    但是,在这种方法中,我们假设笔记'A','B','C'等是已知的。我们如何瞬间或在0.1秒的短时间内检测到它们?因为模拟匹配可能由于谐波而不起作用。任何建议都会非常感激。

2 个答案:

答案 0 :(得分:0)

拆分不同的部分是一个机器学习问题。不幸的是,你不能只在音频领域看这个问题。你必须考虑音乐。

你需要训练一些东西,以便在你给它的音乐类型的背景下理解音乐模式和进步。它需要理解不同乐器的声音,混合和不混合。它需要了解这些乐器如何经常在一起演奏,如果它有机会分开正在发生的事情。

这是一个非常非常困难的问题。

答案 1 :(得分:0)

这是一个非常棘手的问题,主要是因为归因于22Khz +的Nyquist折叠谐波,以及其他谐波引入(如饱和器/失真和引入谐波的其他模拟设备),音频转换成音高并不简单。

基本谐波并不总是最大的,这就是您的计划无法正常工作的原因。

最难衡量的是失真的吉他。一些踏板/插件可以产生的谐波令人发疯。