我正在开发依赖于音乐和弦检测的软件。我知道一些基于倒谱分析或自相关技术的基音检测算法,但它们主要集中在单声道材料识别上。但我需要使用一些复调识别,即同时识别多个音高,就像和弦一样;有人知道关于这一问题的一些好的研究或解决方案吗?
我目前正在开发一些基于FFT的算法,但如果有人对我可以使用的一些算法或技术有想法,那将是非常有帮助的。
发布于 2013-01-21 10:29:17
这是一个非常好的开源项目:https://patterns.enm.bris.ac.uk/hpa-software-package
它基于色谱图检测和弦-这是一个很好的解决方案,将整个频谱的窗口分解到具有浮点值的基音类阵列(大小: 12)上。然后,可以通过隐马尔可夫模型来检测和弦。
。。应该能为你提供你需要的一切。:)
发布于 2010-12-03 06:31:34
和弦检测和音调检测之间有很大的重叠,所以你可能会发现我关于这个问题的一些previous answer很有用,因为它有几个到论文和论文的链接。获得一个好的复调识别器是非常困难的。
我自己的观点是,应用复音识别来提取音符,然后尝试从音符中检测和弦是错误的方法。原因是这是一个模棱两可的问题。如果你有两个复杂的音调,恰好相隔一个八度,那么就不可能检测到是否有一个或两个音符在演奏(除非你有额外的背景,比如知道谐波分布)。C5的每个谐波也是C4的谐波(以及C3、C2等的谐波)。因此,如果你在复调识别器中尝试一个主要和弦,那么你可能会得到与你的和弦和谐相关的整个音符序列,但不一定是你演奏的音符。如果你使用一种基于自相关的基音检测方法,那么你会非常清楚地看到这种效果。
相反,我认为最好是寻找由某些和弦形状(大调,小调,第七等)组成的模式。
发布于 2010-12-03 04:11:00
请看我对这个问题的回答:How can I do real-time pitch detection in .Net?
对这篇IEEE论文的引用主要是您要查找的内容:http://ieeexplore.ieee.org/Xplore/login.jsp?reload=true&url=/iel5/89/18967/00876309.pdf?arnumber=876309
谐波会把你抛到一边的。此外,即使根本不存在,人类也可以在声音中找到基本原理!想想阅读,但要覆盖一半的字母。大脑填补了这一空白。
混音中其他声音的上下文,以及之前出现的声音,对我们如何感知音符非常重要。
https://stackoverflow.com/questions/4337487
复制相似问题