我需要比较两组乐曲(即,以midi格式播放的乐曲,提取并保存在数据库表中的音符细节,与以xml格式播放的乐谱)。当根据乐谱(即音符细节音高、持续时间、节奏)评估演奏时,需要进行音符对齐-以识别参考(乐谱)音符中遗漏的/额外的/不正确的/交换的音符。
我有大约1800-2500个音符在一块(甚至可以更多的复调,现在我做的是单音)。所以我要把这些都排成一列吗是内存过载还是堆栈溢出?
有字符串匹配算法,如KMP,Boyce-Moore但是注释对齐也可以通过动态编程来完成。我如何使用动态编程来实现这一点有哪些可用的算法它是关于近似字符串匹配的吗?
哪种方法更有成效字符串匹配算法,如boyce moore,或动态编程?我如何评估哪个更有效?
非常感谢您的任何见解或建议
提前谢谢
最佳答案
有趣的问题-我认为这个paper包含了很多你感兴趣的东西他们解决了错误和音乐对齐的问题,并使用dp作为解决方案讨论了结果。他们引入了一种称为“快速近似匹配”的算法,它们声称比DP方法更好。
看起来在搜索中使用的主要作者是Mongeau&Sankoff看来他们的原始文件在这方面引起了许多工作。
干净的东西希望这有帮助。
关于algorithm - 使用字符串匹配算法或动态编程对齐音符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3005438/