Как мы учим компьютер слышать каждый инструмент в песне
Загрузите готовую песню в инструмент Beatloo «Разделение на дорожки» — и получите её по частям: вокал, барабаны, бас, гитару, пианино и всё остальное. В этой статье рассказываем, как мы обучаем ИИ-модель, которая это делает, — без кода и без формул.
Если коротко: модель хороша ровно настолько, насколько хороши примеры, на которых она учится. Поэтому вместо того чтобы собирать музыку из интернета, мы создаём собственные обучающие песни, в которых точно знаем, что играет каждый инструмент.
На той же идее построен наш MIDI-экстрактор. А в конце — честный список того, что модели пока даётся с трудом.
Что делает разделение на дорожки
Готовая песня немного похожа на смузи: после блендера клубнику обратно уже не достать. Разделение на дорожки пытается сделать именно это — прослушать микс и восстановить каждый инструмент на отдельной дорожке, которую называют стемом.
Beatloo раскладывает песню на дорожки, до шести штук:
- Вокал — основной и бэк-вокал вместе;
- Барабаны — бочки, малые барабаны, хэты, тарелки и перкуссия;
- Бас — бас-гитара, 808 и синтезаторный бас;
- Гитара — акустическая, чистая и с перегрузом;
- Пианино — акустические и электрические пианино;
- Остальное — синтезаторы, пэды, струнные, духовые и эффекты.
Сначала модель слушает и возвращает только те дорожки, которые действительно нашла. Песня без гитары не вернётся с пустой гитарной дорожкой.
Продюсеры используют дорожки для ремиксов и переработки сэмплов, чтобы разучить партию в соло, сделать акапеллу или минус и получить более чистый MIDI: отдельный инструмент конвертируется в «Аудио в MIDI» гораздо лучше, чем полный микс.
На входе микс, на выходе — дорожка на каждый инструмент
Модель слышит всю песню и восстанавливает каждый найденный инструмент
Как учится модель
ИИ-модель изначально не знает, как звучит малый барабан или бас-гитара. Она учится на примерах — примерно как тренируют слух: услышать микс, угадать, как звучали бы одни барабаны, сравнить догадку с правильным ответом и учесть ошибку. И так миллионы раз.
Каждый обучающий пример состоит из двух частей: полный микс — это вопрос, а каждый инструмент, записанный отдельно, — ответ. Чем лучше и разнообразнее ответы, тем лучше становится модель.
Картинка звука
Модель слушает не так, как мы. Она смотрит на картинку звука — спектрограмму: время идёт слева направо, высота — снизу вверх, а яркость показывает, насколько громко звучит каждая высота в каждый момент.
Для каждого инструмента модель учится рисовать поверх этой картинки трафарет: вот эти яркие пятна — бас, а эти короткие вспышки — хэты. Вырежьте картинку по трафарету, превратите обратно в звук — и получится дорожка.
Модель учится рисовать трафарет для каждого инструмента
Слева — микс как картинка звука. Справа — то, что модель оставляет для баса и для барабанов
Откуда берутся обучающие песни
Чтобы учиться, модели нужны песни, в которых каждый инструмент доступен отдельно. Настоящие многодорожечные записи редки и дороги, а большинство из них не лицензированы для обучения. В самом известном исследовательском наборе, MUSDB18, всего 150 песен — так мало, что большая модель начинает их запоминать, а не учиться слушать.
Поэтому мы делаем собственные песни. Раз каждую партию создаём мы сами, у нас всегда есть идеальный ответ:
Реалистичные инструменты
Партии играет та же библиотека проверенных тембров, которую мы собрали для MIDI-экстрактора: тысячи пресетов синтезаторов, каждый проверен на то, что он играет ровно те ноты, которые ему дали. В статье про MIDI-экстрактор рассказано, как мы отобрали 2 856 из 10 052.
Сведение как у звукорежиссёра
Чистое демо и громкий плотный мастер звучат очень по-разному, а модель должна справляться с обоими. Поэтому каждая песня сводится со случайными настройками: одни партии громче, другие тише, левее или правее, с разным количеством реверберации, компрессии и перегруза. Что бы ни случилось с миксом, чистая версия каждой партии остаётся ответом.
Вокал
Синтезаторы не поют, поэтому вокал — единственная дорожка, которую мы не можем сгенерировать. Для вокала мы используем [лицензированные записи живых певцов — укажите источник], сведённые с нашими сгенерированными аккомпанементами тем же способом.
В итоге у каждой обучающей песни есть идеальный ответ, а каждый звук в ней — наш или лицензированный. Никакой музыки, собранной из интернета.
Проверка каждой дорожки
Неверный ответ учит неверному. Если в ответе «бас» тайком есть немного бочки, модель решит, что бочка — это часть баса. Поэтому прежде чем песня попадёт в обучение, каждая партия проверяется автоматически:
- каждую ноту партии действительно слышно;
- ни одна партия не молчит и не искажена клиппингом;
- эхо и хвосты реверберации остаются со своим инструментом;
- одна и та же песня не встречается дважды, даже транспонированной;
- громкость остаётся в реалистичных пределах.
Кроме того, мы сами смотрим и слушаем. В каждой новой порции песен мы выбираем случайные, сравниваем картинку микса с картинками дорожек и проверяем, что ничего не пропало и не оказалось не на своём месте. Песни, не прошедшие проверку, мы выбрасываем, а не исправляем вручную.
Как мы понимаем, что это работает
Мы проверяем модель на песнях, которых она никогда не слышала: новые аранжировки, новые тембры и настоящие записи, которых не было в обучении.
Главная оценка измеряется в децибелах и называется SDR. Проще говоря, она показывает, насколько нужный инструмент громче остатков всего остального. Чем больше, тем лучше: каждые плюс 3 дБ означают, что остатки звучат примерно вдвое тише.
Цифры не расскажут, как звучит дорожка, поэтому мы также проводим слепые тесты с продюсерами: они слышат две версии одной дорожки и выбирают более чистую, не зная, какая модель сделала какую.
Качество разделения по дорожкам
SDR в децибелах на песнях, которых модель не слышала; чем больше, тем лучше
Полные результаты, включая сравнение с открытыми моделями, мы опубликуем к запуску разделения на дорожки.
Где пока трудно
Некоторые песни сложны для любой такой модели, включая нашу:
- Много реверберации. Звук помещения размазывается по всем инструментам, поэтому немного его попадает в каждую дорожку.
- Инструменты в одном диапазоне. Ритм-гитара и аккорды пианино или пэды и струнные могут обмениваться нотами между дорожками.
- Сильный перегруз. Перегруженная гитара добавляет обертоны, похожие на другие инструменты.
- Бэк-вокал и подголоски. Они остаются на дорожке вокала вместе с основным голосом.
- Файлы низкого качества. Сильно сжатые MP3 добавляют артефакты, которые модель не может убрать.
Именно таких случаев мы теперь генерируем больше для обучения.
Что дальше
Разделение на дорожки скоро появится в инструментах Beatloo. Загружаете песню — получаете найденные дорожки и можете сразу отправить любую в «Аудио в MIDI».
А пока попробуйте Аудио в MIDI: загрузите любой MP3 и получите его ноты в MIDI с темпом и тональностью.