【问题标题】:What is returning after executing command to extract mfcc?执行命令提取 mfcc 后返回什么?
【发布时间】:2020-04-20 07:59:29
【问题描述】:
我一直在学习声音分析,并且在其中遇到了术语 mfcc。
所以当我执行
librosa.feature.mfcc(y=X, sr=sample_rate, n_mfcc=40)
我得到形状为 40 x 216 的 numpy 数组。
所以我知道我已经在 216 帧中提取了 40 个特征。
但是这里的 frames 到底是什么意思,它类似于采样率以及我们在加载音频文件时定义它的位置。
【问题讨论】:
标签:
python
librosa
mfcc
soundfile
【解决方案1】:
从mfcc docs 中没有立即明显看出的是它在内部调用librosa.feature.melspectrogram。而melspectrogram 有参数win_length/n_fft 和hop_length,它们定义了一个frame。您也可以将这些参数传递给mfcc。
那么什么是框架?基本上,它是处理一堆原始样本的结果:假设窗口长度为 2048 个样本(这是默认值)和 512 的跳跃长度(也是默认值)mfcc 返回的每个帧对应于 2048 个原始样本样本,是 512 个样本,比其前身“在音频中更进一步”。换句话说,帧之间有很大的重叠。
例如,要为您的音频创建 mfcc,将帧定义为 1024 个样本和 512 跳长度,您可以调用:
librosa.feature.mfcc(y=X, sr=sample_rate, n_mfcc=40, hop_length=512, n_fft=1024)
同样,如果您没有显式传递这些参数,则使用来自 melspectrogram 的默认值。