Librosa色度特征提取详解:Chroma_stft、chroma_cqt与chroma_cens

需积分: 0 3 下载量 168 浏览量 更新于2024-08-04 收藏 656KB DOCX 举报
"这篇周报主要介绍了Librosa库在音乐信号处理中用于特征提取的三个函数,特别是针对色度(Chroma)特征的计算。Librosa是一个强大的Python库,用于音乐和音频分析,提供了多种音乐特征的计算方法,包括短时傅里叶变换(STFT)基色度(Chroma_STFT)、连续小波变换(CQT)基色度(Chroma_CQT)以及中心能量归一化的色度(Chroma_CENS)。" 在音乐信息检索和音频分析中,色度特征是一种常用的表示音乐和音频信号的方法,它能够捕捉到音乐的基本调性结构。色度特征通常将声音信号转换为12个音级的表示,无视八度差异,从而可以反映出音乐的和声和调性特性。 1. `librosa.feature.chroma_stft` 这个函数基于短时傅里叶变换(Short-Time Fourier Transform, STFT)来计算色度特征。它首先对音频信号进行STFT,然后计算每个帧中的色度能量。参数`y`是输入的音频信号,`sr`是采样率,`S`是可选的功率谱图,`n_fft`是傅里叶变换的窗口大小,`hop_length`是帧移长度。`norm`参数决定了如何对色度图谱进行归一化,`n_chroma`定义了色度箱的数量(默认12,对应12个半音阶)。 2. `librosa.feature.chroma_cqt` 使用连续小波变换(Continuous Wavelet Transform, CQT)作为基础。CQT更加敏感于低频成分,更适合分析音乐的和声结构。同样地,它返回每个帧的色度能量。参数`C`是预计算的CQT谱,`fmin`是最小频率,`n_chroma`定义了色度箱的数量。其他参数与`chroma_stft`类似,但提供了更多的控制选项,如`bins_per_octave`和`cqt_mode`。 3. `librosa.feature.chroma_cens` 是中心能量归一化的色度(Centroid Energy Normalized Chroma),这种方法可能更关注频率中心,有助于降低噪声影响。参数与`chroma_cqt`基本相同,但其具体实现可能有所不同,例如在计算中可能采用了不同的归一化策略。 为了比较这三种色度特征的差异,可以加载一段音频样本,使用这三个函数计算色度特征,并用matplotlib等工具绘制出它们的谱图,观察它们在视觉上的区别。这有助于理解它们在不同音乐场景下的表现和适用性。 总结来说,Librosa的`chroma_stft`、`chroma_cqt`和`chroma_cens`提供了一种多角度的音乐特征提取方法,分别基于STFT、CQT和可能的特定归一化策略。根据不同的应用场景和需求,可以选择适合的色度特征提取方法。例如,对于和声分析,`chroma_cqt`可能更为合适;而对于噪声环境或需要强调频率中心的场合,`chroma_cens`可能更有优势。在实际应用中,通常需要通过实验和验证来确定最佳的特征提取方案。