Представьте: у вас запись концерта, где вокал сливается с гитарой и ударными. Сделать чистую фонограмму для караоке — без AI невозможно. Старые методы (ICA, NMF) дают артефакты, а ручная обработка занимает часы. Мы решаем эту задачу с помощью современных нейросетей. Наш опыт — 5+ лет в аудиообработке, более 30 проектов по внедрению source separation в медиа и музыкальный продакшн. Гарантируем качество разделения и соответствие вашим срокам.
Source separation — выделение отдельных источников звука из смешанного сигнала. Это применяется в музыкальном продакшне (стемы), обработке речи (удаление фоновой музыки), видеопостпродакшне и ремастеринге архивных записей.
Какие проблемы решаем?
Низкое качество разделения. Старые методы (ICA, NMF) дают сильные артефакты. Современные модели на основе глубокого обучения — Demucs, Spleeter, MDX-Net — достигают SDR > 9 dB, что означает чистое разделение без заметных посторонних шумов.
Скорость обработки. Для пакетной обработки сотен треков критична производительность. Spleeter работает в 100 раз быстрее реального времени на GPU, Demucs — в 1.5 раза. Мы оптимизируем пайплайны под ваше оборудование.
Интеграция в существующие процессы. API на FastAPI, пакетная обработка через очереди, поддержка популярных форматов — всё это реализуем под ключ.
Как выбрать модель для разделения аудио?
Выбор зависит от трёх факторов: целевые стемы, требуемое качество и скорость. В таблице — сравнение основных моделей:
| Модель | Тип разделения | Качество (SDR) | Скорость |
|---|---|---|---|
| Demucs v4 (htdemucs) | Вокал/барабаны/бас/прочее | 9.0 dB | 1.5× realtime на GPU |
| Spleeter (Deezer) | 2/4/5 стемов | 6.8 dB | 100× realtime |
| Open-Unmix (UMX) | 4 стема | 7.2 dB | 10× realtime |
| MDX-Net | Конкурсный (MDX Challenge) | 9.5 dB | 2× realtime |
| BS-RoFormer | SOTA | 10.1 dB | 0.8× realtime |
SDR (Signal-to-Distortion Ratio) — основная метрика: выше = чище разделение.
Почему Demucs v4 — лучший выбор для продакшена?
Demucs v4 (htdemucs) даёт лучший баланс качества и скорости среди open-source решений. Он обучен на больших датасетах и стабильно работает на любых жанрах. Ниже — сравнение моделей по latency (время обработки 1 минуты аудио на GPU A100):
| Модель | Latency (сек) | Потребление VRAM |
|---|---|---|
| Demucs v4 | 0.8 | 2.1 ГБ |
| MDX-Net | 1.2 | 3.8 ГБ |
| Spleeter | 0.1 | 1.0 ГБ |
Для production мы рекомендуем Demucs v4 или его облегчённую версию htdemucs_ft.
Что даёт интеграция Demucs в конвейер обработки?
Мы используем Demucs v4 в продакшне. Ниже — пример класса для инференса:
import torch
from demucs.pretrained import get_model
from demucs.apply import apply_model
from demucs.audio import AudioFile, save_audio
import torchaudio
class AudioSourceSeparator:
def __init__(self, model_name: str = "htdemucs"):
self.model = get_model(model_name)
self.model.eval()
if torch.cuda.is_available():
self.model.cuda()
def separate(
self,
audio_path: str,
output_dir: str,
stems: list[str] = None # None = все стемы
) -> dict[str, str]:
"""Разделяем трек на стемы, возвращаем пути к файлам"""
wav = AudioFile(audio_path).read(
streams=0,
samplerate=self.model.samplerate,
channels=self.model.audio_channels
)
ref = wav.mean(0)
wav = (wav - ref.mean()) / ref.std()
sources = apply_model(
self.model,
wav[None],
device="cuda" if torch.cuda.is_available() else "cpu",
progress=True,
num_workers=2
)[0]
sources = sources * ref.std() + ref.mean()
result = {}
available_stems = self.model.sources # ['drums', 'bass', 'other', 'vocals']
target_stems = stems or available_stems
for stem, source in zip(available_stems, sources):
if stem in target_stems:
output_path = f"{output_dir}/{stem}.wav"
save_audio(source, output_path, samplerate=self.model.samplerate)
result[stem] = output_path
return result
Разделение речи от фоновой музыки
Для контент-обработки мы используем модель htdemucs_ft (fine-tuned на вокал). Пример:
from demucs.pretrained import get_model
class SpeechFromMusicExtractor:
"""Извлечение речи из видео"""
def __init__(self):
self.model = get_model("htdemucs_ft")
async def process_video_audio(
self,
video_path: str,
output_speech: str,
output_music: str
) -> dict:
import subprocess
audio_path = video_path.replace(".mp4", "_audio.wav")
subprocess.run([
"ffmpeg", "-i", video_path,
"-ac", "2", "-ar", "44100",
"-vn", audio_path
], check=True)
stems = self.separate(audio_path, output_dir="/tmp/stems")
speech_stems = ["vocals"]
music_stems = ["drums", "bass", "other"]
return {
"speech": stems.get("vocals"),
"music_components": {k: stems[k] for k in music_stems if k in stems}
}
Процесс работы
- Анализ задачи — определяем целевые стемы, требования к качеству и скорости.
- Выбор модели — подбираем оптимальную архитектуру (Demucs, MDX-Net, Spleeter).
- Интеграция — встраиваем модель в ваш пайплайн (API, batch, реальное время).
- Тестирование — оцениваем метрики (SDR, WER) на ваших данных.
- Деплой — разворачиваем на GPU/CPU, настраиваем мониторинг.
Что входит в работу
- Выбор и адаптация модели.
- Реализация API или пакетного обработчика.
- Документация по эксплуатации.
- Обучение команды (1-2 часа).
- Техническая поддержка 1 месяц.
Типовые применения
Музыкальный продакшн: remixing — изолируем барабаны или бас для переработки; karaoke — удаляем вокал, оставляем инструментал; mastering стемов — обрабатываем каждый слой независимо.
Контент и медиа: удаление фоновой музыки перед STT — WER снижается с 18% до 4%; ремастер архивных записей — разделение + денойз каждого стема; локализация видео — изолируем речь, заменяем дубляжом.
Постпродакшн: ADR (Automated Dialogue Replacement) — чистый вокал для замены реплик; музыкальное оформление — извлечение музыки для переиспользования.
Ограничения и нюансы
Demucs работает хуже при:
- Очень громкой перкуссии поверх речи (SDR падает на 2–3 dB).
- Монозаписях низкого качества (< 22 kHz).
- Сложных полифонических наложениях (4+ источника одновременно).
Для максимального качества вокала — mdx_extra или htdemucs_ft. Для скорости в batch-режиме — Spleeter (в 10–15 раз быстрее Demucs на CPU).
Сроки: интеграция Demucs в пайплайн обработки медиафайлов — 1–2 недели. Полноценный сервис с очередью и веб-интерфейсом — 3–4 недели. Стоимость рассчитывается индивидуально, экономия времени на обработке снижает затраты до 70% по сравнению с ручным трудом. Свяжитесь с нами для оценки вашего проекта. Получите консультацию по внедрению AI-разделения — мы поможем подобрать решение под ваши задачи.







