Как нейросеть отделяет голос от музыки: Hybrid Transformer Demucs
Сегодня я рассказывал про 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, но идея та же: работать сразу во времени и в частотах. Из статьи я вынес две практические вещи:
- Трансформерам нужно много данных. Если датасет маленький, свёрточная модель может оказаться лучше, и это нормально.
- Память и контекст — главный компромисс. Разреженное внимание здесь появилось по той же причине, по которой я режу аудио на куски в VoiceLM: иначе не влезет в видеокарту.