В дополнение к тому, что было сказано, я рекомендую прочитать Сравнение методов предварительной обработки аудиосигналов для глубоких нейронных сетей при пометке музыки , авторы Keunwoo Choi, György Fazekas, Kyunghyun Cho и Mark Sandler.
Для своих данных они достигли почти одинаковой точности классификации между простыми STFT и мельспектрограммами. Таким образом, мельспектрограммы кажутся очевидным победителем сокращения размеров, если вы не возражаете против предварительной обработки. Авторы также обнаружили, как Джоннер упоминает, что логарифмическое масштабирование (по существу, преобразование амплитуды в шкалу дБ) повышает точность. Вы можете легко сделать это с помощью Librosa (используя ваш код) следующим образом:
y,sr= librosa.core.load(r'C:\Users\Tej\Desktop\NoiseWork\NoiseOnly\song.wav')
S = librosa.feature.melspectrogram(y=y, sr=sr)
S_db = librosa.core.power_to_db(S)
Что касается нормализации после db-масштабирования, то кажется, что попадание или пропуск в зависимости от ваших данных. Из вышеприведенного документа авторы почти не обнаружили различий в использовании различных методов нормализации своих данных.
И последнее, что следует упомянуть, - это несколько новый метод, называемый нормализацией энергии на канал. Я рекомендую прочитать Нормализация энергии на канал: почему и как Винсента Лостанлена, Джастина Саламона, Марка Картрайта, Брайана Макфи,
Эндрю Фарнсворт, Стив Келлинг и Хуан Пабло Белло. К сожалению, есть некоторые параметры, которые нуждаются в корректировке в зависимости от данных, но во многих случаях кажется, что это так же хорошо или лучше, чем logmelspectrograms. Вы можете реализовать это в Librosa следующим образом:
y,sr= librosa.core.load(r'C:\Users\Tej\Desktop\NoiseWork\NoiseOnly\song.wav')
S = librosa.feature.melspectrogram(y=y, sr=sr)
S_pcen = librosa.pcen(S)
Хотя, как я уже говорил, в pcen есть параметры, которые нужно настроить! Вот документация Librosa для PCEN , чтобы вы могли начать, если вам интересно.