Untitled
unknown
plain_text
a year ago
3.5 kB
5
Indexable
#para cada genero vamos a representar la envolvente la root-mean-square energy, zero-crossing rate,la transformada de fourier, el espectograma, el espectograma de mel y el cromagrama blues_song_path="./content/drive/MyDrive/AVD/Trabajos_1_2/Datasets/Music_Genres_Dataset/blues/Born To Play Guitar (Official Audio).mp3" classical_song_path="./content/drive/MyDrive/AVD/Trabajos_1_2/Datasets/Music_Genres_Dataset/classical/Mozart - Lacrimosa.mp3" country_song_path="./content/drive/MyDrive/AVD/Trabajos_1_2/Datasets/Music_Genres_Dataset/country/Marry Me.mp3" disco_song_path="./content/drive/MyDrive/AVD/Trabajos_1_2/Datasets/Music_Genres_Dataset/disco/On The Floor.mp3" hiphop_song_path="./content/drive/MyDrive/AVD/Trabajos_1_2/Datasets/Music_Genres_Dataset/hiphop/Snoop Dogg - Lodi Dodi.mp3" jazz_song_path="./content/drive/MyDrive/AVD/Trabajos_1_2/Datasets/Music_Genres_Dataset/jazz/Kenny Burrell - Chitlins Con Carne.mp3" metal_song_path="./content/drive/MyDrive/AVD/Trabajos_1_2/Datasets/Music_Genres_Dataset/metal/Nightmare.mp3" pop_song_path="./content/drive/MyDrive/AVD/Trabajos_1_2/Datasets/Music_Genres_Dataset/pop/Dance Monkey.mp3" reggae_song_path="./content/drive/MyDrive/AVD/Trabajos_1_2/Datasets/Music_Genres_Dataset/reggae/Me Gustas Tú.mp3" rock_song_path="./content/drive/MyDrive/AVD/Trabajos_1_2/Datasets/Music_Genres_Dataset/rock/Seven Nation Army.mp3" #hacer una lista con todos los paths paths=[blues_song_path,classical_song_path,country_song_path,disco_song_path,hiphop_song_path,jazz_song_path,metal_song_path,pop_song_path,reggae_song_path,rock_song_path] #recorrer la lista y hacer un grafico de 3x2 para cada genero con las caracteristicas de cada cancion for song in paths: #hacer print del genero musical genero=song.split("/")[-2] y, sr = librosa.load(song) n_fft=2048 frame_length = n_fft hop_length=int(n_fft/4) energy = np.array([sum(abs(y[i:i+frame_length]**2))for i in range(0, len(y), hop_length)]) energy = energy[np.newaxis, :] rmse = librosa.feature.rms(y=y, hop_length=hop_length, center=True) zcrs = librosa.feature.zero_crossing_rate(y=y, hop_length=hop_length) rms = librosa.feature.rms(y=y)[0] D = librosa.stft(y) S = np.abs(librosa.stft(y)) S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128, fmax=8000) chromagram = librosa.feature.chroma_stft(y=y, sr=sr) fig, axs = plt.subplots(2, 3,figsize=(30,10)) #en el subtitulo poner caracteristicas del genero: y el genero de la cancion que se ha guardado en la variable genero fig.suptitle(f'Características de la canción de {genero}') axs[0, 0].plot(energy[0]) axs[0, 0].set_title('Energia') axs[0, 1].plot(rmse[0]) axs[0, 1].set_title('Root-mean-square') axs[0, 2].plot(zcrs[0]) axs[0, 2].set_title('Zero-crossing rate') librosa.display.specshow(librosa.amplitude_to_db(np.abs(D), ref=np.max), sr=sr, x_axis='time', y_axis='log',ax=axs[1, 0]) axs[1, 0].set_title('Transformada de Fourier') librosa.display.specshow(librosa.amplitude_to_db(S, ref=np.max), y_axis='mel', sr=sr, fmax=8000, x_axis='time',ax=axs[1, 1]) axs[1, 1].set_title('Espectograma de mel') librosa.display.specshow(chromagram, y_axis='chroma', x_axis='time',ax=axs[1, 2]) axs[1, 2].set_title('Cromagrama') plt.show() #imprimir la media de Energía, root-mean-square y zero-crossing rate print(f"Media de Energía: {np.mean(energy)}") print(f"Media de Root-mean-square: {np.mean(rmse)}") print(f"Media de Zero-crossing rate: {np.mean(zcrs)}") print("\n")
Editor is loading...
Leave a Comment