我正在使用Librosa的函数(librosa.feature.mfcc)从音频文件中提取MFCC,并且我正确地获得了一个具有我所期望的形状的numpy数组:13个MFCC值用于音频文件的整个长度,即1292个窗口(30秒内)。
缺少的是每个窗口的时间信息:例如,我想知道MFCC在时间上是什么样子,5000 is,然后5200 is等等。我需要手动计算时间吗?有办法自动获得每个窗口的确切时间吗?
发布于 2020-12-12 06:20:48
“时间信息”不是直接提供的,因为它取决于抽样率。为了提供这样的信息,librosa
将创建自己的类。这会污染接口,使其更难互操作。在当前的实现中,feature.mfcc
返回numpy.ndarray
,这意味着您可以轻松地在Python中的任何地方集成这段代码。
将小额供资委员会与时间联系起来:
import librosa
import numpy as np
filename = librosa.util.example_audio_file()
y, sr = librosa.load(filename)
hop_length = 512 # number of samples between successive frames
mfcc = librosa.feature.mfcc(y=y, n_mfcc=13, sr=sr, hop_length=hop_length)
audio_length = len(y) / sr # in seconds
step = hop_length / sr # in seconds
intervals_s = np.arange(start=0, stop=audio_length, step=step)
print(f'MFCC shape: {mfcc.shape}')
print(f'intervals_s shape: {intervals_s.shape}')
print(f'First 5 intervals: {intervals_s[:5]} second')
请注意,mfcc
和intervals_s
的数组长度是相同的--这是一个正确的检查,我们在计算中没有出错。
MFCC shape: (13, 2647)
intervals_s shape: (2647,)
First 5 intervals: [0. 0.02321995 0.04643991 0.06965986 0.09287982] second
https://stackoverflow.com/questions/65249690
复制相似问题