✨ Meta выпустила 🔗SAM Audio, модель для open-domain audio separation. В отличие от классических сепараторов с фиксированными стемами (vocals/drums/bass/other), здесь можно изолировать произвольный звук
🎧 Архитектура
В основе flow matching модель на базе Diffusion Transformer (DiT). На вход подаем замиксованное аудио и промпты для изоляции. Промпты могут быть трёх типов:
1️⃣ Текстовый: описание звука текстом («dog barking», «woman speaking»). Текст обрабатывает T5-Base энкодер, фичи инжектятся через cross-attention
2️⃣ Визуальный: видео + маска объекта. Хотим изолировать голос конкретного спикера в кадре? Обводим его и модель понимает, чей звук вытаскивать. Обрабатывается с Perception Encoder vision (PE), как утверждают, сота среди визуальных энкодеров. Frame-level фичи конкатенируются с аудио по времени.
3️⃣ Временной (span): границы желаемого звука. Я сперва думала, что span нужен для вырезания кусочка аудио в качестве reference. Но нет, это последовательность токенов <sil> и «+» для каждого фрейма, а энкодер это просто learnable embedding table.
Во время тренировки промпты рандомно дропают, чтобы модель была устойчивой к разным сетапам.
😎 DAC-VAE вместо обычного DAC
Интересная часть для тех, кто работает с TTS. Про DAC-VAE можно подробнее почитать в с статье 🔗«Movie Gen: A Cast of Media Foundation Models», а код 🔗здесь.
Стандартный DAC (Descript Audio Codec) использует RVQ — дискретное пространство с кодеками. DAC-VAE это VAE-версия DAC (с компрессией 25Hz), из которой убрали RVQ квантайзер. Избегая потерь при квантизация, получают более качественную реконструкцию, чем Encodec.
Кажется, что сейчас realtime становится дефолтным сетапом, и адаптация DAC-VAE 25Hz для стриминга может быть непростой задачей. Тем не менее, интересно поработать с DAC VAE для генерации.
🐹 Про данные
За такими моделями всегда стоит огромная работа с данными. И вот что мне показалось полезным:
Текстовые промпты. Авторы используют PLM-Audio для генерации описаний. Затем описание и метадата идут в Llama 3, которая выбирает NP/VP фразы, описывающие звуковые события. Затем CLAP filtering (убирают сэмплы с text-audio similarity < 0.28).
Pseudo-labeling. Реальных данных мало, а синтетические миксы далеки от реалистичных. Авторы пошли по пути бутстраппинга, используя промежуточный чекпоинт SAM Audio для разделения аудио, которые потом отбираются через многоступенчатую фильтрацию, включая CLAP scores, VAD, Audiobox-aesthetics и другие шаги.
💪 Чем SAM Audio полезна на практике?
Модель большая и довольно медленная (16-step ODE + beam-size-8 reranking), и скорее подойдет для предобработки данных:
⏺Изоляция foreground speech от фоновой речи, шума, музыки
⏺Разделение male/female спикеров в диалоге (даже с пересечениями работает хорошо)
⏺Изоляция паралингвистики: вздохи, смех (хотя я потестировала на паре аудио из AMI и впечатление так себе)
С изоляцией конкретного голоса среди нескольких мужских (или женских) не справляется, даже с временным промптом и описанием «female speaker who starts speaking first». Среди речевых тренировочных данных преобладали 2-speaker диалоги, что и объясняет, почему multi-speaker сценарии работают хуже.
💡 Полезные модели из пайплайна
В статье упоминается несколько моделей, которые тоже интересны сами по себе:
AED PANNs: модель для audio event detection. В SAM Audio её используют для auxiliary alignment loss: выравнивают репрезентации MLP-головы DiT с эмбеддингами AED, чтобы помочь модели понять, что и где искать.
PEA-Frame: language-queried temporal localization. По текстовому описанию акустического события возвращает временные метки. В SAM Audio используют для генерации span промптов и (насколько я понимаю) для инференса тоже.
SAM Audio Judge (SAJ): оценщик качества сепарации. Используется и для evaluation, и как reranker при инференсе. Авторы заявляют значительно более высокую корреляцию с human ratings, чем CLAP.
🥹 Что думаете на счет DAC-VAE?
Post #163
994
- ❤ 13
- 👍 8
- 🔥 7