我试图通过哼唱系统开发一个查询,并寻找一个有效的算法来比较哼唱查询的频率和数据库中的频率。似乎动态时间包装将是合适的,因为它可以处理不同的速度(节奏)。
但是,即使用户在不同的和弦中哼唱,这是否可以用于比较?换言之,用不同的音调哼唱(例如,原来的歌曲在C和弦,用户在E和弦)
有没有用c编写的示例代码?(找到了一些matlab代码,但不幸的是我不熟悉matlab)或者至少有一个教程描述了与此上下文相关的DTW?
如果DTW不适合,是否有其他算法适合此目的?
非常感谢你的建议提前谢谢:)

最佳答案

Equal temperament调谐(不是人类本身被调谐,而是作为一个模型)中,相邻音(半步)之间的比率是2的第12根,即1.0595,这样12个半步构成一个倍频程,每个倍频程是倍频程不管一个人用什么键哼一首曲子,你都应该能够通过考虑音符的频率比来确定他们在哼什么。

关于c# - 动态时间规整算法对于哼唱系统的查询有多合适?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9418435/

10-12 05:24