Python实现MFCC算法

4

我有一个包含视频流的数据库。我想从图像中计算LBP特征,并从MFCC音频中计算特征,对于视频中的每个帧都有一些注释。注释与视频帧和视频时间内联。因此,我想将注释中的时间映射到MFCC结果上。我知道采样率为44100。

from python_speech_features import mfcc
from python_speech_features import logfbank
import scipy.io.wavfile as wav

audio_file = "sample.wav"
(rate,sig) = wav.read(audio_file)
mfcc_feat = mfcc(sig,rate)
print len(sig)        # 2130912
print len(mfcc_feat)  # 4831

首先,为什么mfcc的长度为4831,如何将其映射到我在秒数上进行的注释中?视频的总时长为48秒。视频的注释在19-29秒窗口之外均为0,在该窗口内为1。如何从mfcc结果中定位窗口(19-29)内的样本?

只是一条评论:Librosa有各种特征提取方法。它可能会对你的工作有所帮助。https://github.com/librosa/librosa/blob/master/examples/LibROSA%20demo.ipynb - dkato
1个回答

3
运行
 mfcc_feat.shape

你应该获得(4831,13)。13是你的MFCC长度(默认numcep为13)。4831是窗口数。默认winstep为10毫秒,与你的声音文件持续时间相匹配。要获取对应于19-29秒的窗口,只需切片即可。
mfcc_feat[1900:2900,:]

请注意,MFCC不能被听到。它只代表了0.025秒音频的片段(winlen参数的默认值)。

如果您想要获得音频本身,则是

sig[time_beg_in_sec*rate:time_end_in_sec*rate]

但是也有一些重叠吧?这就让我感到困惑了。 - konstantin
我想提取信号的特征并将它们用于进一步的分析。你说的听MFCC是什么意思(它的频域系数 - 我怎么能听到它们)? - konstantin
在同一窗口中计算抖动和音调以丰富我的MFCC特征很容易吗?这样做是否直截了当? - konstantin
你的意思是 mfcc_feat.shape 而不是 sig.shape,对吗? - konstantin
我无法回答这个问题。这取决于python_speech_features的实现。它可能是滤波器组的能量,但您需要进行检查。关于代码,我没有使用任何Python实现,抱歉。您可以搜索Yin音高检测器。 - igrinis
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接