利用Madmom识别和弦
Madmom.features.chords
该模块包含和弦识别的相关功能
source:https://madmom.readthedocs.io/en/v0.16/modules/features/chords.html
文章目录
1.madmom.features.chords.majmin_targets_to_chord_labels(targets, fps)
- 作用:
- 将一系列大小调和弦目标转为人们可读的和弦标签。假设目标在 fps 参数定义的时间间隔相等(每个目标代表一个“帧 frame”)
- 参数
- targets: iterable (iterable containing chord class ids)
- fps: float (Frames per second. Consecutive class)
- 返回结果
- chord labels: list (List of tuples of the form (start time, end time, chord label))
2. deep chroma vectors using a Conditional Random Field.
class madmom.features.chords.DeepChromaChordRecognitionProcessor**(model=None,** fps=10**,** **kwargs)
class madmom.features.chords.DeepChromaChordRecognitionProcessor(model=None,fps=10,**kwargs)
3. CNN 和弦识别 (运用到的)
参考文献
Filip Korzeniowski and Gerhard Widmer, “A Fully Convolutional Deep Auditory Model for Musical Chord Recognition”, Proceedings of IEEE International Workshop on Machine Learning for Signal Processing (MLSP), 2016.
madmom.features.chords.CNNChordFeatureProcessor(**kwargs)
作用: 提取学习过的特征进行和弦识别
from madmom.features.chords import CNNChordFeatureProcessor
proc = CNNChordFeatureProcessor()
features = proc('../resource/test.wav')
features.shape
# (711, 128)
madmom.features.chords.CRFChordRecognitionProcessor(model=None, fps=10, **kwargs)
作用:从卷积神经网络学习到的特征中 识别大调和小调和弦
例子
# 第一种写法
from madmom.features.chords import CNNChordFeatureProcessor
from madmom.features.chords import CRFChordRecognitionProcessor
featproc = CNNChordFeatureProcessor()
decode = CRFChordRecognitionProcessor()
filename1= '../resource/test.wav'
feats = featproc(filename1)
reout = decode(feats)
print(reout)
# 第二种
from madmom.processors import SequentialProcessor
# .......
chordrec = SequentialProcessor([featproc, decode])
chordrec('../resource/test.wav')
# result
[( 0. , 4.1, 'N') ( 4.1, 6. , 'E:maj') ( 6. , 8. , 'A:maj')
( 8. , 10. , 'D:maj') (10. , 12.6, 'G:maj') (12.6, 14. , 'B:maj')
(14. , 16.2, 'E:maj') (16.2, 20.5, 'N') (20.5, 21.1, 'A:maj')
(21.1, 21.6, 'D:maj') (21.6, 22.8, 'G:maj') (22.8, 26. , 'N')
(26. , 39.9, 'E:min') (39.9, 41.1, 'N') (41.1, 43. , 'E:maj')
(43. , 46.2, 'E:min') (46.2, 50.2, 'G:maj') (50.2, 54. , 'A:maj')
(54. , 58.6, 'B:maj') (58.6, 63.1, 'N') (63.1, 66.4, 'C:maj')
(66.4, 71.1, 'N')]