Как преобразовать файл wav в изображение RGB с помощью мелспектограммы?

Я работаю над классификацией звука с файлами wav продолжительностью от 1 до 4 секунд. я хочу преобразовать wav в изображение 224x224x3, которое я могу заплатить в Resnet для классификации Преобразование должно быть с использованием мелспектограммы Спасибо за помощь


person Muhammad Umer Javaid    schedule 26.05.2019    source источник


Ответы (1)


Вы можете использовать librosa для создания спектрограммы mel следующим образом:

import librosa
import librosa.display
import numpy as np
import matplotlib.pyplot as plt

y, sr = librosa.load(librosa.util.example_audio_file()) # your file
S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128, fmax=8000)
librosa.display.specshow(librosa.power_to_db(S, ref=np.max), fmax=8000)
plt.savefig('mel.png')

Имейте в виду, что это ложные цвета, RGB здесь не имеет смысла, как и многоканальность. Используйте архитектуру, которая работает с одним каналом.

person Lukasz Tracewski    schedule 26.05.2019
comment
Это включает в себя маркеры / метки осей и т. Д. Из графика в файл, что не очень хорошо в качестве входных данных для модели ML. Вместо этого следует сохранить только необработанные данные спектрограммы. Пример этого в stackoverflow.com/questions/56719138/ - person Jon Nordby; 25.07.2019
comment
Я попробовал это и получил AttributeError: модуль «librosa» не имеет атрибута «display». Теперь вам нужно явно импортировать librosa.display. - person Octaviotastico; 12.12.2020
comment
Вам также нужно импортировать numpy как np, потому что вы используете его в строке 6. - person Octaviotastico; 12.12.2020
comment
Спасибо @Octaviotastico! Отредактировано. - person Lukasz Tracewski; 12.12.2020