从使用 librosa.feature.mfcc 生成的 MFCC 获取计时信息

Get timing information from MFCC generated with librosa.feature.mfcc

我正在使用 Librosa 的函数 (librosa.feature.mfcc) 从音频文件中提取 MFCC,并且我正确地取回了一个 numpy 数组,其形状符合我的预期:音频文件整个长度的 13 个 MFCC 值是 1292 windows(30 秒内)。

缺少的是每个 window 的计时信息:例如,我想知道 MFCC 在 5000 毫秒、5200 毫秒等时的样子。 我必须手动计算时间吗?有没有办法自动获取每个window的准确时间?

“时间信息”不是直接可用的,因为它取决于采样率。为了提供此类信息,librosa 会创建自己的 类。这反而会污染界面并使其互操作性降低。在当前的实现中,feature.mfcc returns 你 numpy.ndarray,这意味着你可以轻松地将此代码集成到 Python.

中的任何位置

将 MFCC 与时序相关联:

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')

请注意,mfccintervals_s 的数组长度相同 - 完整性检查,我们在计算中没有出错。

MFCC shape: (13, 2647) 
intervals_s shape: (2647,)
First 5 intervals: [0.         0.02321995 0.04643991 0.06965986 0.09287982] second