Музыка из текста: ACE-Step 1.5

<!-- lesson: audio-music -->

Урок «audio-music» в группе Звук и речь списка уроков. Шагов: 13.

Чему вы научитесь

Вы соберёте граф, который пишет песню по списку стилей и вашему тексту.

Что понадобится

  • Урок продолжает Первая картинка из текста. Карточка говорит об этом; это подсказка, а не замок.
  • Файлы моделей, которые урок проверяет:
    • для поля ckpt_name ноды Load Checkpoint: файл, в имени которого есть ace_step.
  • Ноды: Load Checkpoint, ModelSamplingAuraFlow, TextEncodeAceStepAudio1.5, Empty Ace Step 1.5 Latent Audio, ConditioningZeroOut, KSampler, VAE Decode Audio, Save Audio (Advanced) / SaveAudio / SaveAudioMP3 / PreviewAudio.
  • Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.

Шаги

Слова каждого шага, как их показывает урок. Имена нод выделены.

  1. Что делает ACE-Step (чтение)

    ACE-Step 1.5 делает музыку. Вы даёте ей стиль в нескольких словах и, если нужно пение, слова песни. Она возвращает целую песню с инструментами и голосом.

    Граф похож на граф для картинки: модель, текст, пустая заготовка, сэмплер, декодер. Только заготовка и декодер сделаны для звука.

    Урок собирает граф с пустого холста: «Файл ▸ Новый проект».

  2. Загрузите модель

    Добавьте ноду Load Checkpoint и выберите файл в поле ckpt_name. Официальный шаблон берёт ace_step_1.5_turbo_aio.safetensors из папки models/checkpoints.

    «aio» значит «всё в одном»: модель, её чтение текста и декодер лежат в одном файле, как у чекпойнта для картинок.

    Если нужного файла в списке нет, значит, его нет в вашем ComfyUI. Приложение ничего не скачивает. Проще всего открыть в самом ComfyUI шаблон «ACE-Step 1.5 Music Generation AIO»: он покажет, каких файлов не хватает и куда их положить. Потом выберите здесь в меню «Синхронизация ▸ Синхронизировать сейчас», и файлы появятся в списках.

  3. Задайте сдвиг шума

    Добавьте ноду ModelSamplingAuraFlow. Соедините выход MODEL ноды Load Checkpoint с её входом model и поставьте shift равным 3.

    Сдвиг решает, сколько работы уйдёт на общую форму песни, а сколько на детали. Шаблон ставит 3. С намного меньшим числом песня выходит мутной.

  4. Опишите стиль

    Добавьте ноду TextEncodeAceStepAudio1.5 и соедините выход CLIP ноды Load Checkpoint с её входом clip. В поле tags напишите стиль: жанр, настроение, инструменты, какой голос. Например: calm acoustic folk, warm female vocals, soft guitar, light percussion.

    Лучше всего работают короткие слова через запятую. Модель училась на таких списках.

  5. Слова песни (чтение)

    В поле lyrics пишут слова, которые поются. Части песни отмечают в квадратных скобках на отдельных строках: [Verse 1], [Chorus], [Bridge]. Куплеты модель поёт одним образом, припев другим.

    Пишите свои слова или слова, на которые у вас есть права. Поле language говорит, на каком языке их петь.

    Официальный шаблон заполняет это поле целой песней. Прочитайте её в ComfyUI, чтобы увидеть форму.

  6. Задайте темп

    В ноде TextEncodeAceStepAudio1.5 поставьте bpm, число ударов в минуту, например 120.

    Медленные баллады около 70, танцевальная музыка от 120 до 130. Если темп спорит со стилем («медленная баллада» при 180), модель слышит два разных желания и смешивает их.

  7. Скажите, сколько длится песня

    Добавьте ноду Empty Ace Step 1.5 Latent Audio и поставьте seconds равным 120, две минуты. Потом поставьте duration в ноде TextEncodeAceStepAudio1.5 таким же числом.

    Заготовка задаёт настоящую длину, а текст говорит модели, какой длины песню она задумывает. Когда числа разные, песня кончается слишком рано или обрывается.

  8. Пустой негатив

    Добавьте ноду ConditioningZeroOut и соедините выход ноды TextEncodeAceStepAudio1.5 с её входом conditioning.

    Этой модели не говорят, чего избегать. Но сэмплеру всё равно нужно что-то на входе negative, и эта нода даёт ему то же описание, обнулённое целиком.

  9. Добавьте сэмплер

    Добавьте ноду KSampler и подключите четыре входа:

    • model от ModelSamplingAuraFlow;
    • positive от TextEncodeAceStepAudio1.5;
    • negative от ConditioningZeroOut;
    • latent_image от Empty Ace Step 1.5 Latent Audio.

    Поставьте steps равным 8 и cfg равным 1. Турбо-модель обучена заканчивать за восемь шагов без нажима большого cfg. Больше шагов лучше не сделают, а большой cfg делает звук резким.

  10. Превратите результат в звук

