我想使用ANN的音符音高检测。该网络是一个简单的双层MLP,其输入基本上是DFT(平均和对数分布),和12个输出对应于特定的八度音阶的12个音符。

在网络进行训练,以由一些仪器(一个音符一次)播放那些12个音符的几个样品,以及“沉默”的几个样品。

的结果是实际上良好的。该网络是能够检测由不同的仪器preety准确无误地播放这些笔记,它的相对amune到噪声,并且甚至没有完全失去它的sanety正在播放一首歌曲时。

的目标,但是,是能够检测和弦声音。所以,当两个或更多的音符一起玩,两个相应的神经元会火。令人吃惊的是,网络其实已经做的是在一定程度上(被培训了只有单声道采样),但一致性较差且小于准确的单音音符。我的问题是如何提高它的识别polyphnic声音的能力?

问题是我不忠实地理解为什么它确实可以工作了。不同的音符(或他们的DFT)基本上是在空间的不同点为其网络进行训练。因此,我认为,它为什么承认similiar声音(景点),而不是它是如何“总结”的笔记(形成从每个训练例子远点)的组合输出。以同样的方式被培养了(0,0)(0,1)(1,0)=(0),预计不会 “结束” 即(1,1)=(1)。

在蛮力aprroach到这对网络与培养多达和弦样品成为可能。然而,由于网络似乎莫名其妙隐约把握从单声道采样的想法,很可能有更多的东西fundemential这里。

任何指针? (抱歉长度,顺便说一句:)。

有帮助吗?

解决方案

它的工作原理已原因可能很简单,你没有训练它选择一个,只有一个输出(至少我认为你没有)。在当输出只是输入和权重的点积的简单情况中,权重将成为相应的音调匹配滤波器。既然一切是线性的,多产出将同时得到激活,如果多个匹配滤波器同时看到精彩的比赛(如和弦音符的情况下)。由于网络可能包括非线性,画面更复杂一点,但这个想法可能是一样的。

关于改进办法,培养具有和弦样本肯定是一种可能性。另一种可能性是切换到线性滤波器。和弦声音的DFT是基本上每个单独的声音的的DFT的总和。您想要的输入的线性组合,以成为输出相应的线性组合,所以线性滤波器是合适的。

顺便说一句,你为什么要使用这个神经网络在首位?这似乎只是在看DFT,并说,以最大频率会更容易给你更好的结果。

其他提示

<强>安西Klapuri 是一个受人尊敬音频研究员谁已经发表在使用时的神经网络和弦录音进行音调检测的方法。

您可能想Klapuri的方法比较你的。正是在他的硕士论文充分说明,音乐的自动转录信号处理方法的。你可以在网上找到他的很多论文,或购买他的书,解释了他的算法和测试结果。他的硕士论文被链接如下。

https://www.cs.tut.fi /sgn/arg/klap/phd/klap_phd.pdf

在和弦录音基音检测是一个非常棘手的问题,并包含了许多争议 - 准备做大量的阅读。下面的链接包含在和弦录音,我一个名为免费的应用程序开发了另一种方法来基音检测的 PitchScope播放器的。我的C ++源码可以用GitHub.com,和下面的链路内被引用。中的免费的可执行版本PitchScope播放器的也可在网络和运行在Windows上。

实时基音检测

我尝试了在检测到2个的正弦波之间的差异演变一个CTRNN(连续时间递归神经网络)。我有一定的成功,但从来没有时间,这些神经元的银行(即类似于耳蜗带)。

跟进

一种可能的方法是采用遗传编程(GP),以生成短片断的检测俯仰代码。这样,您就能够产生怎样的间距检测工作的规则,这将有望成为人类可读的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top