Spaces:
Sleeping
Sleeping
| import os | |
| import librosa | |
| import librosa.display | |
| import matplotlib.pyplot as plt | |
| import numpy as np | |
| def save_mel_spectrogram(file_path, save_dir, sr=22050, n_mels=128, hop_length=512, n_fft=2048): | |
| y, sr = librosa.load(file_path, sr=sr, mono=True) | |
| S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=n_mels, n_fft=n_fft, hop_length=hop_length) | |
| S_db = librosa.power_to_db(S, ref=np.max) | |
| os.makedirs(save_dir, exist_ok=True) | |
| save_path = os.path.join(save_dir, os.path.basename(file_path).replace(".wav", ".png")) | |
| plt.figure(figsize=(4, 4)) | |
| librosa.display.specshow(S_db, sr=sr, hop_length=hop_length, x_axis='time', y_axis='mel', cmap='magma') | |
| plt.axis('off') | |
| plt.savefig(save_path, bbox_inches='tight', pad_inches=0) | |
| plt.close() | |
| return save_path | |
| def process_dataset(wav_root, output_root, sr=22050, n_mels=128): | |
| for root, dirs, files in os.walk(wav_root): | |
| for file in files: | |
| if file.endswith(".wav"): | |
| file_path = os.path.join(root, file) | |
| rel_path = os.path.relpath(root, wav_root) | |
| save_dir = os.path.join(output_root, rel_path) | |
| save_mel_spectrogram(file_path, save_dir, sr=sr, n_mels=n_mels) | |
| wav_root = "Washing machine" | |
| output_root = "MelSpectrograms" | |
| process_dataset(wav_root, output_root) | |