Как мы создали Phoenix — лучшую нейронную сеть для разделения аудиодорожек

Как мы создали Phoenix — лучшую нейронную сеть для разделения аудиодорожек

LALAL.AI — первый сервис, позволяющий разделять аудио и видео на 10 дорожек: вокал и минус, а также ударные, бас-гитару, акустическую и электрогитару, фортепиано, синтезатор и группы духовых и струнно-смычковых инструментов.

Phoenix — уже третья нейронная сеть в основе LALAL.AI: мы постоянно обновляем и улучшаем алгоритм, чтобы удовлетворять запросы пользователей по качеству звука и скорости процессов.

В этой статье и поговорим о том, как мы создали нейросеть, которой пока нет равных в разделении музыкальных композиций, а особенно — вокальной партии.

Немного предыстории: Rocknet → Cassiopeia → Phoenix

Первой нейронной сетью в основе LALAL.AI был Rocknet, выпущенный в 2021 году. И хотя на тот момент алгоритм был самым продвинутым, результаты разделения всё же не соответствовали нашему представлению о качестве получаемого звучания.

Следующим решением стала Cassiopeia с совершенно отличной от Rocknet архитектурой, которая оставляла значительно меньше артефактов, а выделяемые дорожки звучали чище.

Мы создали Cassiopeia, поскольку все существующие на тот момент решения на основе искусственного интеллекта (даже самое продвинутое — Rocknet) обладали одним и тем же ключевым недостатком: они концентрировались только на обработке амплитуды и игнорировали фазовые аспекты обработки сигнала. Чем это плохо?

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

Почему большинство ИИ-решений не учитывает фазу звукового сигнала?

Фазу сложно учитывать из-за её специфического поведения в зависимости от инструмента. Мы, как и многие другие исследователи, пробовали решить задачу учёта фазы, повторив тот же способ, что используется при процессинге амплитуды, — не сработало.

Решение: Cassiopeia

Тем не менее, нам удалось создать такую архитектуру, которая работает в поле комплексных чисел (все решения до этого работали в поле вещественных чисел) и обрабатывает одновременно амплитудную и фазовую части входного микса и дорожек на выходе. Нейросеть обладает совершенно новой структурой и имеет лишь отдалённое отношение к Rocknet, первой нейросети в основе LALAL.AI. Мы назвали новую сеть Cassiopeia.

Cassiopeia вывела качество разделения аудиодорожек на новый уровень, обогнав Rocknet на целый 1db SDR при выделении вокала, а стемы, порождаемые новой нейросетью, имели более полное, плотное и приятное на слух звучание благодаря корректной обработке фазы.

Однако высокое качество обошлось нам дорого: обучение Cassiopeia, гораздо более сложной сети в сравнении с Rocknet, только для выделения вокала потребовало почти терабайта данных и количества машинного времени, сопоставимого с годом работы среднестатистического игрового компьютера.

Phoenix — следующий этап развития

У нас есть представление о том, каким качеством могут и должны обладать решения для разделения аудиокомпозиций, поэтому мы понимали, что несмотря на сильно возросшее качество разделения, Cassiopeia не соответствовала нашему видению идеального сепаратора.

Во время работы над этой архитектурой у нас созрела масса идей о том, как улучшить её алгоритм. Множество наработок в областях ИИ-обработки изображений и естественного языка также можно было бы применить и для обработки аудио, в том числе и для разделения аудиодорожек.

Мы провели массу исследований и нашли наиболее перспективные подходы и идеи, которые легли в основу нейросети следующего поколения — Phoenix.

Разделим эти идеи на три группы:

  1. Способ работы с входным сигналом;
  2. Архитектурные улучшения;
  3. Методы оценки качества разделения.

Рассмотрим каждую чуть подробней.

Группа 1: Способ работы с входным сигналом

При обработке композиции нейросеть делит дорожку на сегменты, каждый из которых она «просматривает» за раз. Основным в первой группе можно назвать увеличение массива данных, на которые нейросеть «смотрит» за раз, чтобы понять композицию инструментов и выделить нужные: например, голос или ударные.

Для Cassiopeia размер массива составлял 1 секунду, для Phoenix — 8 секунд. За счёт того, что Phoenix «видит» больше данных, он лучше понимает, из каких инструментов состоит композиция и каковы характеристики искомого источника.

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

Так, увеличение размера входных данных с одной секунды до восьми для Cassiopeia сделало бы её необучаемой за разумное время. И даже будучи обученной, нейросеть работала бы настолько медленно, что пользователям приходилось бы ждать своих извлечённых дорожек десятки минут.  

Только архитектурные усовершенствования Phoenix позволили увеличить объём просматриваемых данных и сократить время работы нейросети почти в два раза!

