Всем привет! Музыку я люблю всю жизнь. Сам всегда хотел научиться играть на каком‑нибудь инструменте — пробовал гитару, клавиши, даже барабаны — освоил в итоге только варган. Зато с генерацией музыки нейросетями дело у меня пошло сразу. Написал в своё времяодин из первых на русском гайдов по Udio, недавно собралплатформу для лайвкодинга музыки с ИИ‑агентом. За опенсорсом в этой теме тоже слежу — щупаю каждый раз как что‑то новое появляется. Но после Suno слушать их обычно невозможно. Уровень «ну ок, оно звуки издаёт, и это тоже достижение».
Меня зовутИлья, я блогер, основатель ArtGeneration.me и просто фанат нейросетей. Не разработчик в классическом смысле — скорее продакт с 20-летним стажем, который последние пару лет вайбкодит с помощью нейросетей всё до чего дотянется. И каждый раз когда вижу опенсорс‑проект с потенциалом, у меня чешутся руки его переделать под себя. Обычно я сдерживаюсь. В этот раз — не очень получилось.
В конце марта, когда на одном из моих стримов мы смотрели обзоры на свежую тогдаACE‑Step 1.5— опенсорсную модель от командыStepFun. Посмотрели примеры, послушали что люди нагенерировали — и я решил что это хрень не достойная внимания. Вокал мычит, куплет примерно похож на куплет, по качеству — где‑то уровеньSuno v3.5, то есть позапрошлогодний Suno. Даже скачивать не стал. Подумал: ну опенсорс и опенсорс, подождём когда научится.
И оно научилось! Уже через пару недель ACE‑Step выкатили версиюXL.
❯ XL — это уже другой разговор
Для тех кто не в теме, коротко объясню.ACE‑Step— это опенсорс‑модель генерации музыки, построенная на гибридной архитектуре: языковая модель как планировщик плюсDiT(Diffusion Transformer) для синтеза звука. Базовая 1.5 была на2 миллиарда параметровв DiT‑декодере (~4.7 ГБ весов) и генерировала примерно ничего интересного. А в XL‑релизе (это v0.1.6, вышел 3 апреля) команда раскачала DiT‑декодер до4 миллиардов(~9 ГБ весов в bf16), дообучила на сильно большем датасете и, судя по ощущениям, поменяла какие‑то внутренности.
В XLвыпустили три варианта, все на тех же ~4B:
- xl‑base— 50 шагов, поддерживает CFG, умеет все задачи включая extract/lego/complete
- xl‑sft— 50 шагов, supervised fine‑tuning, качество максимальное но только стандартные задачи
- xl‑turbo—8 шагов, distillation‑accelerated, без CFG, качество сопоставимо с SFT
Все три в официальных весах bf16 — это примерно18.8 ГБна диск. Это много. Поэтому в студию по умолчанию подключена сжатая BF16-версия Turbo от комьюнити на7.5 ГБ, так она влезает хотя бы в 16 гигов VRAM.
Примечание: Все треки кроме последнего созданы в режиме авто‑генерации, то есть модель сама придумала как запрос с описанием жанра, так и текст для лирики. Это лишь один из режимов, можно самостоятельно сгенерировать текст и запрос для стиля в другой нейронке и получить более связанный и разумный текст. Но, по моему и так весело.
Я сгенерировал на XL Turbo, первый трек — и офигел. Нет, это всё ещё не Suno. Но это уже не «оно издаёт звуки». Это полноценная песня с вокалом на русском (!!!), с куплетом и припевом (чаще всего очень тупым), но с осмысленной мелодией.До 8 минут длиной, на любом языке, в любом жанре. Я нагенериовал ещё десяток треков — и понял что вот в эту штуку уже как минимум весело играться.
И тут же всплыла вторая проблема. Родной UI от авторов модели — это Gradio‑демка. Знаете такие, где всё в один столбик, параметров полторы штуки, кнопка «Generate» и баста. Поиграться минут пять можно, делать что‑то серьёзное — невозможно. А мне же хочется и красиво и удобно, иначе проще в суно.
Я пошёл искать что люди уже сделали вокруг этой модели. И нашёл проектace‑step‑uiот fspecii — нормальный React‑интерфейс в стиле Suno: плейлисты, карточки треков, плеер, история генераций, базовый редактор аудио, разделение дорожек, i18n на 4 языка, без русского правда, даже генератор видео с фонами из Pexels был. Человек проделал большую работу. Единственная проблема — UI был написан под базовую 1.5, про XL он ничего не знал, и там внутри было много косяков которые коипились с прошлых релизов.
И вот тут у меня в голове щёлкнуло — да я же сейчас форкну, прикручу XL, починю то что криво, добавлю то чего нет, и получится реально годная студия. На два вечера дел. Ага, на два. Спойлер:393 моих коммитаи несколько недель позже получилась штука которую я не стыжусь показывать людям.
❯ Почему форк, а не с нуля
Я считаю очень важно говорить об этом честно.UI я не писал с нуля. Я форкнул чужой проект и значительно его переделал. fspecii сделал основу — React‑приложение с плеером, плейлистами, карточками треков, тёмной темой, генерацией с вокалом и инструменталом, режимами Cover и Repaint под 1.5, встроенный AudioMass‑редактор, разделение дорожек через Demucs, базовый видео‑генератор, i18n на английский/китайский/японский/корейский, скелет LoRA‑обучения. Это существенный фундамент, и я бы точно не стал начинать с нуля если бы его не было.
Что делал я сверху — адаптация всего этого под XL‑модели (а это не косметика, это серьёзный ре‑инжиниринг), куча новых вещей которых не было вообще, и починка того что работало кое‑как. Дальше пройдусь честно по каждому пункту что именно моё.
В опенсорсе это нормальная практика — брать чужой фундамент и наращивать сверху. Главное — автора оригинала указать в README, лицензию соблюсти, звезду на гитхаб поставить. Всё это я сделал.
❯ Что я запилил — самое крутое
Три XL‑модели в одном интерфейсе Это было первое что я начал делать. Оригинальный UI умел работать только с 1.5 и не знал про XL вообще ничего. Разные модели — разные дефолты, разные лимиты на количество шагов сэмплера, разные веса. Turbo крашится если поставить ему 50 шагов (он же distillation‑accelerated, ему 8 шагов хватает). SFT выдаёт кашу если поставить 8. Пришлось делать умный выбор — когда выбираешь модель, UI сам переключает сэмплеры в допустимые для неё значения.
Плюс добавилXL Merge SFT+Turboот комьюнити — компромиссный вариант который быстрее SFT но чуть качественнее Turbo.
Cover и Repaint адаптировал под XL
Сами режимы были в оригинальном UI, но работали криво и только под 1.5. На XL нужен был другой набор параметров, другая обработка входного аудио (падало если файл без расширения), другая логика слайдеров силы влияния. Что я переделал:
- Разделил загрузку надве независимые зоны— референс отдельно, источник для кавера отдельно. В оригинале это всё лезло в одно поле и путалось.
- Сделалвыделение региона перетаскиванием на волновой формедля Repaint. Раньше регион задавался двумя числовыми полями — сек от, сек до. Теперь просто выделяешь мышкой.
- Починил кучу багов: падение при загрузке файла без расширения, дефолтная сила кавера 100% (модель игнорировала источник, надо было 50%), повторное копирование аудио в референс‑слот.
- Добавил подсказки под слайдерами объясняющие что они делают.
Функционально режимы работают как и раньше — загружаешь трек, говоришь «переделай в стиле металл», или выделяешь 15 секунд и перегенеришь. Магия тут не в UI, а в модели. Но под XL это наконец‑то выдаёт что‑то осмысленное.
Видеостудия — расширение базового генератора
В оригинале был простой VideoGenerator с фонами из Pexels — буквально картинка + аудиодорожка. Что добавил сверху:
- Синхронизированная караоке‑подписьчерез LRC‑файлы, три стиля (построчно, бегущая строка, посимвольная заливка)
- Форматы экспорта16:9 / 9:16 / 1:1 — под YouTube, Reels/TikTok, Instagram
- Серверный рендеринг через ffmpegс GPU‑ускорением NVENC
- Исправил баги что бы все это нормально работало
Вот про рендеринг расскажу отдельно, потому что это была отдельная боль. Базовый генератор рендерил всё на клиенте через ffmpeg.wasm. Работало, но очень медленно и регулярно падал браузер — Chrome не любит когда ему шлёшь 500 мегабайт кадров. Переписал на серверный ffmpeg, добавил кодирование кусками по 50 кадров, поднял лимит body‑parser до 500 МБ — и вот теперь летает.
Страница Tools — мерджер, конвертер, Bake LoRA
Отдельная вкладка в студии, которой не было. Это уже не про генерацию музыки, а про работу с самими моделями.
BF16-конвертер— превращает safetensors модель из FP32/FP16 в BFloat16. Получается примерно-50% размерабез видимой потери качества. Раньше чтобы это сделать, нужно было ставить питон, ставить зависимости, писать скрипт. Теперь — кнопка в интерфейсе.
Model Merger— объединяет две модели ACE‑Step с настраиваемой альфой.Три метода мерджа: weighted_sum, add_difference и multiply. Это уже для тех кто знает зачем ему это. В мире Stable Diffusion такие мерджи — отдельное искусство, позволяющее получать авторские модели. С музыкой пока поле ещё совсем непаханное, но уже есть комьюнити‑мерджи которые заметно круче базовых.
Bake LoRA— запекает веса LoRA в базовую модель, получая новый самодостаточный чекпоинт. Удобно когда сделал хорошую LoRA и хочешь использовать её всегда, не переключая.
Сэмплеры, шедулеры, CFG‑пресеты
В базовом UI были базовые сэмплеры, я добавилещё три— и три новых шедулера. В сумме теперь10 сэмплеров(euler, heun, midpoint, ping‑pong, a2s, bogacki, rk4, dopri5, deis, ipndm) и7 шедулеров(linear, karras, cosine, beta, sway, logit_normal, laplace). Для каждой комбинации свои компромиссы между скоростью и качеством. Заодно починил баг где SDE‑сэмплер выдавал шум вместо музыки, и залочил комбо для turbo‑моделей — там работает только euler + linear, остальное крашится.
Отдельно —CFG scheduling presets. CFG (classifier‑free guidance) — это параметр который говорит модели насколько строго следовать промпту. Обычно он константный. Но оказывается его можно расписать во времени — в начале генерации строже, к концу свободнее, или наоборот. Я добавил 5 пресетов подсмотренных в комьюнити: Default, Creative, Strict, Smooth, ADG. На моих тестах Smooth давал самые живые треки, но вкусовщина.
Two‑stage cancel
Вот эта штука редко где реализована нормально. Жмёшь «Отмена» во время генерации — иреальноостанавливаешь, а не ждёшь минуту пока оно доделает.Первый этап— soft cancel через сигнал процессу.Второй этап— если процесс не реагирует второй клик отменяет генерацию.
Hot model swap
Меняешь модель — и тебе не надо перезапускать сервер. Когда я только прикрутил XL, переключение между моделями работало через рестарт сервера: хочу Turbo — перезапусти. Хочу SFT — перезапусти. Хочу другой LM для генерации текстов — угадайте что. Я переписал всю эту машинерию чтобы модели грузились/выгружались динамически. Отдельно DiT (сама музыкальная модель), отдельно LM (языковая для текстов). Можно отключить LM вообще и освободить VRAM для основной генерации через run‑no‑lm.bat.
Русский язык + починка i18n
В оригинале была i18n на 4 языка — английский, китайский, японский, корейский. Русского не было. Я добавилрусскийи заодно прошёл по фронту и вычистилвсе оставшиеся захардкоженные строки(в оригинале их было прям много — часть UI переведена, а часть просто на английском захардкожена). Все 750+ ключей теперь нормально переключаются между 5 языками.
Всякая VRAM‑магия
Добавилchunked FFN(feed‑forward network считается кусочками — меньше памяти нужно единовременно),pinned memoryдля быстрой передачи между CPU и GPU, интеграцию сcomfy‑aimdo(оптимизированное внимание),CPU offloadопционально через env var ACESTEP_OFFLOAD_TO_CPU=1. Это всё невидимое для юзера, но именно благодаря этому XL SFT стал запускаться на картах с 16 ГБ VRAM, а не только на 24 ГБ как было на старте.
Portable‑установка одним батником
Это моя любимая тема по жизни. Оригинал ставился через setup.bat, который предполагал что у тебя уже есть Python, Node.js и CUDA нужной версии. Если чего‑то нет — читай документацию, ставь сам, страдай. Нормальному человеку такое не дашь.
Я переписал установку чтобыничего не требовалось заранее. install.bat сам скачивает портативный Python 3.12, портативный Node.js 22, нужную версию PyTorch под вашу CUDA (12.4 / 12.6 / 12.8 — выбор в начале), все зависимости. Ничего в систему не попадает. Вся папка самодостаточная. Скопировал на флешку — унёс на другой компьютер — всё работает. Удалил папку = деинсталлировал. Именно так я делаю все свои портативные сборки и считаю это единственным нормальным способом распространять ML‑тулы для обычных пользователей.
Плюс run.bat, run‑no‑lm.bat, run‑dev.bat, update.bat, reinstall.bat — каждый под свой сценарий, очевидный из названия ярлыка.
Виджет с потреблением ресурсов
Очень полезно следить за тем, сколько ресурсов потребляла система прежде чем все упало, я сделал минималистичный и симпатичный виджет в левом сайдбаре, где отображаются все основные жизненные показатели вашей системы.
❯ Честно про ограничения
Я обещал честно рассказывать про плюсы и минусы. Так что поехали минусы.
Это не Suno. И вряд ли в ближайший год станет. Качество заметно ниже, особенно когда речь про жанры с тонкой аранжировкой — классика, джаз, сложные электронные стили. ACE‑Step XL очень уверенно делает «бодрые песни с вокалом» — поп, рок, электронику. Всё что требует тонкой нюансировки — пока нет.
Вокал местами синтетический. На коротких фразах — норм, на длинных куплетах инногда слышно что это не человек. Suno тут ушёл сильно вперёд.
Надо настраивать. Если вам нужно просто «нажал и получил» — это Suno за $10 в месяц. ACE‑Step Studio — это инструмент для тех кто готов потратить время. Выбрать модель, подобрать сэмплер, покрутить CFG, поэкспериментировать с референсом. Кривая входа — часа два на то чтобы начать получать приличные результаты.
VRAM. Минимум 16 ГБ с BF16-моделью, но рекомендуется 20+. На встроенной графике ноутбука это не запустится.
Очень тупые, но забавные тексты.Они в рифму, но совершенно без смысла, к тому же модель плохо слушается промпта, на русском не понимает совсем, а на английском просто очень избирательно пишет лирику, если вы задаете её в промпте. Но, конечно, никто не мешает сгенерировать лирику, да и сам промпт для генерации музыки — в другой, более умной нейронке.
Нужно время на скачивание. Первый запуск скачивает 7.5 ГБ ( BF16-версия) или 18.8 ГБ (любая официальная XL). Плюс LM на генерацию текстов. В сумме полная установка — это около 20 ГБ на диск.
❯ Но есть ниши где опенсорс уделывает Suno
И вот тут интересно. Есть три сценария где ACE‑Step Studio реальнокруче чем Suno— не «такое же», а именно круче.
Каверы защищённых копирайтом треков. Suno жёстко режет любые попытки сделать кавер на известную песню. А у вас дома никого не волнует, что вы хотите послушать как «Smells Like Teen Spirit» звучал бы в стиле регги. Загрузил — получил — слушаешь. Для себя, не для публикации. Но в личной коллекции прикольных экспериментов — огонь.
Своя LoRA на любой трек. ACE‑Step поддерживает LoRA из коробки. Можно обучить модель на любом треке. Этоогромноепространство возможностей которое в закрытых сервисах в принципе недоступно. Я пока только начал в этом разбираться, но планирую отдельно про это написать — обучение LoRA для музыкальных моделей это своя тема.
Локальность и навсегда. Ни подписок, ни кредитов, ни лимитов, ни цензуры, ни «упс, сервис закрылся». Скачал — работает. Тревожная мысль: как только какой‑то SaaS‑сервис становится мне важен, я сразу думаю «а что если он заавтра умрёт или поднимет цены в 5 раз». С опенсорсом эта мысль не гложет. Что скачал — то твоё, и никто не отниимет.
Можно шарить по сети.Например зайти с телефона принимая ванну, ну или придумайте сами более достойный пример. Плюс есть система профилей, что отлично подойдет скажем для многодетной музыкальной семьи с GPU сервером на балконе.
❯ Как запустить
Скачайтеустановщикс гита, или установите черезGit Cloneпо инструкции врусскоязычном ReadMe.
Если будет мало, то в каналеНейро‑Софтесть еще и архив с окружением подwin 11, rtx 4090.
После установки открываете run.bat — браузер откроется автоматически. При первом запуске докачает модели.
❯ Опенсорс хочет вас
Это самая большая штука которую я когда‑либо публиковал. И это уже сейчас работающий продукт — не демо, не proof‑of‑concept, а полноценная студия которой приятно пользоваться.
Но это опенсорс, и ему нужна ваша помощь. Области где я сам не дотянусь:
- macOS и Linux‑сборки— я писал под винду, Но оригинальный ACE‑Step-1.5 работает и под mac и под Linux, нужно просто сделать сборку.
- Новые пресеты визуализатора— это чистый HTML/Canvas, добавить пресет — часа на два работы
- Переводы— если вы носитель языка которого ещё нет (немецкий, французский, испанский…) — берите i18n‑файлы и вперёд
- UI обучения LoRA— скелет есть, нужен нормальный пайплайн с прогресс‑барами
Форкните, поправьте что не нравится, пришлите PR. Или создайте issue с идеей. Или напишите туториал. Или простопоставьте звезду на GitHub— чтобы другие нашли проект быстрее. Мне не сложно просить об этом, потому что это реально помогает проекту жить.
И главное —пришлите в комментарии треки которые нагенерите. Очень интересно послушать что из этого получается у других людей. В моей голове ACE‑Step Studio это в первую очередь инструмент для творчества, а не ещё одна техно‑игрушка. Покажите что вы делаете — это лучшая мотивация для меня продолжть пилить.
- Репозиторий:github.com/timoncool/ACE‑Step‑Studio
Я рассказываю больше о нейросетях и вайбкодинге у себя наYouTube, вТелеграмеи наБусти. Всех обнял и удачных генераций.