MFCC python plot

#!/usr/bin/env python
import os
from python_speech_features import mfcc
from python_speech_features import delta
from python_speech_features import logfbank
import scipy.io.wavfile as wav
import pickle
import numpy as np
import matplotlib.pyplot as plt
rootdir = '...'#wavw文件的路径
list = os.listdir(rootdir)
dic = {}
for i in range(0, len(list)):
    path = os.path.join(rootdir, list[i])
    if os.path.isfile(path):
      print(list[i])
      (rate,sig) = wav.read(path)
     # plt.plot(sig[:3000])
      #plt.show()
      mfcc_feat = mfcc(sig,rate)#, nfft=551
      mfcc_feat -= (np.mean(mfcc_feat, axis=0) + 1e-8)
      mfcc_feat2 = mfcc_feat[0:25,:]#加截断,不显示非零值
 #     plt.plot(mfcc_feat)
      from matplotlib import cm

      fig, ax = plt.subplots()

      mfcc_data = np.swapaxes(mfcc_feat2, 0, 1)
      #cax = ax.imshow(mfcc_data, interpolation='nearest', cmap=cm.coolwarm, origin='lower', aspect='auto')
      plt.imshow(mfcc_data, cmap=plt.cm.jet, extent=[0, mfcc_data.shape[1], 0, mfcc_data.shape[0]], aspect='auto')
      ax.set_title('MFCC')

      plt.show()

      d_mfcc_feat = delta(mfcc_feat, 2)
      fbank_feat = logfbank(sig,rate,nfft=551)
      print(len(fbank_feat))
      dic[list[i]] = fbank_feat
output = open(os.path.join(rootdir, 'data.pkl'), 'wb')
pickle.dump(dic, output)

重点想记录的是MFCC的画图,热力图的重点一句是plt.imshow(mfcc_data, cmap=plt.cm.jet, extent=[0, mfcc_data.shape[1], 0, mfcc_data.shape[0]], aspect='auto'),如果音频文件本身有空白,可能出现如下情况
这里写图片描述
加了截断的代码mfcc_feat2 = mfcc_feat[0:25,:],不显示非零值,让整体更好看
这里写图片描述

参考资料:
stackoverflow
Speech Processing for Machine Learning
python 实现MFCC

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

binqiang2wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值