Как нейросеть отделяет голос от музыки: Hybrid Transformer Demucs

· 2 мин · BadRabbit

Сегодня я рассказывал про VoiceLM, который отделяет голос от фона. Логично разобрать, как такие нейросети устроены. Возьму одну из самых известных: Hybrid Transformer Demucs (HT Demucs) от Meta AI.

Задача

Разделение источников (source separation): на входе смешанная запись, на выходе отдельные дорожки, например вокал, барабаны, бас и всё остальное. Качество меряют SDR (signal-to-distortion ratio) в децибелах: чем выше, тем меньше «чужого» звука просочилось в дорожку.

Два взгляда на звук

Звук можно представить двумя способами:

  • Волна во времени: последовательность отсчётов. Хорошо видны резкие атаки, например удар барабана.
  • Спектрограмма: какие частоты звучат в каждый момент. Хорошо видны тоны и гармоники голоса.

Предыдущая версия, Hybrid Demucs, уже обрабатывала обе формы параллельно: две U-Net-ветки, временная и спектральная, у которых на выходе суммируются результаты.

Что добавили

В HT Demucs самые глубокие слои обеих веток заменили кросс-доменным трансформером:

  • внутри каждой ветки работает self-attention: ветка смотрит на свою же последовательность;
  • между ветками работает cross-attention: временная ветка «спрашивает» спектральную и наоборот.

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

Данные решают

Интересная деталь: на одном стандартном датасете MUSDB новая модель была не лучше старой. Трансформерам нужно много данных. Когда добавили ещё 800 песен, HT Demucs обогнала предшественницу на 0,45 дБ. А с дообучением под каждый источник достигла 9,20 дБ SDR, что на момент публикации было лучшим результатом.

Мой комментарий

В VoiceLM я использую модели семейства UVR5 / MDX-Net, но идея та же: работать сразу во времени и в частотах. Из статьи я вынес две практические вещи:

  1. Трансформерам нужно много данных. Если датасет маленький, свёрточная модель может оказаться лучше, и это нормально.
  2. Память и контекст — главный компромисс. Разреженное внимание здесь появилось по той же причине, по которой я режу аудио на куски в VoiceLM: иначе не влезет в видеокарту.