StemFlow — небольшая Windows-программа для тех случаев, когда нужно достать вокал из песни, убрать его из минуса или разложить трек на отдельные партии. Всё работает локально: музыка никуда не загружается и не отправляется на сторонние серверы.
- отделяет вокал от инструментала;
- раскладывает трек на вокал, ударные, бас и остальное;
- умеет дополнительно разделить очищенный вокал на передний и бэк;
- использует NVIDIA GPU, если он доступен, и переключается на CPU, если его нет;
- открывает аудио MP3, WAV, FLAC, OGG, M4A, AAC и WMA;
- принимает видео MP4, MKV, MOV, AVI, WEBM, WMV, M4V, MPEG, TS и 3GP, сам извлекает первую аудиодорожку и работает уже с ней;
- по умолчанию сохраняет результат в MP3 320 кбит/с; также доступны WAV и FLAC;
- позволяет слушать, выключать и солировать дорожки прямо в программе;
- хранит историю обработок и показывает, если файлы были удалены;
- нормально выглядит при масштабировании Windows от 100 до 200%.
Внутри используются FFmpeg и HTDemucs. Есть два профиля: быстрый htdemucs
и более медленный htdemucs_ft. Второй запускает четыре дообученные модели и
даёт заметно более чистый результат на сложных треках.
Самый простой вариант — скачать StemFlow-Setup.exe по ссылке в описании
релиза и запустить его. Python, FFmpeg, CUDA runtime и модели уже входят в
установщик, отдельно ставить их не нужно.
Текущая сборка больше 2 ГиБ, поэтому прикрепить её к GitHub Release напрямую
не получится: у GitHub есть ограничение на размер одного файла релиза.
Установщик нужно положить в отдельное файловое хранилище, а ссылку добавить в
описание релиза. В сам Git-репозиторий .exe добавлять не нужно.
Сборка довольно большая:
- установщик занимает около 2,3 ГБ;
- после установки программа занимает примерно 5,5 ГБ;
- для обработки длинных песен понадобится дополнительное свободное место.
Установщик пока не подписан коммерческим сертификатом. Поэтому SmartScreen может показать сообщение о неизвестном издателе. В таком случае нужно нажать «Подробнее», а затем «Выполнить в любом случае».
Нужны Windows 10/11 x64 и Python 3.11 x64.
install.bat
run.batinstall.bat создаст виртуальное окружение и установит зависимости. Если в
системе найдётся NVIDIA GPU, будет установлена CUDA-версия PyTorch.
FFmpeg можно установить через winget:
winget install --id Gyan.FFmpeg -eДля полноценной сборки также нужен Inno Setup 6.
py -3.11 -m venv .venv-build
.venv-build\Scripts\python.exe -m pip install -r requirements.txt
.venv-build\Scripts\python.exe -m pip install -r requirements-cuda.txt
.venv-build\Scripts\python.exe -m pip install -r requirements-dev.txt
build_release.batСкрипт скачает FFmpeg и официальные checkpoint-файлы Demucs, проверит их
SHA-256, соберёт папочную версию через PyInstaller и создаст
release\StemFlow-Setup.exe.
.venv-build\Scripts\python.exe -m ruff check app tests scripts
.venv-build\Scripts\python.exe -m pytestСейчас в проекте 33 теста. Они проверяют команды FFmpeg, импорт видео, работу настроек, историю, выбор CUDA/CPU, модели, обработку ошибок и повторный запуск разделения.
Сначала FFmpeg берёт первую аудиодорожку исходного файла и переводит её во временный stereo PCM float32. В случае с видео картинка при этом не перекодируется и не сохраняется. Затем Demucs обрабатывает аудио отдельным процессом, чтобы интерфейс не зависал. После этого дорожки экспортируются в выбранный формат.
В режиме «Вокал слоями» передний и бэк-вокал разделяются по center/side составляющим очищенной вокальной дорожки. На обычных стерео-миксах это хорошо отделяет центральный лид от разведённых по сторонам даблов и подпевок. Если исходник моно или весь вокал записан строго по центру, бэк-дорожка может получиться почти пустой — это ограничение самого микса.
app/
models/ структуры данных
services/ FFmpeg, модели, настройки, история
ui/ страницы приложения
widgets/ плеер и элементы интерфейса
workers/ фоновые задачи разделения и загрузки
installer/ сценарий Inno Setup
scripts/ подготовка ресурсов и smoke-тест интерфейса
tests/ автоматические тесты
В корне лежит publish_github.bat. При первом запуске он попросит адрес пустого
репозитория, создаст локальный Git-репозиторий, сделает коммит и отправит ветку
main. Пароли и токены скрипт не хранит — вход выполняется средствами Git for
Windows или через SSH. Батник публикует исходники; большой установщик в GitHub
он не отправляет.
Код StemFlow распространяется по лицензии MIT. Список сторонних компонентов и их лицензий находится в THIRD_PARTY_NOTICES.md.
