machine-learning - 基于神经网络的机器学习基音检测

  显示原文与译文双语对照的内容

我正尝试用神经网络来检测音符的音调。 网络是一个简单的两层( 平均值和对数分布),它的输入基本上是一个 DFT,12输出对应于特定 Octave的12注释。

网络由几个仪器( 一次一个音符) 播放的12个音符组成,以及一些"静音"的样本。

结果是很好的。 网络能够准确地检测出不同乐器播放的音符,在播放音乐时相对 amune,甚至在播放歌曲时完全不松动。

然而,目标是能够探测到polyphonic声音。 所以当两个或者两个上的音符一起演奏时,两个对应的神经元将会激发。 令人惊讶的是,网络实际上已经做到了一定程度的( 仅经过单声道样品训练),但是比单声音音频更少。 我的问题是如何增强它识别polyphnic声音的能力?

问题是我不真正理解为什么它已经实际工作了。 不同音符( 或者他们的DFTs ) 基本上是训练网络的空间中的不同点。 所以我明白为什么它识别类似的声音,但不知道它是如何组合输出的音符( 哪一个是每个训练示例中的一个距离)的。 ( 0,0 ) ( 0,1 ) ( 1,0 ) = ( 0 )的网络和网络相同的方法不应为( 1,1 ) = ( 1 ) 。

这种强力aprroach是为了尽可以能多地训练网络。 然而,由于网络似乎从单纯的样本中模糊地抓住了这个想法,这里可以能有更多的fundemential 。

有线索( 。抱歉,长度为:) 。

时间: 原作者:

它工作的原因可以能很简单,你没有训练它来选择一个,只有一个输出( 至少我认为你不是't 。 在简单的情况下,输出只是输入和权重的一个点积,权重将成为相应的音频的匹配滤波器。 由于一切都是线性的,如果多个匹配的滤波器同时看到匹配的( polyphonic音符的情况),那么多个输出。 由于你的网络可以能包含非线性,所以图片有点复杂,但是这个概念可以能是相同的。

关于改善它的方法,用midi样本训练当然是一种可能性。 另一种可能性是 switch 到线性滤波器。 polyphonic声音的DFT基本上是每个声音的DFTs之和。 要求输入的线性组合成为输出的相应线性组合,所以线性滤波器是适当的。

顺便说一下,为什么你在第一个地方使用神经网络? 看起来,只要看到 DFT,即使是最大频率,也会更容易得到更好的结果。

...