SAM-Audio - ИИ, который слышит и выделяет любой звук по вашей команде
Наверняка каждый из нас сталкивался с ситуацией, когда нужно вырезать конкретный звук из аудиозаписи. Будь то голос диктора на фоне музыки, звонок телефона в шумном офисе или пение птиц, заглушаемое городским гулом. Раньше это была задача для профессиональных звукорежиссеров с дорогим софтом и часами кропотливой работы. А что, если я скажу, что теперь это может сделать ИИ, и притом довольно просто?

Что это за зверь SAM-Audio?
Представляю вам SAM-Audio – проект от Facebook Research, который переворачивает представление о работе со звуком. Это не просто инструмент для шумоподавления, это фундаментальная модель, способная "сегментировать что угодно в аудио". По сути, это аналог знаменитой Segment Anything Model (SAM) для изображений, но адаптированный для звука. Его главная фишка – возможность изолировать любой звук из сложной аудиосмеси, используя различные "подсказки": текстовое описание, визуальные данные из видео или даже временные метки.
Кому это нужно? Да практически всем, кто работает с аудио: от разработчиков мультимедийных приложений и создателей контента до исследователей в области ИИ и даже специалистов по безопасности. SAM-Audio обещает значительно упростить и ускорить многие рутинные задачи, которые раньше требовали глубоких знаний в области звукорежиссуры или машинного обучения.
Как это работает? Три способа "подсказать" ИИ
SAM-Audio предлагает три мощных способа взаимодействия, которые делают его невероятно гибким и удобным в использовании. Выбирайте тот, который лучше всего подходит для вашей задачи.
1. Текстовые подсказки: Просто скажите, что вам нужно
Это самый интуитивный и, пожалуй, самый впечатляющий способ. Просто опишите на естественном языке, какой звук вы хотите выделить. Например, "мужской голос", "звук двигателя автомобиля" или "игра на пианино". Модель сама проанализирует аудиопоток, найдет и изолирует этот звук. Это как если бы вы попросили ассистента "вырезать все, что похоже на лай собаки" из записи.
from sam_audio import SAMAudio, SAMAudioProcessor
import torchaudio
import torch
# Загружаем модель и процессор. Для работы потребуется доступ к чекпоинтам на Hugging Face.
model = SAMAudio.from_pretrained("facebook/sam-audio-large")
processor = SAMAudioProcessor.from_pretrained("facebook/sam-audio-large")
model = model.eval().cuda() # Перемещаем модель на GPU для ускорения
audio_file = "my_podcast.wav" # Путь к вашему аудиофайлу
description = "man speaking" # Описание звука, который нужно выделить
# Подготавливаем данные для модели
batch = processor(
audios=[audio_file],
descriptions=[description],
).to("cuda")
with torch.inference_mode():
# Выполняем разделение. predict_spans=False и reranking_candidates=1 для базового использования.
result = model.separate(batch, predict_spans=False, reranking_candidates=1)
# Сохраняем изолированный звук и остаток
sample_rate = processor.audio_sampling_rate
torchaudio.save("isolated_voice.wav", result.target.cpu(), sample_rate) # Изолированный звук
torchaudio.save("background_noise.wav", result.residual.cpu(), sample_rate) # Все остальное
Кстати, для лучшего результата авторы рекомендуют использовать простые существительные или глагольные фразы в нижнем регистре, например, "thunder" вместо "Thunder can be heard in the background". Это помогает модели точнее понять ваш запрос.
2. Визуальные подсказки: Покажите, что вы хотите услышать
Это уже что-то из области фантастики! Если у вас есть видео, SAM-Audio может использовать его визуальный ряд. Вы можете выделить объект на видео (например, человека, играющего на гитаре, или движущийся автомобиль), и модель попытается изолировать звук, исходящий именно от этого объекта. Представьте, насколько это мощно для редактирования видео, создания интерактивного контента или даже для анализа событий!
# Пример использования визуальных подсказок (псевдокод, для демонстрации идеи)
# Для реального использования потребуется предварительная обработка видеокадров и создание масок.
# processor(audios=[video_file], descriptions=[""], masked_videos=processor.mask_videos([frames], [mask]))
# Здесь 'frames' - это кадры из видео, а 'mask' - маска, выделяющая интересующий объект.
# Модель будет искать звук, связанный с этим объектом в видео.
3. Временные подсказки (Span Prompting): Укажите точное время
Иногда вы точно знаете, в какой момент времени происходит нужный звук. Например, "гудок машины с 6.3 до 7.0 секунды". Вы просто указываете временной интервал, и модель фокусируется на нем. Это очень удобно, когда нужно уточнить или исправить автоматическое выделение, или когда вы работаете с очень специфическими, короткоживущими звуками.
# Пример использования временных подсказок
# processor(audios=[audio_file], descriptions=["car honking"], anchors=[[["+", 6.3, 7.0]]])
# Здесь мы указываем, что гудок машины находится в заданном интервале, помогая модели.
Улучшаем результат: Span Prediction и Re-Ranking
Интересно, что SAM-Audio не просто выделяет звук, но и умеет предсказывать временные интервалы, где этот звук наиболее вероятно находится (predict_spans=True). Это особенно полезно для нефоновых звуковых событий. А для максимальной точности можно включить reranking_candidates, который генерирует несколько вариантов разделения и выбирает лучший, используя специальные модели-оценщики, такие как CLAP и Judge. Это, конечно, увеличивает время обработки и потребление памяти, но значительно повышает качество конечного результата.
with torch.inference_mode():
# Автоматическое предсказание временных интервалов
outputs = model.separate(batch, predict_spans=True)
# Для еще лучшего качества, с ре-ранжированием кандидатов
with torch.inference_mode():
outputs = model.separate(batch, predict_spans=True, reranking_candidates=8)
Под капотом: немного о технологиях
В основе SAM-Audio лежит модель Perception-Encoder Audio-Visual (PE-AV), которая, как понятно из названия, умеет работать как со звуком, так и с видео, находя между ними соответствия. Это позволяет модели понимать контекст и более точно выделять нужные звуки. PE-AV – это результат масштабного обучения на мультимодальных данных, что делает его таким мощным.
Проект предлагает несколько размеров моделей (sam-audio-small, sam-audio-base, sam-audio-large), а также специализированные версии (-tv), оптимизированные для корректности целевого звука и визуальных подсказок. Это дает разработчикам гибкость в выборе между скоростью и точностью, в зависимости от их задач и доступных ресурсов. Для работы, кстати, потребуется Python 3.11 и совместимый с CUDA GPU, что намекает на серьезные вычислительные возможности, необходимые для таких задач.
Где это пригодится? Сценарии использования
Возможности SAM-Audio открывают двери для множества интересных и полезных применений в самых разных областях:
- Монтаж видео и аудио: Автоматическое удаление нежелательных шумов, выделение диалогов из фоновой музыки, саунд-дизайн. Представьте, как легко можно убрать фоновый шум из интервью или выделить конкретный музыкальный инструмент из оркестровой записи, не прибегая к сложным эквалайзерам.
- Создание контента: Очистка аудио для подкастов, создание интерактивных аудио-историй, где звуки могут быть динамически выделены или заглушены в зависимости от действий пользователя.
- Доступность: Улучшение качества речи для людей с нарушениями слуха, автоматическое создание субтитров с выделением говорящего, что делает контент более доступным.
- Безопасность и мониторинг: Выделение тревожных звуков (сирены, выстрелы, крики) из общего шумового фона в системах видеонаблюдения, что может помочь в раннем обнаружении инцидентов.
- Исследования: Анализ звуковых ландшафтов, изучение поведения животных по звукам, разработка новых алгоритмов обработки аудио и понимания звуковой среды.
- Игры: Динамическое управление звуками в игровом мире, например, выделение звуков шагов конкретного персонажа или звуков окружающей среды, которые должны быть более заметны в определенные моменты.
Стоит ли попробовать? Мой вердикт
SAM-Audio – это, без преувеличения, прорыв в области обработки аудио. Возможность выделять звуки с помощью естественного языка, видео или временных меток открывает совершенно новые горизонты для разработчиков. Если вы работаете с аудио, видео, мультимедиа или просто интересуетесь передовыми технологиями ИИ, этот проект определенно заслуживает вашего внимания.
Конечно, для начала работы потребуется запросить доступ к чекпоинтам на Hugging Face, но это небольшая плата за такой мощный инструмент. Я бы однозначно рекомендовал его к изучению и экспериментам. Кто знает, возможно, именно SAM-Audio станет основой для вашего следующего крутого проекта, который изменит то, как мы взаимодействуем со звуком! Не упустите шанс прикоснуться к будущему аудиообработки уже сегодня.