Spaces:
Sleeping
Sleeping
| from imports import * | |
| def extract_features(file_path, duration=30, sr=22050): | |
| y, sr_loaded = librosa.load(file_path, duration=30, sr=22050) | |
| def stats(feature): | |
| return list(map(float, np.mean(feature, axis=1))) + list(map(float, np.std(feature, axis=1))) | |
| mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=13) | |
| rms = librosa.feature.rms(y=y) | |
| spectral_centroid = librosa.feature.spectral_centroid(y=y, sr=sr) | |
| bandwidth = librosa.feature.spectral_bandwidth(y=y, sr=sr) | |
| contrast = librosa.feature.spectral_contrast(y=y, sr=sr) | |
| flatness = librosa.feature.spectral_flatness(y=y) | |
| rolloff = librosa.feature.spectral_rolloff(y=y, sr=sr) | |
| tonnetz = librosa.feature.tonnetz(y=y, sr=sr) | |
| zero_crossing = librosa.feature.zero_crossing_rate(y=y) | |
| tempo, _ = librosa.beat.beat_track(y=y, sr=sr) | |
| features_raw = [] | |
| for f_val in [mfcc, rms, spectral_centroid, bandwidth, contrast, flatness, rolloff, tonnetz, zero_crossing]: | |
| features_raw.extend(stats(f_val)) | |
| features_raw.append(float(tempo)) | |
| return [features_raw] | |
| mood_map = {0: 'dark', 1: 'deep', 2: 'dream', 3: 'emotional', 4: 'epic', 5: 'happy', 6: 'motivational', 7: 'relaxing', 8: 'romantic', 9: 'sad'} | |
| genre_map = { | |
| 0: "blues", | |
| 1: "classical", | |
| 2: "country", | |
| 3: "disco", | |
| 4: "hiphop", | |
| 5: "jazz", | |
| 6: "metal", | |
| 7: "pop", | |
| 8: "reggae", | |
| 9: "rock" | |
| } | |