【问题标题】:Seperation of instruments' audios from a single channel non-MIDI musical file从单通道非 MIDI 音乐文件中分离乐器的音频
【发布时间】:2018-03-31 21:35:39
【问题描述】:

我和我的朋友 Prasad Raghavendra 正在尝试在音频上使用机器学习。

我们这样做是为了在任何即将举行的聚会中学习和探索有趣的可能性。 我决定看看深度学习或任何机器学习如何通过人类评定的某些音频进行输入(评估)。

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

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

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

但是,如果演奏和弦并且文件中有 5-6 种乐器,我们不了解如何拆分乐器。

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

  2. 我的朋友知道弹键盘。因此,我将能够获得 MIDI 数据。但是,是否有任何用于此目的的数据集?

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

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

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

感谢大家的帮助!

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

我们能够粗略地表述问题。但是,我们仍然发现很难表述这个问题。如果我们对某个频率使用频域,那么这些仪器是无法区分的。以 440 Hz 演奏的长号或以 440 Hz 演奏的吉他将具有相同的频率,但音色除外。我们仍然不知道如何确定音色。我们决定通过考虑笔记来按时域进行。如果一个音符超过某个八度音阶,我们会将其用作单独的维度,+1 表示下一个八度音阶,0 表示当前八度音阶,-1 表示前一个八度音阶。

如果音符用“A”、“B”、“C”等字母表示,那么问题就归结为混合矩阵。

O = MI 在训练期间。
M 是混合矩阵,必须使用 MIDI 文件的已知 O 输出和 I 输入求出。

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

问题简化为 Ipredicted = P-1O。然后误差将减少到 I 的 LMSE。我们可以使用 DNN 使用反向传播来调整 P。

但是,在这种方法中,我们假设音符“A”、“B”、“C”等是已知的。我们如何在瞬间或像 0.1 秒这样的小持续时间内检测到它们?因为,模板匹配可能由于谐波而无法工作。任何建议将不胜感激。

【问题讨论】:

  • 复音分解似乎仍然是研究课题。本次会议已有数百篇关于该主题的研究论文:music-ir.org/mirex/wiki/MIREX_HOME
  • @hotpaw2 谢谢!我该如何开始?我可以假设多种乐器的不同节奏吗?这在物理上可能无法区分(给定谐波)。但是,如果我把它轻描淡写,比如说,没有一个乐器与音符或其他乐器重叠,它就没有意义。我如何为此构建输入和输出?我已阅读有关手动分类的“乐器类别”的信息。但是,我想自动化整个过程 - 它可能会在评估功能中使用 LMS。任何见解将不胜感激!
  • 第一个“小步骤”需要哪些假设本身可能是您的第一个研究问题。
  • 这是一个当前开放的研究领域,非常复杂,甚至可能不可靠。重新考虑一下为什么你需要它来解决你原来的问题,或者准备好花费很多年的时间来解决这个问题。
  • @Linuxios 谢谢。这就是我明白的。每次我试图找到解决方案时,都会弹出更多问题。但是,我通过尝试学习了很多深度学习。再次感谢您

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


【解决方案1】:

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

你需要训练一些东西来理解你所提供的音乐类型的背景下的音乐模式和进程。它需要了解不同乐器的声音,包括混合的和未混合的。它需要了解这些乐器是如何经常一起演奏的,如果它有任何机会区分正在发生的事情。

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

【讨论】:

  • 谢谢。是的,我知道这是一个难题。但是,我该如何开始(可能是用两种乐器?一种演奏旋律,另一种是吉他演奏和弦?)因为,人类似乎可以识别许多乐器并且可以近似 E7 到 E 等和弦。我们真的很感兴趣我们会学到很多关于机器学习的知识,也会找到合适的朋友。再次感谢
  • @AkshayRathod 您可能会对人类能做什么和不能做什么以及音乐背景的重要性感到惊讶。我可以演奏 CMaj 和弦的上半部分,但如果我之前在贝司中演奏 A,你会听到 Amin7。祝你好运从 FFT 中获得音乐背景。 :-) 甚至在某些情况下,人类听到了不存在的东西。在长号上演奏向下的音阶,一直到最低。对于最后的 5 或 6 个音符,将没有基础!由于音乐背景,人类会感知到它。
  • @AkshayRathod 根据您要执行的操作,您最好获取要分析的歌曲的词干文件。
  • 这些见解真的很有帮助。我首先对拆分 wav/mp3 文件感兴趣(稍后我会考虑和弦进行)。如果 FFT 是一个坏主意(我在研究论文中看到过),那么人们会选择时间序列信念网络。但是,对于具有不同速度的复音声音,我怎样才能用说 python 对两个/三个乐器进行一些快速破解?输入应该是 MIDI 主干文件吗?我猜机器学习输入将是二维数组,输出将是二维数组。以仪器 x 音符为尺寸。二维数组将被合并为最终输出。那是对的吗?非常感谢
【解决方案2】:

这是一个非常困难的问题,主要是因为将音频转换为音高不是很简单,因为 Nyquist 折叠 22Khz+ 的谐波以及其他谐波引入,例如饱和器/失真和其他引入谐波的模拟设备。

基本谐波并不总是最响亮的,这就是你的计划行不通的原因。

最难测量的是一把失真的吉他。一些踏板/插件可以产生的谐波很疯狂。

【讨论】:

    猜你喜欢
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多