Nem*_*eth 29 algorithm audio signal-processing music-notation
我正在开发依赖于音乐和弦检测的软件.我知道一些基于倒谱分析或自相关技术的音调检测算法,但它们主要关注单声道材料识别.但我需要使用一些复音识别,即同时进行多个音高,就像在和弦中一样; 有谁知道一些关于这个问题的好的研究或解决方案?
我目前正在开发一些基于FFT的算法,但如果有人对我可以使用的某些算法或技术有所了解,那将会有很大的帮助.
Joh*_*ica 12
作为Mac的转录程序的Capo的作者有一个非常深入的博客.条目"关于自动选项卡的注意事项"有一些很好的跳跃点:
我在2009年中期开始研究不同的自动转录方法,因为我很好奇这种技术有多远,以及它是否可以集成到未来版本的Capo中.
这些自动转录算法中的每一个都以音频数据的某种中间表示开始,然后它们将其转换为符号形式(即音符开始和持续时间).
这是我遇到一些计算上昂贵的频谱表示(连续小波变换(CWT),恒定Q变换(CQT)等).)我实现了所有这些频谱变换,这样我也可以实现论文提出的算法I正在读书.这会让我知道它们是否会在实践中发挥作用.
Capo拥有令人印象深刻的技术.突出的特点是它的主视图不像大多数其他音频节目那样是频谱图.它像钢琴卷一样呈现音频,肉眼可以看到音符.
http://supermegaultragroovy.com/products/Capo/img/screen1_sm-nq8.png
(注意:硬笔条是由用户绘制的.下面的模糊点是Capo显示的.)
pia*_*imo 12
这是一个非常好的开源项目:https: //patterns.enm.bris.ac.uk/hpa-software-package
它根据色度图检测和弦 - 一个很好的解决方案,将整个光谱的窗口分解为具有浮点值的音高类别(大小:12).然后,可以通过隐马尔可夫模型检测和弦.
..应该为您提供所需的一切.:)
和弦检测和键检测之间存在显着的重叠,因此您可能会发现我之前对该问题的一些答案很有用,因为它与论文和论文有一些联系.获得一个好的复音识别器是非常困难的.
我自己的观点是,应用复音识别来提取音符,然后尝试从音符中检测和弦是错误的方法.原因是这是一个模棱两可的问题.如果你有两个复杂的音调,只有一个八度音程,则无法检测是否有一个或两个音符在播放(除非你有额外的背景,比如知道谐波曲线).C5的每个谐波也是C4(以及C3,C2等)的谐波.因此,如果您在复音识别器中尝试大调和弦,那么您可能会得到与您的和弦谐波相关的整个音符序列,但不一定是您演奏的音符.如果您使用基于自相关的音高检测方法,那么您将非常清楚地看到这种效果.
相反,我认为最好寻找由某些和弦形状(主要,次要,第7等)制作的模式.
看看我对这个问题的回答: 如何在.Net中进行实时音高检测?
本IEEE论文的参考主要是您正在寻找的内容: http //ieeexplore.ieee.org/Xplore/login.jsp?reload = true&url =/5/89/18967/00876309.pdf?narumber = 867309
谐波让你失望.而且,即使基本不存在,人类也可以在声音中找到基础知识!想想阅读,但要覆盖一半的字母.大脑填补了空白.
混音中其他声音的背景以及之前的声音对于我们如何感知音符非常重要.