logo

Виртуальный барабанщик: K-NN метод против ML-модели

Создали и протестировали два варианта реализации алгоритма виртуального барабанщика.
8782390.jpg
2 (16).png
ИндустрияВнутренний проект
Тип бизнесаIT
РегионРоссия
ИндустрияВнутренний проект
Тип бизнесаIT
РегионРоссия

Клиент

Талантливые программисты талантливы во всем. В нашем офисе есть сцена с музыкальным оборудованием, где мы частенько организовываем выступления и джем-сейшены. В 2022 году наша коллекция инструментов пополнилась барабанной установкой.

Дальше возник вопрос: что делать, если установка есть, а барабанщика нет? «Создать виртуального помощника», – решили мы и помчались в наш Data Science-отдел.

Вызовы

В отделе нам предложили два подхода для реализации: метод ближайших образцов (K-NN) и обучение нейросети. Но что если не выбирать между двумя вариантами, а сделать оба? Сравнить результаты, выбрать лучший, постепенно дорабатывать…

Возможности были, разработчики с энтузиазмом поддержали идею такого батла.
1 (15).png

Команда #1: Метод K-NN

Потребуется собирать датасет вручную. На его основе K-NN предскажает значение зависимой переменной (в нашем случае – барабанов) на основе взаимосвязей с независимыми переменными (синтезатор).

drummer-using-drum-sticks-hitting-snare-drum-with-splashing-water-black-background-studio-lighting-close-up (1) (1).jpg

Команда #2: Метод машинного обучения

Вариант с AI-барабанщиком займет дольше времени. Датасеты не нужно готовить вручную, как в первом варианте, но первичный отбор музыкальных композиций все-таки понадобится.

Затем мы отдадим ИИ подготовленные музыкальные последовательности. Он преобразует их в высокоуровневое представление, а затем из этих представлений создаст реалистичную музыку.

Два разных подхода к одной задаче:

Метод k-ближайших образцов

Как обучали:
Наши разработчики загрузили партии с барабанами из открытых библиотек. Во всех содержались бас-бочка, томы, снейр и хэт. Сами сыграли эти же мелодии на синтезаторе и добавили записи в базу к барабанам. Соотнесли аудиопотоки друг с другом и разметили из как эталонные. Теперь это классифицированные данные, их останется лишь сохранить в библиотеке.

Как работает:
Алгоритм ищет подходящую барабанную партию из предписанной библиотеки. При смене темпа и ритма меняет партию, подстраиваясь под музыканта.

ML-метод

Как обучали:
Для варианта с музыкальной нейросетью использовали midi-клавиатуру. Получили данные о силе и длительности нажатия для каждой ноты на синтезаторе. Добавили базу midi-нот в разных темпах и жанрах: рок, поп, фанк. Загрузили и разбили соответствующие друг другу записи мелодий на синтезаторе и барабанах – датасет готов. Разделение на определенные интервалы мы использовали, чтобы сделать алгоритм более адаптивным.

Как работает:
Модель принимает ритм и в реальном времени выдает midi-последовательность. Дополняет мелодию синтезатора партией на ударных, сохраняя при этом общие ключевые свойства: мелодию, ритм.

Результат

Команда #1: Метод K-NN

  • Выводит точную и правильную барабанную мелодию, но использует только предзаполненные библиотеки.
  • Быстрый в расчетах, но не сможет создать уникальное звучание.
  • Не подойдет для больших наборов данных, так как нужно собирать датасет вручную.

Команда #2: Метод машинного обучения

  • Нейронная сеть оказалась менее точной, но выдаваемое значение – более гибким.
  • Может создавать уникальные ударные партии.
  • Подходит для любого темпа игры на синтезаторе, даже если его нет в библиотеке.
  • Отсутствует необходимость создавать датасет вручную, но чувствительна к качеству материалов, а само обучение сложно контролировать.
  • На расширение датасета собственными силами уйдет много времени.

Мы так и не смогли выбрать победителя: оба варианта оказались жизнеспособными и имели как преимущества, так и недостатки. Поэтому обернули каждую версию в дизайн и решили заняться развитием обеих.

K-NN

мелодия точная, но не уникальная.

grade
ML-метод

мелодия уникальная, но развитие алгоритма требует много сил.

grade

Напишите нам

/ 5000

Что происходит дальше:

  • Мы получаем запрос, обрабатываем его в течение 24 часов и связываемся по указанным вами e‑mail или телефону для уточнения деталей.

  • Подключаем аналитиков и разработчиков. Совместно они составляют проектное предложение с указанием объемов работ, сроков, стоимости и размера команды.

  • Договариваемся с вами о следующей встрече, чтобы согласовать предложение.

  • Когда все детали улажены, мы подписываем договор и сразу же приступаем к работе.