Open YangLuYang opened 4 years ago
本周
复习《矩阵论》和《人工神经网络技术》
仔细看了胡老师提供的校对好的数据,发现了几个规律 1. 乐曲长度没有想象中的长,绝大部分的长度在10^2数量级,只有极少数达到了10^3数量级。 2. 很多演奏只是一个小片段,只有几个bar的长度。3. 实际弹错的次数很少
下周
继续完成benchmark程序的编写,由于本算法只使用了演奏的音高和时间信息,目前定下的指标有
考虑动态调整匹配粒度。目前算法采用的HMM机制,匹配的粒度为chord(每个chord中包含300ms内出现的所有pitch),进行匹配时采用Viterbi算法,因此每次匹配时均需要遍历所有的可能空间。单次匹配的时间复杂度为O(N),整体的时间复杂度为O(N^2),N为乐谱长度。 本算法可接受的最大尺度约为10^4,大约为30min~1h可演奏的event数量,理论可为练习长度进行匹配。但大尺度的匹配空间会带来错位问题,即应该对应score1的某位置,弹错音高后可能直接匹配到score2,或弹错后重新开始出现匹配位置乱跳的问题。因此我希望能动态调整匹配的粒度,某些情况下将粒度从chord增大到一个bar,目前只是有一个想法,还没有找到合适的方法。
本周
复习《矩阵论》和《人工神经网络技术》
仔细看了胡老师提供的校对好的数据,发现了几个规律 1. 乐曲长度没有想象中的长,绝大部分的长度在10^2数量级,只有极少数达到了10^3数量级。 2. 很多演奏只是一个小片段,只有几个bar的长度。3. 实际弹错的次数很少
下周
继续完成benchmark程序的编写,由于本算法只使用了演奏的音高和时间信息,目前定下的指标有
考虑动态调整匹配粒度。目前算法采用的HMM机制,匹配的粒度为chord(每个chord中包含300ms内出现的所有pitch),进行匹配时采用Viterbi算法,因此每次匹配时均需要遍历所有的可能空间。单次匹配的时间复杂度为O(N),整体的时间复杂度为O(N^2),N为乐谱长度。 本算法可接受的最大尺度约为10^4,大约为30min~1h可演奏的event数量,理论可为练习长度进行匹配。但大尺度的匹配空间会带来错位问题,即应该对应score1的某位置,弹错音高后可能直接匹配到score2,或弹错后重新开始出现匹配位置乱跳的问题。因此我希望能动态调整匹配的粒度,某些情况下将粒度从chord增大到一个bar,目前只是有一个想法,还没有找到合适的方法。