Bandit Audio Separation: Форки и Standalone Проект

Материал из wolfram
Версия от 09:38, 17 января 2026; Владимир (обсуждение | вклад) (Новая страница: « == Введение == === Описание проблемы === При работе с [https://github.com/Anjok07/ultimatevocalremovergui Ultimate Vocal Remover (UVR)] возникла необходимость запустить инференс моделей Bandit для разделения аудио на составляющие (речь, музыка, эффекты). Было выявлено, что UVR использует модели из...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Введение

Описание проблемы

При работе с Ultimate Vocal Remover (UVR) возникла необходимость запустить инференс моделей Bandit для разделения аудио на составляющие (речь, музыка, эффекты).

Было выявлено, что UVR использует модели из двух версий проекта Bandit:

  • bandit (оригинальный) — модели `dnr-3s-mus64-l1snr-plus.ckpt`, `model_bandit_plus_dnr_sdr_11.47.ckpt`
  • bandit-v2 — модели `checkpoint-multi.ckpt`, `checkpoint-multi_fixed.ckpt`

Задача

  1. Создать рабочие форки обоих проектов с standalone инференсом
  2. Убрать зависимости от проблемных библиотек (`asteroid`, Netflix internal packages)
  3. Создать независимый проект, работающий на Python 3.12 и PyTorch 2.9+

Сложности

  • Оригинальный `bandit` требует библиотеку `asteroid`, которая зависит от `pesq` с C++ компиляцией
  • `bandit-v2` зависит от Netflix internal packages (`nflx-*`, `jasper`, `metatron`)
  • Разные архитектуры моделей: `norm/fc` vs `combined` структуры
  • Разные sample rates: 44.1kHz vs 48kHz

---

Процесс работы

1. Анализ моделей

Выявлены ключевые различия между моделями:

Тип Модели Архитектура Sample Rate Ключи
Type A dnr-3s-mus64, model_bandit_plus_dnr norm/fc + bsrnn. 44100 Hz effects, music, speech
Type B checkpoint-multi, checkpoint-multi_fixed combined 48000 Hz sfx, music, speech

2. Создание форков

  1. bandit-Wolfram — форк оригинального bandit с `bandit_inference.py` и `bsrnn_standalone/`
  2. bandit-v2-Wolfram — форк bandit-v2 с `simple_inference.py`

3. Создание standalone проекта

Создан wolfram-separator — полностью независимый проект без зависимости от оригинальных репозиториев, работающий на Python 3.12 + PyTorch 2.9.1+cu130.

---

Результат работ

Модель Форк/Проект Скорость VRAM Missing Keys
dnr-3s-mus64-l1snr-plus bandit-Wolfram 17.0x 1.86 GB 0
model_bandit_plus_dnr bandit-Wolfram 17.7x 1.86 GB 0
checkpoint-multi bandit-v2-Wolfram 13.9x 1.99 GB 0
checkpoint-multi_fixed bandit-v2-Wolfram 16.0x 1.99 GB 0

Все 4 модели работают с 0 missing keys и ~15-18x realtime на RTX 4090.

---

Форк: bandit-Wolfram

Репозиторий: https://github.com/wolfam0108/bandit-Wolfram

Что добавлено

  • bandit_inference.py — standalone скрипт инференса
  • bsrnn_standalone/ — минимальный набор модулей без зависимости от `asteroid`

Поддерживаемые модели

  • dnr-3s-mus64-l1snr-plus.ckpt
  • model_bandit_plus_dnr_sdr_11.47.ckpt

Установка

# Создание окружения
conda create -n bandit python=3.10 -y
conda activate bandit

# PyTorch с CUDA 11.8
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu118

# Зависимости
pip install pytorch_lightning spafe tqdm librosa

# Клонирование
git clone https://github.com/wolfam0108/bandit-Wolfram.git
cd bandit-Wolfram

Использование

python bandit_inference.py -c path/to/model.ckpt -a path/to/audio.wav -o output_dir

Аргументы

Аргумент Описание По умолчанию
-c, --checkpoint Путь к чекпоинту Обязательный
-a, --audio Путь к аудио файлу Обязательный
-o, --output Директория вывода ./separated
--device Устройство (cuda/cpu) cuda
--no-half Отключить FP16 False
--chunk Размер чанка (сек) 30.0
--overlap Перекрытие (сек) 2.0

---

Форк: bandit-v2-Wolfram

Репозиторий: https://github.com/wolfam0108/bandit-v2-Wolfram

Что добавлено

  • simple_inference.py — standalone скрипт инференса без Ray и Netflix packages

Поддерживаемые модели

  • checkpoint-multi.ckpt
  • checkpoint-multi_fixed.ckpt

Установка

# Создание окружения
conda create -n bandit-v2 python=3.10 -y
conda activate bandit-v2

# PyTorch с CUDA 11.8
pip install torch==2.5.0+cu118 torchaudio==2.5.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

# Зависимости
pip install "pytorch_lightning>=2.3.0" hydra-core omegaconf librosa soundfile einops tqdm julius huggingface-hub pyyaml scipy pandas

# Клонирование
git clone https://github.com/wolfam0108/bandit-v2-Wolfram.git
cd bandit-v2-Wolfram

Использование

python simple_inference.py --checkpoint path/to/checkpoint-multi.ckpt --audio audio.wav --output output/

Аргументы

Аргумент Описание По умолчанию
-c, --checkpoint Путь к чекпоинту Обязательный
-a, --audio Путь к аудио файлу Обязательный
-o, --output Директория вывода ./estimates/
--chunk Размер чанка (сек) 30.0
--overlap Перекрытие (сек) 2.0
--stems Стемы для разделения speech music sfx
--no-half Отключить FP16 False

---

Проект: wolfram-separator

Репозиторий: https://github.com/wolfam0108/wolfram-separator

Полностью независимый проект для Python 3.12 и PyTorch 2.9+. Не требует pytorch_lightning или torchaudio для загрузки аудио.

Структура

wolfram-separator/
├── inference_type_a.py      # Для моделей 44.1kHz (dnr)
├── inference_type_b.py      # Для моделей 48kHz (checkpoint-multi)
├── models/
│   ├── type_a/              # 8 файлов модулей
│   └── type_b/              # 6 файлов модулей
├── requirements.txt
└── README.md

Поддерживаемые модели

Тип Модели Скрипт
Type A dnr-3s-mus64, model_bandit_plus_dnr inference_type_a.py
Type B checkpoint-multi, checkpoint-multi_fixed inference_type_b.py

Установка

# Создание окружения
conda create -n wolfram python=3.12 -y
conda activate wolfram

# PyTorch с CUDA 13.0 (или 11.8)
pip install torch --index-url https://download.pytorch.org/whl/cu130

# Зависимости
pip install soundfile librosa spafe tqdm numpy

# Клонирование
git clone https://github.com/wolfam0108/wolfram-separator.git
cd wolfram-separator

Использование

Type A модели (44.1 kHz):

python inference_type_a.py -c path/to/dnr-3s-mus64.ckpt -a audio.wav -o output/

Type B модели (48 kHz):

python inference_type_b.py -c path/to/checkpoint-multi.ckpt -a audio.wav -o output/

Производительность

Тестировано на RTX 4090 с Python 3.12 + PyTorch 2.9.1+cu130:

Модель Скорость VRAM
Type A ~15.5x realtime 1.86 GB
Type B ~14.5x realtime 2.10 GB

Ключевые отличия от форков

  • Не требует pytorch_lightning
  • Использует soundfile и librosa вместо torchaudio
  • Совместим с Python 3.12 и PyTorch 2.9+
  • Минимальные зависимости

---

Ссылки