Звук для немого видео: MMAudio

<!-- lesson: audio-foley -->

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

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

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

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

  • Паки нод: ComfyUI-MMAudio, ComfyUI-VideoHelperSuite. Их вы ставите в ComfyUI сами, потом выбираете Синхронизация ▸ Синхронизировать сейчас. До тех пор карточка говорит, что урок не подходит, и называет пак.
  • Файлы моделей, которые урок проверяет:
    • для поля mmaudio_model ноды MMAudio ModelLoader: файл, в имени которого есть 44k;
    • для поля vae_model ноды MMAudio FeatureUtilsLoader: файл, в имени которого есть 44k.
  • Ноды: Load Video (Upload) 🎥🅥🅗🅢, MMAudio ModelLoader, MMAudio FeatureUtilsLoader, MMAudio Sampler, Video Combine 🎥🅥🅗🅢.
  • Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.

Шаги

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

  1. Что делает MMAudio (чтение)

    MMAudio смотрит ролик и делает звук того, что в нём происходит: шаги, всплески, мотор проезжающей машины. Звук попадает в такт с картинкой.

    Так ролик, сделанный видеомоделью, получает свой звук. Короткий текст может направить результат, но ведут кадры.

    Ноды этого урока даёт пак ComfyUI-MMAudio. Пак запускает на вашем компьютере чужой код: ставьте его сами через менеджер ComfyUI и только тот, которому доверяете. Кадры загружает и ролик собирает пак ComfyUI-VideoHelperSuite, как в примере самого пака.

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

  2. Загрузите ролик

    Добавьте ноду Load Video (Upload) 🎥🅥🅗🅢 и выберите ролик в её поле video.

    Лучше всего модель слышит около 8 секунд. Для длинного ролика поставьте frame_load_cap, чтобы читалась только нужная часть.

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

    Добавьте ноду MMAudio ModelLoader и выберите файл в mmaudio_model. Пример пака берёт mmaudio_large_44k_v2_fp16.safetensors.

    Все файлы этого урока лежат в папке models/mmaudio, которую пак добавляет в ComfyUI. Берите их со страницы самой модели, которую называет описание пака.

  4. Загрузите модели-помощники

    Добавьте ноду MMAudio FeatureUtilsLoader. Она загружает три маленькие модели в трёх полях:

    • vae_model: декодер звука, mmaudio_vae_44k_fp16.safetensors;
    • synchformer_model: та, что сводит звук с кадрами, mmaudio_synchformer_fp16.safetensors;
    • clip_model: та, что видит, что в кадрах, apple_DFN5B-CLIP-ViT-H-14-384_fp16.safetensors.

    Поставьте mode в 44k. Большая модель и её декодер работают на 44 кГц, с 16k они вместе не подходят.

    Файлы старых форматов (.ckpt, .pt, .pth, .bin) могут при загрузке выполнить код. Берите их только со страницы самой модели.

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

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

    • mmaudio_model от MMAudio ModelLoader;
    • feature_utils от MMAudio FeatureUtilsLoader;
    • images от выхода IMAGE ноды Load Video (Upload) 🎥🅥🅗🅢.

    Кадры идут из загрузчика прямо в сэмплер: модель их смотрит.

  6. Задайте длину и шаги

    В ноде MMAudio Sampler поставьте:

    • duration: 8, длина звука в секундах; ролик и звук должны быть одной длины;
    • steps: 25;
    • cfg: 4.5.

    Это значения самого пака. В примере duration приходит от ноды, которая меряет ролик; можно вписать его руками.

  7. Описание, если хочется (чтение)

    Поле prompt может остаться пустым: модель слышит кадры. Несколько слов помогают, когда кадры говорят мало: «rain on leaves», «crowd in a stadium». В поле negative_prompt пишут то, чего не должно быть слышно, например «music, speech».

    mask_away_clip выключает взгляд модели на кадры. Оставьте выключенным, если не хотите звук только по тексту.

  8. Вставьте звук в ролик

    Добавьте ноду Video Combine 🎥🅥🅗🅢. Соедините выход IMAGE ноды Load Video (Upload) 🎥🅥🅗🅢 с её входом images, а выход audio ноды MMAudio Sampler с её входом audio.

    Поставьте её frame_rate равным частоте кадров вашего ролика, иначе картинка пойдёт быстрее или медленнее звука. В ComfyUI готовый ролик попадёт в папку output.

  9. Если звук не удался (чтение)

    • Звук отстаёт от картинки: frame_rate в ноде Video Combine 🎥🅥🅗🅢 не равен частоте кадров ролика.
    • Звук не подходит к сцене: напишите два-три слова в prompt.
    • Звук кончается раньше ролика: duration короче ролика.
    • Не хватает памяти: куски покороче или включённый force_offload.

    Пак ComfyUI-HunyuanVideo-Foley делает то же самое моделью побольше. Его файлы лежат в models/foley.

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

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

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

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

  • Шаг 2, Загрузите ролик:
    • нода Load Video (Upload) 🎥🅥🅗🅢.
    • video ноды Load Video (Upload) 🎥🅥🅗🅢: значение выбрано.
  • Шаг 3, Загрузите модель:
    • нода MMAudio ModelLoader.
    • в поле mmaudio_model ноды MMAudio ModelLoader стоит файл, в имени которого есть 44k (заглавные буквы, точки и дефисы не важны).
  • Шаг 4, Загрузите модели-помощники:
    • нода MMAudio FeatureUtilsLoader.
    • в поле vae_model ноды MMAudio FeatureUtilsLoader стоит файл, в имени которого есть 44k (заглавные буквы, точки и дефисы не важны).
    • synchformer_model ноды MMAudio FeatureUtilsLoader: не тот же файл, что в поле vae_model ноды MMAudio FeatureUtilsLoader.
    • clip_model ноды MMAudio FeatureUtilsLoader: не тот же файл, что в поле synchformer_model ноды MMAudio FeatureUtilsLoader.
    • mode ноды MMAudio FeatureUtilsLoader: 44k.
  • Шаг 5, Добавьте сэмплер:
    • нода MMAudio Sampler.
    • mmaudio_model ноды MMAudio ModelLoader во вход mmaudio_model ноды MMAudio Sampler.
    • mmaudio_featureutils ноды MMAudio FeatureUtilsLoader во вход feature_utils ноды MMAudio Sampler.
    • IMAGE ноды Load Video (Upload) 🎥🅥🅗🅢 во вход images ноды MMAudio Sampler.
  • Шаг 6, Задайте длину и шаги:
    • duration ноды MMAudio Sampler: от 1 до 10; «Сделать за меня» ставит 8.
    • steps ноды MMAudio Sampler: от 20 до 30; «Сделать за меня» ставит 25.
    • cfg ноды MMAudio Sampler: от 3 до 6; «Сделать за меня» ставит 4.5.
  • Шаг 8, Вставьте звук в ролик:
    • нода Video Combine 🎥🅥🅗🅢.
    • IMAGE ноды Load Video (Upload) 🎥🅥🅗🅢 во вход images ноды Video Combine 🎥🅥🅗🅢.
    • audio ноды MMAudio Sampler во вход audio ноды Video Combine 🎥🅥🅗🅢.

См. также

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

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