我正在尝试通过哼唱系统开发查询,并寻找一种有效的算法来比较哼唱查询的频率与数据库中的频率。似乎动态时间包装将是合适的,因为它可以处理不同的速度(节奏)。
答案 0 :(得分:0)
在Equal temperament调整中(不是人类调整本身,而是作为模型)相邻音符之间的比例(半步)是2的第12个根,或1.0595,使得12个半音阶构成一个八度音阶,并且每个八度音阶都是频率的两倍。无论有什么关键人物哼唱你应该能够通过考虑音符频率的比率来确定他们正在哼唱的intervals。
答案 1 :(得分:0)
1,最好在通过DTW比较两个曲调前对音高进行标准化,我认为这在文献中被称为音高变换。
2,我不确定是否有C#实现,https://github.com/EmilioMolina/QueryBySingingHumming,这是一个c / c ++演示代码。
3,DTW是匹配两个时间序列的有效算法,但唯一的问题是计算成本,我们必须找到一种方法来降低我们做真实系统时的成本:a)找到一种方法做DTW指数? b)找到一种更有效但不那么准确的算法来缩小DTW的搜索范围?