Для пользователей LALAL.AI это означает, что композиция обрабатывается в два раза быстрее. Кроме того, мы усовершенствовали наш серверный парк, существенно сократив время разделения.

Размер входных данных

Группа 2: Архитектурные улучшения

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

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

Группа 3: Методы оценки качества разделения

Пожалуй, это самая важная группа.

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

Исследователям критерии качества нужны для понимания того, насколько получившееся решение соответствует их ожиданиям качества.

Восприятие аудио очень субъективно. Сложно найти формальные математические метрики, которые, будучи рассчитанными для аудиоматериала, чётко и непротиворечиво описали бы определённые его аспекты.

Применительно же к разделению, сложно построить оценки, отражающие субъективное качество получаемых стемов. Точнее, до определённого уровня качества построить оценки просто; они широко известны. Есть метрики, которые позволяют отделить плохое качество от ужасного. А вот оценок, которые позволили бы отделить хорошее качество от великолепного, — нет.

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

Группа найденных метрик и была положена в основу процесса обучения и оценки качества новой нейросети Phoenix.

Phoenix в цифрах

Phoenix в цифрах выглядит следующим образом:

  • Более 2 терабайт данных использовалось для обучения сети, выделяющей лишь вокальную партию.
  • В 2 раза больше машинного времени необходимо для обучения Phoenix, чем для Cassiopeia (около двух лет работы среднестатистического игрового компьютера).
  • В 2 раза выше скорость работы, чем у Cassiopeia.
  • На 0.6dB выше среднее качество выделения вокала, чем у Cassiopeia (для сравнения, квантовый скачок качества при переходе от Rocknet к Cassiopeia составлял 1dB).

На нашем наборе данных из 500 композиций разных жанров, который мы используем для оценки качества разделения, Phoenix показывает медианный signal to distortion ratio (SDR, метрика, которая не в полной мере, но всё же  хорошо отражает качество разделения и является легко объяснимой) около 9.5dB, в то время как Cassiopeia — 8.9dB.

Если построить условную гистограмму качества разделения по тестовым композициям, то Phoenix в сравнении с Cassiopeia будет выглядеть следующим образом:

Метки по горизонтали показывают диапазоны качества разделения в терминах SDR: чем меньше значение, тем хуже качество разделения. Так, значения меньше 0 характеризуют плохое качество разделения, значения больше 15 – великолепное, значения 5-10 – условно среднее, 10-15 – условно хорошее.

Из гистограммы видно, что Phoenix разделил почти на четверть больше композиций с хорошим качеством (189 против 151) и, соответственно, почти на столько же меньше — со средним и плохим качеством.

Примеры разделения Phoenix в сравнении с Cassiopeia

Если говорить о субъективном восприятии результатов работы Phoenix, то можно выделить две общих тенденции:

  • Гораздо более аккуратная работа с бэк-вокалом, особенно с тем, что звучит в унисон с основным.
  • Гораздо меньшее количество артефактов в вокальном канале, которые можно было бы охарактеризовать как наличие «песка».

Несколько типовых примеров работы Cassiopeia и Phoenix приведено ниже.

⛔️Дисклеймер: фрагменты приведены в ознакомительных целях.

Работа с бэк-вокалом

В приведённом фрагменте слышно, что в стеме Phoenix чётко выделен бэк-вокал, в то время как в результатах работы Cassiopeia бэк-вокал теряется и пропадает.

Во фрагментах ниже слышно, как в результатах работы Cassiopeia присутствуют артефакты в виде фонового шума, который хочется назвать «песком», в то время как Phoenix таких дефектов не порождает. Разницу слышно даже на аудиоаппаратуре бытового класса, но хорошие наушники или мониторы подойдут для этой задачи гораздо лучше:

Работа с основной вокальной партией

Phoenix гораздо аккуратнее обходится не только с бэк-вокалом, но и с основной вокальной партией:

Кроме того, Phoenix, как правило, допускает гораздо меньше невокальных просачиваний в вокальный стем. Это можно услышать на примерах ниже:

Работа с инструментальной частью

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

Phoenix сейчас

На текущий момент в LALAL.AI выпущено решение для выделения вокала класса Phoenix, а также инструментальной партии, ударных, акустической и электрогитары, бас-гитары, клавишных (фортепиано и синтезатора), групп духовых и струнно-смычковых инструментов. Та же технология используется и в основе нового функционала LALAL.AI Voice Cleaner для удаления фонового шума из записей и улучшения голоса.

Потестировать LALAL.AI можно на официальном сайте.

💡У нас есть и решение для бизнеса, которое можно интегрировать в проект. Тут подробнее рассказываем об условиях и том, как это работает.

Если вам хочется работать с нами над проектом LALAL.AI, следите за вакансиями: мы часто публикуем их на сайте и на странице hh.ru.

Клара

Клара

Автор