Портрет, который говорит: HuMo
Урок «video-speech» в группе Видео списка уроков. Шагов: 16.
Сначала согласие
Озвучивать так можно только того, кто на это согласен, и его собственным голосом или голосом, на который у вас есть разрешение. Получите разрешение на исходные материалы и учитывайте местные законы. Для взрослого (18+) содержимого получите согласие участников и учитывайте местные законы. См. Правила содержимого.
Чему вы научитесь
Человек с картинки произносит слова из звукового файла, на нодах самого ComfyUI, без пака.
Что понадобится
- Урок продолжает Видео из картинки. Карточка говорит об этом; это подсказка, а не замок.
- Файлы моделей, которые урок проверяет:
- для поля
unet_nameноды Load Diffusion Model: файл, в имени которого естьhumo; - для поля
lora_nameноды LoraLoaderModelOnly: файл, в имени которого естьlightx2v; - для поля
clip_nameноды Load CLIP: файл, в имени которого естьumt5; - для поля
vae_nameноды Load VAE: файл, в имени которого естьwan_2.1_vae; - для поля
audio_encoder_nameноды Audio Encoder Loader: файл, в имени которого естьwhisper.
- для поля
- Ноды: Load Diffusion Model, LoraLoaderModelOnly, ModelSamplingSD3, Load CLIP, Load VAE, CLIP Text Encode (Prompt), Load Audio, Audio Encoder Loader, Audio Encoder Encode, Load Image, WanHuMoImageToVideo, KSampler, VAE Decode / VAE Decode (Tiled), Create Video, Save Video.
- Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.
Шаги
Слова каждого шага, как их показывает урок. Имена нод выделены.
Прежде чем начать (чтение)
Озвучивать так можно только того, кто на это согласен, и его собственным голосом или голосом, на который у вас есть разрешение. Получите разрешение на исходные материалы и учитывайте местные законы. Для взрослого (18+) содержимого получите согласие участников и учитывайте местные законы. Исключайте тех, кто младше 18 лет или так выглядит; обозначайте синтетические изображения, чтобы не вводить людей в заблуждение. Уроки учат технике без откровенных подробностей.
HuMo рисует человека с картинки-образца и двигает губы под звук. Звук идёт в ролик дорожкой.
Цена: модель HuMo 17B, около 17 ГБ в
fp8, вmodels/diffusion_models; LoRA для ускорения lightx2v вmodels/loras; аудиоэнкодер Whisper вmodels/audio_encoders;umt5_xxlиwan_2.1_vae. Рассчитывайте на карту от 16 ГБ или на долгий запуск с переносом частей в оперативную память. Ролик около четырёх секунд.Если на холсте уже есть другой граф, начните с пустого: «Файл ▸ Новый проект».
Загрузите модель
Добавьте ноду Load Diffusion Model и выберите в
unet_nameфайлhumo_17B.Если нужного файла в списке нет, значит, его нет в вашем ComfyUI. Приложение ничего не скачивает. Проще всего открыть в самом ComfyUI шаблон «HuMo Video Generation»: он покажет, каких файлов не хватает и куда их положить. Потом выберите здесь в меню «Синхронизация ▸ Синхронизировать сейчас», и файлы появятся в списках.
Добавьте LoRA для ускорения
Добавьте ноду LoraLoaderModelOnly и подключите выход
MODELноды Load Diffusion Model к её входуmodel. Вlora_nameвыберите файлlightx2vи оставьтеstrength_model1.С ней хватает 6 шагов и
cfg1, как в шаблоне; без неё модели нужно намного больше шагов.Задайте сдвиг
Добавьте ноду ModelSamplingSD3 и подключите выход LoraLoaderModelOnly к её входу
model. В полеshiftпоставьте 8.Загрузите текстовый энкодер
Добавьте ноду Load CLIP. В
clip_nameвыберите файлumt5_xxl, вtypeпоставьтеwan.Текстовый энкодер превращает промпт в то, что читает модель. Версия файла
fp8занимает вдвое меньше памяти, чем полная, и её берут официальные шаблоны.Загрузите VAE
Добавьте ноду Load VAE и выберите в
vae_nameфайлwan_2.1_vae. HuMo построена на Wan 2.1 и берёт её VAE.Опишите сцену
Добавьте две ноды CLIP Text Encode (Prompt) и подключите выход
CLIPноды Load CLIP ко входуclipкаждой. В полеtextодной опишите, кто говорит, где и как: спокойно, улыбаясь, глядя в камеру. Что именно сказано, модель берёт из звука, а не из промпта.Загрузите голос
Добавьте три ноды: Load Audio, Audio Encoder Loader и Audio Encoder Encode.
- В Load Audio выберите звуковой файл из папки
input. - В
audio_encoder_nameноды Audio Encoder Loader выберите файл Whisper (whisper_large_v3). - Выход Audio Encoder Loader подключите ко входу
audio_encoderноды Audio Encoder Encode, а звук к её входуaudio.
Лучше всего работает чистая запись одного голоса без музыки.
- В Load Audio выберите звуковой файл из папки
Загрузите портрет
Добавьте ноду Load Image и выберите в
imageкартинку с человеком. Лицо анфас, хороший свет, рот закрыт или чуть приоткрыт.Сведите всё вместе
Добавьте ноду WanHuMoImageToVideo и подключите к ней два промпта, VAE, выход Audio Encoder Encode ко входу audio_encoder_output и портрет ко входу ref_image.
Поставьте width и height 640, length 97: при 25 кадрах в секунду это около четырёх секунд.
- Добавьте сэмплер
Добавьте ноду KSampler. Её вход model берёт выход ноды ModelSamplingSD3; positive, negative и latent_image берут три выхода ноды WanHuMoImageToVideo.
- Настройте сэмплер
Поставьте steps 6 и cfg 1. LoRA для ускорения сделана под эти числа; cfg выше с ней пережигает картинку.
- Превратите результат в кадры
Добавьте ноду VAE Decode. Ко входу samples подключите выход сэмплера, ко входу vae выход ноды Load VAE.
Сэмплер выдаёт ролик в сжатом виде, латенте. Эта нода разворачивает его в кадры.
- Соберите ролик со звуком
Добавьте ноды Create Video и Save Video. Кадры идут во вход images, выход ноды Load Audio во вход audio, ролик во вход video ноды Save Video. В поле fps поставьте 25.
HuMo рисует 25 кадров в секунду; с другим числом губы не попадут в слова.
- Если губы не попадают в слова (чтение)
- Звук длиннее ролика: проговорятся только первые четыре секунды. Обрежьте звук или удлините ролик, по 97 кадров на четыре секунды.
- Лицо меняется: возьмите портрет чётче и крупнее.
- Рот почти не двигается: голос тихий или под ним музыка.
- Граф готов (чтение)
Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.
Что проверяет урок
Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:
- Шаг 2, Загрузите модель:
- нода Load Diffusion Model.
- в поле
unet_nameноды Load Diffusion Model стоит файл, в имени которого естьhumo(заглавные буквы, точки и дефисы не важны).
- Шаг 3, Добавьте LoRA для ускорения:
- нода LoraLoaderModelOnly.
MODELноды Load Diffusion Model во входmodelноды LoraLoaderModelOnly.- в поле
lora_nameноды LoraLoaderModelOnly стоит файл, в имени которого естьlightx2v(заглавные буквы, точки и дефисы не важны). strength_modelноды LoraLoaderModelOnly: от 0.5 до 1; «Сделать за меня» ставит 1.
- Шаг 4, Задайте сдвиг:
- нода ModelSamplingSD3.
MODELноды LoraLoaderModelOnly во входmodelноды ModelSamplingSD3 (можно через LoraLoaderModelOnly или EasyCache).shiftноды ModelSamplingSD3: от 5 до 8; «Сделать за меня» ставит 8.
- Шаг 5, Загрузите текстовый энкодер:
- нода Load CLIP.
- в поле
clip_nameноды Load CLIP стоит файл, в имени которого естьumt5(заглавные буквы, точки и дефисы не важны). typeноды Load CLIP:wan.
- Шаг 6, Загрузите VAE:
- нода Load VAE.
- в поле
vae_nameноды Load VAE стоит файл, в имени которого естьwan_2.1_vae(заглавные буквы, точки и дефисы не важны).
- Шаг 7, Опишите сцену:
- нода CLIP Text Encode (Prompt).
- нода CLIP Text Encode (Prompt).
CLIPноды Load CLIP во входclipноды CLIP Text Encode (Prompt) (промпт).CLIPноды Load CLIP во входclipноды CLIP Text Encode (Prompt) (негатив).textноды CLIP Text Encode (Prompt) (промпт): не меньше 3 знаков.
- Шаг 8, Загрузите голос:
- нода Load Audio.
- нода Audio Encoder Loader.
- нода Audio Encoder Encode.
AUDIO_ENCODERноды Audio Encoder Loader во входaudio_encoderноды Audio Encoder Encode.AUDIOноды Load Audio во входaudioноды Audio Encoder Encode.audioноды Load Audio: значение выбрано.- в поле
audio_encoder_nameноды Audio Encoder Loader стоит файл, в имени которого естьwhisper(заглавные буквы, точки и дефисы не важны).
- Шаг 9, Загрузите портрет:
- нода Load Image.
imageноды Load Image: значение выбрано.
- Шаг 10, Сведите всё вместе:
- нода WanHuMoImageToVideo.
CONDITIONINGноды CLIP Text Encode (Prompt) (промпт) во входpositiveноды WanHuMoImageToVideo.CONDITIONINGноды CLIP Text Encode (Prompt) (негатив) во входnegativeноды WanHuMoImageToVideo.VAEноды Load VAE во входvaeноды WanHuMoImageToVideo.AUDIO_ENCODER_OUTPUTноды Audio Encoder Encode во входaudio_encoder_outputноды WanHuMoImageToVideo.IMAGEноды Load Image во входref_imageноды WanHuMoImageToVideo (можно через Upscale Image или Upscale Image By или ImageFromBatch или ImageResizeKJv2 или Resize Image или GetImageRangeFromBatch или ResizeImageMaskNode).widthноды WanHuMoImageToVideo: от 480 до 1280; «Сделать за меня» ставит 640.heightноды WanHuMoImageToVideo: от 480 до 1280; «Сделать за меня» ставит 640.lengthноды WanHuMoImageToVideo: от 25 до 97; «Сделать за меня» ставит 97.
- Шаг 11, Добавьте сэмплер:
- нода KSampler.
MODELноды ModelSamplingSD3 во входmodelноды KSampler (можно через LoraLoaderModelOnly или EasyCache).positiveноды WanHuMoImageToVideo во входpositiveноды KSampler.negativeноды WanHuMoImageToVideo во входnegativeноды KSampler.latentноды WanHuMoImageToVideo во входlatent_imageноды KSampler.
- Шаг 12, Настройте сэмплер:
stepsноды KSampler: от 4 до 10; «Сделать за меня» ставит 6.cfgноды KSampler:1.
- Шаг 13, Превратите результат в кадры:
- нода VAE Decode или VAE Decode (Tiled).
LATENTноды KSampler во входsamplesноды VAE Decode или VAE Decode (Tiled).VAEноды Load VAE во входvaeноды VAE Decode или VAE Decode (Tiled).
- Шаг 14, Соберите ролик со звуком:
- нода Create Video.
- нода Save Video.
IMAGEноды VAE Decode или VAE Decode (Tiled) во входimagesноды Create Video.AUDIOноды Load Audio во входaudioноды Create Video.VIDEOноды Create Video во входvideoноды Save Video.fpsноды Create Video:25.