我正在尝试使用ANN进行音符音高检测。该网络是一个简单的双层MLP,其输入基本上是DFT(平均和对数分布),并且12个输出对应于特定八度的12个音符。使用神经网络进行音高检测
网络训练有几个乐器演奏的12个音符的样本(每次一个音符)和几个“沉默”样本。
结果其实很好。网络能够准确地检测到由不同乐器演奏的音符,这与噪音相关,甚至在播放歌曲时完全没有问题。
但是,目标是能够检测到复音。所以当两个或更多的音符一起播放时,两个相应的神经元将会发射。令人惊讶的是,网络实际上已经在一定程度上做到了这一点(仅对单音样本进行训练),但是与单音音符相比,一致性和准确性都较差。我的问题是如何提高识别多声道声音的能力?
问题是我不真正理解为什么它实际上已经工作。不同的音符(或它们的DFT)在网络训练的空间中基本上是不同的点。所以我明白了为什么它能识别类似的声音(附近的点),而不是它如何“结束”音符组合(与每个训练例子形成一个距离点)的输出。与(0,0)(0,1)(1,0)=(0)训练的AND网络一样,预计不会“结束”(1,1)=(1)。
蛮力的违规行为是尽可能多的复调样本训练网络。然而,由于网络似乎以某种方式模糊了单音样本的想法,因此这里可能更有趣。
任何指针? (抱歉的长度,顺便说一句:)。
只是采取最大频率是非常不可靠的 – finnw 2010-12-13 00:49:48