我有一个色度特征文件here。这些数字如何解释为属于不同的音乐键?我需要使用在特定时间代码中找到的密钥来产生类似于this的解决方案,以便在两个音轨之间进行混合。如何将这些数字解释为正在播放的整体琴键,以及如何跳至特定的时间码以获取给定的琴键?
我已尝试按照here所述获得色度,但是输出只是数字而不是音符。我需要在特定时间解释音乐,使其属于正在播放的单个键。
最佳答案
librosa.feature.chroma_stft
返回色谱图(或色谱图)。它的形状为(12,n_frames)。八度C,C#,D..., B
中的12个半音中的每一个为12。色度频谱图中的每个bin代表该半音的平均能量(跨所有八度音阶)。
n_frames是频谱图中的时间范围数。每帧的时长为hop_length/sr
秒,其中sr
为已加载音频文件的采样率(可能会重新采样)。因此,要在此频谱图中以秒为单位的给定时间,请计算frame_no = int(time / (hop_length/sr))
。
音乐键
要从色度频谱图转变为音乐音调(A小调或F大调中的音乐)可以通过监督的机器学习完成。将在色度谱图的短时间窗口(例如1-10秒)上训练分类器,以便对补品(12个类别,C-B)和模式(次要,主要)进行分类。
例如,请参阅Robert Mahieu(2016)的论文Detecting Musical Key with Supervised Learning。
关于python - librosa产生的色谱图文件如何解释为一组音乐键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57082826/