Создание аудио-классификационного конвейера для идентификации композиторов классической музыки
Создание аудио-классификатора для идентификации композиторов классической музыки
Пошаговое руководство по созданию модели классификации на основе звукового машинного обучения для нескольких ведущих классических композиторов и размещению ее на Hugging Face
В то время как определение авторства классических музыкальных произведений может показаться легкой задачей для тренера-человека, это может быть сложно для алгоритма машинного обучения.
Чтобы преодолеть эту трудность, здесь я показываю подробно, как можно создать свою собственную аудио-классификационную систему и сделать ее доступной для широкой публики с использованием нескольких свободно доступных инструментов, таких как:
- Набор данных MusicNet – подобранная коллекция из 330 свободно лицензированных (CC0: Public Domain) метками классических музыкальных записей;
- Блокноты Kaggle – популярный сервис общего назначения, предоставляющий, например, бесплатный уровень с GPU NVIDIA TESLA P100, доступный зарегистрированным пользователям Kaggle для обучения моделей машинного обучения;
- Модель wav2vec2-base-960h от Meta с примерно 95 миллионами обучаемых параметров, предварительно обученная и дообученная на 960 часах Librispeech на аудио речи с частотой дискретизации 16 кГц, используется для обучения выборки аудиоданных из MusicNet:
- наконец, портал HuggingFace для обучения, публикации и обслуживания моделей машинного обучения.
Весь код от начала до конца для выбора данных, обучения модели и отправки ее в репозиторий HuggingFace общедоступен здесь. Ниже я описываю наиболее важные шаги.
Выбор данных и сэмплирование для многоклассовой аудио-классификации
После загрузки исходных данных они преобразуются к частоте 16 кГц, преобразуются в массив NumPy с использованием библиотеки torchaudio и далее усекаются до 100-секундных сэмплов для экономии памяти во время обучения:
- Умное предприятие Готовность к использованию генеративного искусственного интеллекта в бизнесе
- Лиор Хаким, сооснователь и технический директор компании Hour One – Интервью-серия
- Автонастройка для развертывания глубоких нейронных сетей
def get_transform_audio(file): audio,rate = torchaudio.load(str(file)) transform = torchaudio.transforms.Resample(rate,RATE_HZ) audio = transform(audio).squeeze(0).numpy() return audio[:MAX_LENGTH] # усечение до первой части аудио для экономии ОЗУdd['audio'] = dd['file'].progress_apply(get_transform_audio)