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

标签 python audio librosa mfcc

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

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

:

最佳答案

“时间信息”不是直接可用的,因为它取决于采样率。为了提供此类信息,librosa 将创建自己的类。这反而会污染界面并使其互操作性降低。在当前的实现中,feature.mfcc 返回给您 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

关于python - 从使用 librosa.feature.mfcc 生成的 MFCC 获取计时信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65249690/

相关文章:

python - 如何将嵌套字典写入json

python - 在python上导入Librosa时出错

javascript - 在移动浏览器上关闭屏幕时无法暂停音频

python - pip 的依赖解析器需要很长时间才能解决冲突

python - librosa.load返回什么信息?

python - Tensorflow 1 和 2 语法差异

python - 如何在 sqlalchemy 中编写 group_concat 函数?

python - 如何在keras中保存模型过滤器

android gdx 声音性能问题

javascript - jPlayer中是否有音频淡入的方法