E. Alicaya
E. Alicaya

Reputation: 151

How to plot MFCC in Python?

Here is my code so far on extracting MFCC feature from an audio file (.WAV):

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

(rate,sig) = wav.read("AudioFile.wav")
mfcc_feat = mfcc(sig,rate)

print(mfcc_feat)

How can I plot the MFCC features to know what it looks like?

Upvotes: 13

Views: 23463

Answers (5)

Gabriel Ziegler
Gabriel Ziegler

Reputation: 391

A more modern approach using torchaudio to read the audio and apply the MFCC transform.

import torch
import torchaudio
import torchaudio.transforms as T
import matplotlib.pylab as plt

audio, fs = torchaudio.load("./audio.ogg")
mfcc_transform = T.MFCC(sample_rate=fs)

mfcc = mfcc_transform(audio)

plt.imshow(mfcc[0], interpolation="nearest", origin="lower", aspect="auto")
plt.colorbar()

Should produce something similar to:

enter image description here

More information in torch docs.

Upvotes: 1

santhosh bandaru
santhosh bandaru

Reputation: 71

Initially I read the wav file using librosa and fed with inbuilt function

import librosa
audio_path='../.../../../combo.wav' #location
(xf, sr) = librosa.load(audio_path)    
mfccs = librosa.feature.mfcc(y=xf, sr=sr, n_mfcc=4)
librosa.display.specshow(mfccs, x_axis='time')
plt.colorbar()
plt.tight_layout()
plt.title('mfcc')
plt.show

I used librosa

Upvotes: 2

Eduardo Freitas
Eduardo Freitas

Reputation: 1057

The previous answer did no defined mfcc_data.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm

(rate,sig) = wav.read("file.wav")
mfcc_feat = mfcc(sig,rate)

ig, ax = plt.subplots()
mfcc_data= np.swapaxes(mfcc_feat, 0 ,1)
cax = ax.imshow(mfcc_data, interpolation='nearest', cmap=cm.coolwarm, origin='lower', aspect='auto')
ax.set_title('MFCC')
#Showing mfcc_data
plt.show()
#Showing mfcc_feat
plt.plot(mfcc_feat)
plt.show()

MFCC_data MFCC_feat

Upvotes: 4

itai ariel
itai ariel

Reputation: 569

This will plot the MFCC as colors, which is a more popular way

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
fig, ax = plt.subplots()
mfcc_data= np.swapaxes(mfcc_data, 0 ,1)
cax = ax.imshow(mfcc_data, interpolation='nearest', cmap=cm.coolwarm, origin='lower')
ax.set_title('MFCC')

plt.show()

Upvotes: 9

kanha.vishva
kanha.vishva

Reputation: 73

from python_speech_features import mfcc
import scipy.io.wavfile as wav
import matplotlib.pyplot as plt

(rate,sig) = wav.read("AudioFile.wav")
mfcc_feat = mfcc(sig,rate)

print(mfcc_feat)
plt.plot(mfcc_feat)
plt.show()

Upvotes: 4

Related Questions