65 lines
2.1 KiB
Python
65 lines
2.1 KiB
Python
import librosa
|
|
from matplotlib import pyplot as plt
|
|
import numpy as np
|
|
from models.utils import count_parameters
|
|
from models.ae import SubSpecCAE, AE, GlobalCAE
|
|
from cfg import ALL_DATASET_PATHS
|
|
import librosa.display
|
|
import librosa.feature
|
|
import seaborn as sns
|
|
|
|
purple = (126/255, 87/255, 194/255)
|
|
params_subspecae = count_parameters(SubSpecCAE())
|
|
params_ae = count_parameters(AE())
|
|
params_globalcae = count_parameters(GlobalCAE())
|
|
print(f'#Parameters SubSpecCAE: {params_subspecae}')
|
|
print(f'#Parameters AE: {params_ae}')
|
|
print(f'#SubSpecAe/#AE: {(params_subspecae/params_ae):.2f}')
|
|
print(f'#GlobalCAE: {params_globalcae}')
|
|
print(f'#GlobalCAE/#SubSpecCAE: {params_globalcae/params_subspecae}')
|
|
|
|
|
|
fig = plt.figure(figsize=(10, 5))
|
|
slider_normal = '../data/mimii/-6_dB_slider/id_04/normal/00000042.wav'
|
|
audio, sr = librosa.load(slider_normal)
|
|
waveplot = librosa.display.waveplot(audio, sr=sr)
|
|
plt.tight_layout()
|
|
plt.savefig('wavplot.png')
|
|
|
|
ids = range(0)
|
|
specs = []
|
|
i = 0
|
|
audios = list((ALL_DATASET_PATHS[1] / 'id_00' / 'normal').glob('*.wav'))
|
|
print(str(audios[80]))
|
|
audio, sr = librosa.load(str(audios[80]), sr=None)
|
|
mel_spec = librosa.feature.melspectrogram(audio, sr=sr, n_fft=1024, hop_length=256, n_mels=80, center=False, power=2.0)
|
|
mel_spec_db = librosa.power_to_db(mel_spec, ref=np.max)
|
|
librosa.display.specshow(mel_spec_db, hop_length=256, x_axis='s', y_axis='mel', cmap='viridis', sr=sr)
|
|
plt.savefig('notadjusted.png')
|
|
plt.clf()
|
|
|
|
centroids = []
|
|
for p in audios:
|
|
audio, sr = librosa.load(str(p), sr=None)
|
|
spectral_centroids = librosa.feature.spectral_centroid(audio, sr=sr)[0]
|
|
centroids += spectral_centroids.tolist()
|
|
|
|
sns.distplot(centroids, hist=True, kde=True,
|
|
color=purple,
|
|
hist_kws={'edgecolor':'black'},
|
|
kde_kws={'linewidth': 2})
|
|
plt.xlabel('Occurence counts')
|
|
plt.ylabel('Density')
|
|
plt.title('Spectral centroid distribution')
|
|
plt.tight_layout()
|
|
plt.savefig('hist.png')
|
|
|
|
def get_bands(centroids, n_mels=80):
|
|
std = np.std(centroids)
|
|
mu = np.mean(centroids)
|
|
return int((mu-3*std)/n_mels), int((mu+3*std)/n_mels)
|
|
|
|
print(get_bands(centroids))
|
|
|
|
|