Уявіть: у вас запис концерту, де вокал зливається з гітарою та ударними. Зробити чисту фонограму для караоке — без 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-розділення — ми допоможемо підібрати рішення під ваші завдання.







