从使用 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')
请注意,mfcc
和 intervals_s
的数组长度相同 - 完整性检查,我们在计算中没有出错。
MFCC shape: (13, 2647)
intervals_s shape: (2647,)
First 5 intervals: [0. 0.02321995 0.04643991 0.06965986 0.09287982] second
我正在使用 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')
请注意,mfcc
和 intervals_s
的数组长度相同 - 完整性检查,我们在计算中没有出错。
MFCC shape: (13, 2647)
intervals_s shape: (2647,)
First 5 intervals: [0. 0.02321995 0.04643991 0.06965986 0.09287982] second