
nnAudio — это опенсорс инструмент на Pytorch для обработки аудиозаписей с помощью однослойной сверточной сети. С помощью nnAudio можно генерировать спектрограммы на ходу во время обучения нейросети. Библиотека построена на основе модуля torch.nn в Pytorch. Схожими по подходу инструментами являются Kapre и torch-stft. Они также используют однослойную сверточную сеть, чтобы преобразовать звуковую волну в спектрограмму. Другими библиотеками для обработки аудио на GPU являются torchaudio и tf.signal, которые не используют подход с нейросетями. Это значит, что ряд Фурье в этих инструментах не обучаемый.

Несмотря на недавние успехи нейросетей, которые принимают на вход сырую аудиозапись, state-of-the-art подходы для задач автоматической транскрипции музыки (AMT) и автоматического распознавания речи требует спектрограмму на вход. Спектрограмма — это визуальное представление аудиоволны в формате изображения. Конвертация звуковой волны в спектрограмму типично производится до обучения нейросети как один из шагов предобработки. У такого подхода есть недостатки. Во-первых, высокие требования к памяти, чтобы хранить частотные представления аудиоволн. Кроме того, если понадобится использовать другой датасет для обучения модели, этап предобработки необходимо проходить заново.
nnAudio интегрирует процесс конвертации аудиозаписи в спектрограмму в структуру модели. Библиотека использует однослойную сверточную сеть для трансформации аудиоволны. Внедрение предобработки в модель позволяет генерировать спектрограммы на хожу без необходимости хранить спектрограммы на диске.
Такой подход также позволяет использовать метод обратного распространения ошибки на слое трансформации. Это необходимо для оптимизации трансформации с помощью градиентного спуска.
nnAudio сократил конвертацию из звуковой волны в спектрограмму данных из датасета MAPS с 10.64 секунд до 0.001 секунд.
