Reputation: 151
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
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:
More information in torch docs.
Upvotes: 1
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
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()
Upvotes: 4
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
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