Добавьте ноду VAE Decode Audio. Соедините выход KSampler с её входом samples, а выход VAE ноды Load Checkpoint с её входом vae.

Сэмплер работает в сжатом виде, как и с картинками. Эта нода разворачивает его в звуковую волну.

  1. Сохраните песню

Добавьте ноду Save Audio (Advanced) и соедините выход VAE Decode Audio с её входом audio.

В ComfyUI она сохраняет файл в папку output/audio. Поле format выбирает вид файла: flac сохраняет всё качество, mp3 меньше и играет везде.

  1. Если песня не удалась (чтение)
  • Не тот стиль: поставьте самые важные слова в начало tags и уберите слова, которые тянут в разные стороны.
  • Голос бормочет: пишите слова короткими строками, одна фраза в строке, и проверьте language.
  • Песня обрывается на середине: duration и seconds разные.
  • Песня нравится, но нужен другой дубль: поменяйте seed в ноде TextEncodeAceStepAudio1.5. То же число снова даст ту же песню.

Шаблон есть и в виде с отдельными файлами: диффузионная модель, два чтения текста и декодер. Граф тот же, отличаются только загрузчики.

  1. Граф готов (чтение)

Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.

На сильной видеокарте песня в две минуты делается за секунды, на слабой за минуты. Первый запуск загружает модель и идёт дольше.

Что проверяет урок

Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:

  • Шаг 2, Загрузите модель:
    • нода Load Checkpoint.
    • в поле ckpt_name ноды Load Checkpoint стоит файл, в имени которого есть ace_step (заглавные буквы, точки и дефисы не важны).
  • Шаг 3, Задайте сдвиг шума:
    • нода ModelSamplingAuraFlow.
    • MODEL ноды Load Checkpoint во вход model ноды ModelSamplingAuraFlow.
    • shift ноды ModelSamplingAuraFlow: от 2 до 4; «Сделать за меня» ставит 3.
  • Шаг 4, Опишите стиль:
    • нода TextEncodeAceStepAudio1.5.
    • CLIP ноды Load Checkpoint во вход clip ноды TextEncodeAceStepAudio1.5.
    • tags ноды TextEncodeAceStepAudio1.5: не меньше 10 знаков.
  • Шаг 6, Задайте темп:
    • bpm ноды TextEncodeAceStepAudio1.5: от 60 до 200; «Сделать за меня» ставит 120.
  • Шаг 7, Скажите, сколько длится песня:
    • нода Empty Ace Step 1.5 Latent Audio.
    • seconds ноды Empty Ace Step 1.5 Latent Audio: от 10 до 240; «Сделать за меня» ставит 120.
    • duration ноды TextEncodeAceStepAudio1.5 равно полю seconds ноды Empty Ace Step 1.5 Latent Audio.
  • Шаг 8, Пустой негатив:
    • нода ConditioningZeroOut.
    • CONDITIONING ноды TextEncodeAceStepAudio1.5 во вход conditioning ноды ConditioningZeroOut.
  • Шаг 9, Добавьте сэмплер:
    • нода KSampler.
    • MODEL ноды ModelSamplingAuraFlow во вход model ноды KSampler.
    • CONDITIONING ноды TextEncodeAceStepAudio1.5 во вход positive ноды KSampler.
    • CONDITIONING ноды ConditioningZeroOut во вход negative ноды KSampler.
    • LATENT ноды Empty Ace Step 1.5 Latent Audio во вход latent_image ноды KSampler.
    • steps ноды KSampler: 8.
    • cfg ноды KSampler: 1.
  • Шаг 10, Превратите результат в звук:
    • нода VAE Decode Audio.
    • LATENT ноды KSampler во вход samples ноды VAE Decode Audio.
    • VAE ноды Load Checkpoint во вход vae ноды VAE Decode Audio.
  • Шаг 11, Сохраните песню:
    • нода Save Audio (Advanced) или SaveAudio или SaveAudioMP3 или PreviewAudio.
    • AUDIO ноды VAE Decode Audio во вход audio ноды Save Audio (Advanced) или SaveAudio или SaveAudioMP3 или PreviewAudio.

См. также

Страница перенесена из wiki репозитория приложения (docs/wiki/lessons/Audio-Music.ru.md, ревизия b8e3f71). То же руководство встроено в приложение: «Справка ▸ Руководство».

Чтобы обновить её, выполните npm run import, а затем npm run build в папке сайта.