Звук для немого видео: MMAudio
Урок «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 их называет.
Шаги
Слова каждого шага, как их показывает урок. Имена нод выделены.
Что делает MMAudio (чтение)
MMAudio смотрит ролик и делает звук того, что в нём происходит: шаги, всплески, мотор проезжающей машины. Звук попадает в такт с картинкой.
Так ролик, сделанный видеомоделью, получает свой звук. Короткий текст может направить результат, но ведут кадры.
Ноды этого урока даёт пак ComfyUI-MMAudio. Пак запускает на вашем компьютере чужой код: ставьте его сами через менеджер ComfyUI и только тот, которому доверяете. Кадры загружает и ролик собирает пак ComfyUI-VideoHelperSuite, как в примере самого пака.
Урок собирает граф с пустого холста: «Файл ▸ Новый проект».
Загрузите ролик
Добавьте ноду Load Video (Upload) 🎥🅥🅗🅢 и выберите ролик в её поле
video.Лучше всего модель слышит около 8 секунд. Для длинного ролика поставьте
frame_load_cap, чтобы читалась только нужная часть.Загрузите модель
Добавьте ноду MMAudio ModelLoader и выберите файл в
mmaudio_model. Пример пака берётmmaudio_large_44k_v2_fp16.safetensors.Все файлы этого урока лежат в папке models/mmaudio, которую пак добавляет в ComfyUI. Берите их со страницы самой модели, которую называет описание пака.
Загрузите модели-помощники
Добавьте ноду 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) могут при загрузке выполнить код. Берите их только со страницы самой модели.
Добавьте сэмплер
Добавьте ноду MMAudio Sampler и подключите три входа:
mmaudio_modelот MMAudio ModelLoader;feature_utilsот MMAudio FeatureUtilsLoader;imagesот выходаIMAGEноды Load Video (Upload) 🎥🅥🅗🅢.
Кадры идут из загрузчика прямо в сэмплер: модель их смотрит.
Задайте длину и шаги
В ноде MMAudio Sampler поставьте:
duration: 8, длина звука в секундах; ролик и звук должны быть одной длины;steps: 25;cfg: 4.5.
Это значения самого пака. В примере
durationприходит от ноды, которая меряет ролик; можно вписать его руками.Описание, если хочется (чтение)
Поле
promptможет остаться пустым: модель слышит кадры. Несколько слов помогают, когда кадры говорят мало: «rain on leaves», «crowd in a stadium». В полеnegative_promptпишут то, чего не должно быть слышно, например «music, speech».mask_away_clipвыключает взгляд модели на кадры. Оставьте выключенным, если не хотите звук только по тексту.Вставьте звук в ролик
Добавьте ноду Video Combine 🎥🅥🅗🅢. Соедините выход
IMAGEноды Load Video (Upload) 🎥🅥🅗🅢 с её входомimages, а выходaudioноды MMAudio Sampler с её входомaudio.Поставьте её
frame_rateравным частоте кадров вашего ролика, иначе картинка пойдёт быстрее или медленнее звука. В ComfyUI готовый ролик попадёт в папку output.Если звук не удался (чтение)
- Звук отстаёт от картинки:
frame_rateв ноде Video Combine 🎥🅥🅗🅢 не равен частоте кадров ролика. - Звук не подходит к сцене: напишите два-три слова в
prompt. - Звук кончается раньше ролика:
durationкороче ролика. - Не хватает памяти: куски покороче или включённый
force_offload.
Пак ComfyUI-HunyuanVideo-Foley делает то же самое моделью побольше. Его файлы лежат в models/foley.
- Звук отстаёт от картинки:
Граф готов (чтение)
Сохраните граф через «Файл ▸ Сохранить 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 🎥🅥🅗🅢.