In [1]:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.style as ms
ms.use('seaborn-muted')
%matplotlib inline
import librosa
import librosa.display
import IPython.display
In [2]:
file_path_blues = "../data/songData/genres/blues/blues.00000.wav"
y_blues, sr_blues = librosa.load(file_path_blues)
file_path_classical = "../data/songData/genres/classical/classical.00000.wav"
y_classical, sr_classical = librosa.load(file_path_classical)
file_path_disco = "../data/songData/genres/disco/disco.00001.wav"
y_disco, sr_disco = librosa.load(file_path_disco)
file_path_jazz = "../data/songData/genres/jazz/jazz.00010.wav"
y_jazz, sr_jazz = librosa.load(file_path_jazz)
In [3]:
plt.figure(figsize=(12, 12))
plt.subplot(4, 1, 1)
librosa.display.waveplot(y_blues, sr=sr_blues)
plt.title('blues')
plt.subplot(4, 1, 2)
librosa.display.waveplot(y_classical, sr=sr_classical)
plt.title('classical')
plt.subplot(4, 1, 3)
librosa.display.waveplot(y_disco, sr=sr_disco)
plt.title('disco')
plt.subplot(4, 1, 4)
librosa.display.waveplot(y_jazz, sr=sr_jazz)
plt.title('jazz')
plt.tight_layout()
In [4]:
mfcc = librosa.feature.mfcc(y=y_blues, sr=sr_blues,n_mfcc=30)
In [5]:
print(mfcc.shape[1])
print(mfcc.T.shape)
In [6]:
IPython.display.Audio(data=y_blues, rate=sr_blues)
Out[6]:
In [7]:
IPython.display.Audio(data=y_classical, rate=sr_classical)
Out[7]:
In [8]:
IPython.display.Audio(data=y_disco, rate=sr_disco)
Out[8]:
In [9]:
IPython.display.Audio(data=y_jazz, rate=sr_jazz)
Out[9]:
In [10]:
def createMelspectrogram(y, sr):
S = librosa.feature.melspectrogram(y, sr=sr, n_mels=128)
log_S = librosa.logamplitude(S, ref_power=np.max)
return log_S;
In [11]:
S_blues = createMelspectrogram(y_blues, sr_blues)
S_classical = createMelspectrogram(y_classical, sr_classical)
S_disco = createMelspectrogram(y_disco, sr_disco)
S_jazz = createMelspectrogram(y_jazz, sr_jazz)
In [12]:
plt.figure(figsize=(12, 12))
plt.subplot(4, 1, 1)
librosa.display.specshow(S_blues, sr=sr_blues, x_axis='time', y_axis='mel')
plt.title('blues mel power spectrogram')
plt.colorbar(format='%02.0f dB')
plt.subplot(4, 1, 2)
librosa.display.specshow(S_classical, sr=sr_blues, x_axis='time', y_axis='mel')
plt.title('classical mel power spectrogram')
plt.colorbar(format='%02.0f dB')
plt.subplot(4, 1, 3)
librosa.display.specshow(S_disco, sr=sr_blues, x_axis='time', y_axis='mel')
plt.title('disco mel power spectrogram')
plt.colorbar(format='%02.0f dB')
plt.subplot(4, 1, 4)
librosa.display.specshow(S_jazz, sr=sr_blues, x_axis='time', y_axis='mel')
plt.title('jazz mel power spectrogram')
plt.colorbar(format='%02.0f dB')
plt.tight_layout()
In [13]:
C_blues = librosa.cqt(y_blues, sr=sr_blues)
C_classical = librosa.cqt(y_classical, sr=sr_classical)
C_disco = librosa.cqt(y_disco, sr=sr_disco)
C_jazz = librosa.cqt(y_jazz, sr=sr_jazz)
In [14]:
plt.figure(figsize=(12, 12))
plt.subplot(4, 1, 1)
librosa.display.specshow(librosa.amplitude_to_db(C_blues, ref=np.max), sr=sr_blues, x_axis='time', y_axis='cqt_note')
plt.title('blues Constant-Q power spectrum')
plt.colorbar(format='%02.0f dB')
plt.subplot(4, 1, 2)
librosa.display.specshow(librosa.amplitude_to_db(C_classical, ref=np.max), sr=sr_classical, x_axis='time', y_axis='cqt_note')
plt.title('classical Constant-Q power spectrum')
plt.colorbar(format='%02.0f dB')
plt.subplot(4, 1, 3)
librosa.display.specshow(librosa.amplitude_to_db(C_disco, ref=np.max), sr=sr_disco, x_axis='time', y_axis='cqt_note')
plt.title(' disco Constant-Q power spectrum')
plt.colorbar(format='%02.0f dB')
plt.subplot(4, 1, 4)
librosa.display.specshow(librosa.amplitude_to_db(C_jazz, ref=np.max), sr=sr_jazz, x_axis='time', y_axis='cqt_note')
plt.title('jazz Constant-Q power spectrum')
plt.colorbar(format='%02.0f dB')
plt.tight_layout()
In [15]:
chroma_stft = librosa.feature.chroma_stft(y=y_blues, sr=sr_blues, n_chroma=12, n_fft=4096)
chroma_cqt = librosa.feature.chroma_cqt(y=y_blues, sr=sr_blues)
chroma_cens = librosa.feature.chroma_cens(y=y_blues, sr=sr_blues)
In [16]:
plt.figure(figsize=(12, 6))
plt.subplot(3, 1, 1)
librosa.display.specshow(chroma_stft, y_axis='chroma')
plt.title('chroma stft')
plt.colorbar()
plt.subplot(3, 1, 2)
librosa.display.specshow(chroma_cqt, y_axis='chroma', x_axis='time')
plt.title('chroma cqt')
plt.colorbar()
plt.subplot(3, 1, 3)
librosa.display.specshow(chroma_cens, y_axis='chroma', x_axis='time')
plt.title('chroma cens')
plt.colorbar()
plt.tight_layout()
In [17]:
cc_blues = librosa.feature.chroma_cens(y=y_blues, sr=sr_blues)
cc_classical = librosa.feature.chroma_cens(y=y_classical, sr=sr_classical)
cc_disco = librosa.feature.chroma_cens(y=y_disco, sr=sr_disco)
cc_jazz = librosa.feature.chroma_cens(y=y_jazz, sr=sr_jazz)
In [18]:
plt.figure(figsize=(12, 12))
plt.subplot(4, 1, 1)
librosa.display.specshow(cc_blues, y_axis='chroma', x_axis='time')
plt.title('chroma blues')
plt.colorbar()
plt.subplot(4, 1, 2)
librosa.display.specshow(cc_classical, y_axis='chroma', x_axis='time')
plt.title('chroma blues')
plt.colorbar()
plt.subplot(4, 1, 1)
librosa.display.specshow(cc_blues, y_axis='chroma', x_axis='time')
plt.title('chroma blues')
plt.colorbar()
plt.subplot(4, 1, 1)
librosa.display.specshow(cc_blues, y_axis='chroma', x_axis='time')
plt.title('chroma blues')
plt.colorbar()
plt.tight_layout()
In [19]:
y_harmonic, y_pertcussive = librosa.effects.hpss(y_blues)
S_blues_h = createMelspectrogram(y_harmonic, sr_blues)
S_blues_p = createMelspectrogram(y_pertcussive, sr_blues)
In [20]:
plt.figure(figsize=(12, 8))
plt.subplot(3, 1, 1)
librosa.display.specshow(S_blues, sr=sr_blues, x_axis='time', y_axis='mel')
plt.title('blues normal mel power spectrogram')
plt.colorbar(format='%02.0f dB')
plt.subplot(3, 1, 2)
librosa.display.specshow(S_blues_h, sr=sr_blues, x_axis='time', y_axis='mel')
plt.title('blues harmonic mel power spectrogram')
plt.colorbar(format='%02.0f dB')
plt.subplot(3, 1, 3)
librosa.display.specshow(S_blues_p, sr=sr_blues, x_axis='time', y_axis='mel')
plt.title('blues percussive mel power spectrogram')
plt.colorbar(format='%02.0f dB')
Out[20]:
In [21]:
y_harmonic_disco, y_pertcussive_disco = librosa.effects.hpss(y_disco)
S_disco_h = createMelspectrogram(y_harmonic_disco, sr_disco)
S_disco_p = createMelspectrogram(y_pertcussive_disco, sr_disco)
In [22]:
plt.figure(figsize=(12, 8))
plt.subplot(3, 1, 1)
librosa.display.specshow(S_disco, sr=sr_disco, x_axis='time', y_axis='mel')
plt.title('disco normal mel power spectrogram')
plt.colorbar(format='%02.0f dB')
plt.subplot(3, 1, 2)
librosa.display.specshow(S_disco_h, sr=sr_disco, x_axis='time', y_axis='mel')
plt.title('disco harmonic mel power spectrogram')
plt.colorbar(format='%02.0f dB')
plt.subplot(3, 1, 3)
librosa.display.specshow(S_disco_p, sr=sr_disco, x_axis='time', y_axis='mel')
plt.title('disco percussive mel power spectrogram')
plt.colorbar(format='%02.0f dB')
Out[22]:
In [30]:
mfcc_blues = librosa.feature.mfcc(y=y_blues, sr=sr_blues,n_mfcc=5)
mfcc_classical = librosa.feature.mfcc(y=y_classical, sr=sr_classical, n_mfcc=5)
mfcc_disco = librosa.feature.mfcc(y=y_disco, sr=sr_disco, n_mfcc=5)
mfcc_jazz = librosa.feature.mfcc(y=y_jazz, sr=sr_jazz, n_mfcc=5)
In [31]:
plt.figure(figsize=(12, 8))
plt.subplot(4, 1, 1)
librosa.display.specshow(mfcc_blues)
plt.title('mfcc blues')
plt.colorbar()
plt.subplot(4, 1, 2)
librosa.display.specshow(mfcc_classical)
plt.title('mfcc classical')
plt.colorbar()
plt.subplot(4, 1, 3)
librosa.display.specshow(mfcc_disco)
plt.title('mfcc disco')
plt.colorbar()
plt.subplot(4, 1, 4)
librosa.display.specshow(mfcc_jazz)
plt.title('mfcc jazz')
plt.colorbar()
plt.tight_layout()