python - 从频谱图时间/频率序列数组中获取 MFCC
问题描述
我有几个光谱时间/频率 [500,1024] 文件。
我需要计算这些文件的 MFCC。有很多用于在原始音频文件上计算 MFCC 的库,但我正在寻找一种在 python 中直接从 np.array 计算的方法。
解决方案
这可以通过 librosa 完成,因为它允许使用参数传递频谱图而不是音频波形S
。
我假设你有一个 STFT 幅度谱图(丢弃相位的线性谱图)。然后需要将其转换为经过梅尔滤波的频谱图,进行对数缩放,然后进行 DCT-2 和截断以获得 MFCC 系数。骨架代码如下:
import librosa
import numpy
# TODO: you need to provide these
sr = my_samplerate
my_stft
mels = librosa.feature.melspectrogram(S=my_stft, sr=sr, n_mels=64)
log_mels = librosa.core.amplitude_to_db(mels, ref=numpy.max)
mfcc = librosa.feature.mfcc(S=log_mels, sr=sr, n_mfcc=20)
有关更多详细信息,请参阅librosa API 参考。
推荐阅读
- css - React Native 角样式 FlatList 组件
- postgresql - 当我恢复我的数据时,我使用 pg_restore 但它给了我错误我尝试了所有解决方案
- priority-web-sdk - webSdk 过程的参数顺序
- playframework - 如何将 Source[String, Future[IOResult]] 转换为 Source[ByteString, Future[IOResult]]
- python - Django React Python Post 请求图像分类
- azure - IaC Azure 自动化
- spacy - 如何使用 Spacy Matcher 松散匹配单词之间的异常
- c# - Blazor 中的程序元素引用
- git - 默认使用 git remote --verbose
- python - 将 Pandas 数据框写入雪花但日期列出现问题