Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
1231 - Telegram Web
Telegram Web
Говорящий видео аватар в Silly Tavern (F5 TTS + Float / wav2lip)

- wav2lip (первое видео) - делает липсинк по видео + аудио (старый, быстрый, можно дать видео на вход, на выходе разрешение небольшое, видео размытое)
- Float (второе видео) - делает липсинк по картинке + аудио (новый, не очень быстрый, не умеет брать видео на вход, на выход квадрат 512х512)

# Установка

Нужно:
- свежая версия Silly Tavern (1.13.2, вышла 3 недели назад. До этого поддержки видео не было)
- ComfyUI и кастомные ноды: ComfyUI-F5-TTS, ComfyUI_wav2lip, ComfyUI-FLOAT_Optimized. Ноды устанавливать через ComfyUI Manager - via URL.

Русский язык в F5-TTS в комфи
нода: https://github.com/niknah/ComfyUI-F5-TTS
скачать русский файнтюн от misha24-10:
https://huggingface.co/Misha24-10/F5-TTS_RUSSIAN/blob/main/F5TTS_v1_Base_v2/model_last_inference.safetensors
https://huggingface.co/Misha24-10/F5-TTS_RUSSIAN/blob/main/F5TTS_v1_Base/vocab.txt
оба файла положить в папку models/checkpoints/F5-TTS/
оба файла переименовать в ru.safetensors и ru.txt

Референсное аудио для F5 должно быть коротким, 6-8 c. При 11 c - речь становится слишком быстрой.
в папку /comfyUI/input положить 2 файла emma_ru_xtts_3.wav и emma_ru_xtts_3.txt: https://github.com/Mozer/comfy_stuff/tree/main/input
в emma_ru_xtts_3.txt лежит текст сказанный в wav файле.
в комфи в ноде F5 TTS audio advanced выбрать:
model model:///ru.safetensors
model_type: F5TTS_v1_Base
sample_audio: emma_ru_xtts_3


# Float (говорящая голова по одной картинке) в комфи
- нода: https://github.com/set-soft/ComfyUI-FLOAT_Optimized
- на входе лицо должно смотреть строго прямо. Сверху кадра должно оставаться немного свободного места.
- галка face_align обрежет лицо как надо. Без нее будут артефакты.
- нет video2video, на вход только картинка
- Потоковый режим я пока не прикрутил. С ним можно сократить время ожидания в 2 раза.
- модельки скачаются сами при первом запуске
- пример головы: https://github.com/Mozer/comfy_stuff/blob/main/input/ComfyUI_00463_2(2).jpg


# Wav2lip в комфи
- моя нода: https://github.com/Mozer/ComfyUI_wav2lip - прикрутил кэширование для скорости и пару настроек для удобства.
- скачать модельку https://huggingface.co/Nekochu/Wav2Lip/blob/main/wav2lip_gan.pth и положить в \custom_nodes\ComfyUI_wav2lip\Wav2Lip\checkpoints
- без модели нода не запустится. Перезагрузить ComfyUI (restart).
- при первом запуске с новым видео обнаружение лица занимает около минуты.
- примера видео не дам, сами найдете


# Мои воркфлоу:
(F5 + Wav2lip) и (F5 + Float): https://github.com/Mozer/comfy_stuff/tree/main/workflows/silly_tavern
Скачать нужный ВФ и запустить в комфи. Проверить, что все работает, и он видит вашу картинку/видео. Затем нажать: верхнее меню - workflow -> Export (API)
Далее ВАШ воркфлоу можно импортировать в silly Tavern. Мой ВФ импортировать в ST не надо, там указаны мои имена файлов, их у вас нет.


# Настройка SillyTavern
Меню Extensions -> Image generation:
Source: comfyUI
URL: http://127.0.0.1:8188
Очищаем поля "Common prompt prefix" и "Negative common prompt prefix"
ComfyUI Workflow: жмем +. Пишем "F5_Wav2lip", вставляем ваш экспортированный воркфлоу.
Проверяем/заменяем, что вместо "speech": "Какой-то текст", стоит "speech": "%prompt%", так мы будем передавать текст сообщения из silly в comfy.
Верхнее меню - User Settings - Expand Message Actions (для удобства)


- Вместо F5 TTS можно поставить XTTSv2 (в комфи я не тестил, но видел ноды).
- на видео LLM - sainemo-remix-12b

Скорость на 3090 для аудио длиной 13-17 секунд:
- F5 + wav2lip - 17 секунд генерации, связка жрет 3 GB VRAM
- F5 + Float - 55 секунд генерации, связка жрет 10 GB VRAM
- На 3060: на 5 секунд дольше.

Планирую добавить стриминг режим для Float, будет в 2 раза быстрее, но видео будет отображаться в отельном окне.
42🔥30👍86🏆1
Media is too big
VIEW IN TELEGRAM
Нейро-Эмма - Моя любовь чат джипити (infiniteTalk)

слова: tensorbanana & gemini-2.5-pro
песня: udio-1.5-allegro
картинки: wan2.2 t2i
анимация: wan2.2 i2v
липсинк: infiniteTalk video2video
консистентность: лора+детальное описание

gemini-2.5-pro, наверное, лучше всех пишет стихи на русском. На самые жирные бэнгеры пришлось самому придумывать.
udio-1.5-allegro (бесплатный) - удивил, он намного лучше бесплатного suno. Платные модели suno я не тестил, но те что стоят в бесплатном режиме - это просто прошлый век по сравнению с udio.

Сгенерировал одну стартовую картинку с гитарой, далее просто продолжал ее через image2video и движение камеры.

Лоры на движение камеры:
зум вперед: https://civitai.com/models/1784288/motion-lora-camera-push-in-wan-14b-720p-i2v
вправо-влево: https://civitai.com/models/1892318/whip-pan

Еще пробовал через первый-последний кадр в vace, но выходило плохо с движением камеры, забил на это. Надо попробовать в wan-fun, но мне было лень качать. Также просил gemini-image (nano-banana) скомпоновать новый кадр со старыми персонажами, но тот отказался (скорее всего, ему топик не понравился).

Робот танцует через vace video2video с dwpose.

infiniteTalk video2video от kijai жрет кучу врам. При 720p со скользящим окном в 49 кадров - 34 GB (уходит в виртуальную vram). Все видео делится на куски по 49 кадров с перехлестом в 9 кадров и отправляется на липсинк. Чем больше окно, тем лучше консистеность, при 49 будут видны склейки. Окно в 65 и 81 кадр в 720p у меня падают по OOM ошибке. Если мало vram - пробуйте побольше blockswap, поменьше окно и 480p. Предположу, что на 12 GB должно запуститься, но это не точно.

Скорость infiniteTalk: 28 секунд 720p видео генерируется за 40 минут на 3090.

infiniteTalk работает на 2-х шагах с фиксированным деноизом 50%, а значит мелкие детали в исходном видео будут изменены. Например, в одном прогоне он сожрал барабанные палочки, Эмма просто махала руками. Поэтому нужно прописывать такие мелкие детали в промпт: Emma Watson woman is singing and playing at drum kit with 2 drum sticks in her hands, rock music, energetic music, fast movements

wan-s2v пока не тестил, но он и не поддерживает режим video2video (там только одна говорящая картинка). А с infiniteTalk можно делать динамичные сцены.

Сделал все за 3 вечера.

Воркфлоу infiniteTalk video2video: https://github.com/Mozer/comfy_stuff/blob/main/workflows/wan_infinitetalk_video2video_720p_49f.json
41🔥59👍11👎653😁2💔1
This media is not supported in your browser
VIEW IN TELEGRAM
Прикрутил потоковый режим для vibeVoice-7b в комфи

vibeVoice-7b - лучшая открытая TTS для русского языка на данный момент. Ударения практически идеальные.

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

Скорости 3090 не хватает на реалтайм инференс 7b. Видюха примерно в 2 раза медленнее, чем надо. 1.5b тоже не идет в реалтайме, там есть какие-то проблемы со скоростью, я пока не разбирался.

vibeVoice-7b практически идеально ставит ударения в русской речи.
vibeVoice-1.5b тоже неплох, но присутствует сильный английский акцент, режет слух. Для английского - прикольно.

Скорость vibeVoice-7b на 3090:
для генерации длинного аудио длиной 30 секунд:
- 53 секунда - без стриминга
- 36 секунд со стримингом, до воспроизведения и буфером 20s

для генерации короткого аудио длиной 15 секунд:
- 27 секунд - без стриминга
- 19 секунд со стримингом, до воспроизведения и буфером 10s

Можно сократить время до воспроизведения, поставив буфер 3s, но тогда речь будет прерываться каждые 3 секунды на буферизацию. Возможно, на новых видюхах 5000 серии такого буфера хватит для реалтайм инференса.

Галка free_memory_after_generate:False сокращает время инференса на 10 секунд, но с ней модель будет проблематично выгрузить из памяти комфи (она там намертво загружается). Для тестов ставьте галку в True, модель будет освобождать память в конце.

Требования:
Для 7b:
в 7b_bf16 и 7b_fp16 требует 19 Гигов vram. В режиме bnb_nf4 - требование всего 9.2 GB.
На 3090 рекомендую инференс в режиме fp16 - он на 10-15% быстрее, чем bf16. Если vram мало, то ставьте bnb_nf4. Для новых видюх 4000 и 5000 серии пробуйте fp8 (не тестил).

Для 1.5b:
1.5b_bf16 требует 6 гигов vram. 1.5b_nf4 требует - 3.2 GB. Но nf4 медленнее в 2 раза чем bf16 и fp16.


Уже сейчас этот воркфлоу можно прокинуть в sillyTavern, будет и потоковое аудио и wav2lip в конце (не потоковый).
В планах далее прикрутить сюда потоковый wav2lip, чтобы видео генерировалось сразу по мере готовности аудио, а не в конце.

Модельки автоматом скачиваются в комфи. Если надо вручную, в вф есть ссылки на HF.

воркфлоу VibeVoice_streaming + wav2lip: https://github.com/Mozer/VibeVoice-ComfyUI/blob/main/examples/vibevoice_streaming_and_wav2lip.json

мои ноды VibeVoice: https://github.com/Mozer/VibeVoice-ComfyUI

мой wav2lip для комфи: https://github.com/Mozer/ComfyUI_wav2lip
32🔥52👍165😭1
Media is too big
VIEW IN TELEGRAM
vibevoice-7b-exl3 с реалтайм скоростью

Оригинал работает так: 2 прохода LLM (позитив+негатив) + диффузия на основе этих проходов.

## Оптимизация
- заменил LLM движок HF-transformers на exllamav3 (LLM стала быстрее в 3 раза)
- заменил 2 прохода LLM на один, но с кэшем для негативного прохода
- уменьшил число шагов до 5 (чуть меньше вариативности)
- прикрутил разделение входного текста на абзацы (т.к. на длинном тексте начинает глючить)
- диффузию не трогал, думаю прикрутить TeaCache
- добавил стриминг с буфером 1s. Воспроизведение теперь начинается почти мгновенно


## Требования:
- nvidia 3000+ (2000 серия не подойдет для exllamav3, но ноду можно запустить и без exllamav3)
- от 8 GB vram (лучше 12)
- flash-attention-2 (без него exllamav3 не работает)
- моя exllamav3
- модель должна полностью входить в vram, частичной выгрузки нет

## Потребление vram
- 7b-exl-8bit + no-llm-bf16 - 12.6GB
- 7b-exl-4bit + no-llm-bf16 - 9.5GB (реалтайм на 3090, 9.00 it/s)
- 7b-exl-4bit + no-llm-nf4 - 7.3GB (nf4 в 1.5 раза медленнее)
- 1.5b-exl-8bit + no-llm-nf4 - 4.7GB

- exl3 кванты по скорости +- одинаковые. Но 4bit у меня чуть-чуть быстрее.
- nvidia 3060 всего на 20% процентов медленее чем 3090.

## Установка
Винда: flash-attention-2 + exllamav3 + мои ноды
Linux: только ноды


Под виндой компилировать трудно, поэтому вот ссылки на скомпилированные whl.
flash-attention-2 whl: https://huggingface.co/lldacing/flash-attention-windows-wheel/tree/main
моя exllamav3 whl: https://github.com/Mozer/exllamav3/releases/tag/v0.0.6

Узнать вашу версию питона, торча и куды можно в comfyui - меню - Help - about

Ниже я все ставлю на свой python 3.11, torch 2.6.0, cuda126. Для других версий, ищите сами по ссылкам выше (или компилируйте). Для flash-attention важно совпадение версии питона, торча и cuda. Для exllama главное, чтобы версия питона совпадала, на остальное - пофиг.

cd C:\DATA\SD\ComfyUI_windows_portable_nvidia\ComfyUI_windows_portable\python_embeded
python.exe -m pip install https://huggingface.co/lldacing/flash-attention-windows-wheel/resolve/main/flash_attn-2.7.4%2Bcu126torch2.6.0cxx11abiFALSE-cp311-cp311-win_amd64.whl

# exllamav3-v0.0.6 выбираем whl под свою версию питона (главное чтобы версия питона совпадала, на остальное пофиг):

# удаляем старую exllamav3, если она у вас есть:
python.exe -m pip uninstall exllamav3

# ставим мою exllamav3 (тут ссылка на 3.11 версию питона):
python.exe -m pip install https://github.com/Mozer/exllamav3/releases/download/v0.0.6/exllamav3-0.0.6+cu128.torch2.7.0-cp311-cp311-win_amd64.whl

python.exe -m pip install -U "triton-windows<3.5


После этого ставим мои ноды через comfyui manager - install via git url:
https://github.com/mozer/comfyUI-vibevoice-exl3
Либо через: cd ComfyUI/custom_nodes && git clone https://github.com/mozer/comfyUI-vibevoice-exl3
Перезапустить комфи.

## Воркфлоу

Воркфлоу с wav2lip (опционально): https://github.com/Mozer/ComfyUI-VibeVoice-exl3/blob/main/examples/vibevoice_exl3_with_wav2lip.json
Модельки качать вручную не надо. Но если сильно хочется, то они тут: https://huggingface.co/collections/tensorbanana/vibevoice-68cd1bac5766dc65e90380c1
Если вручную - изучите структуру папок: /models/vibevoice/models--tensorbanana--vibevoice-1.5b-exl3-8bit/snapshots/badfbb16dd63a1a8e633ba6eb138a21303ed1325/model.safetensors

- Грузить в ноду надо сразу 2 модельки, пример: VibeVoice-7B-no-llm-bf16 (3.2GB) + vibevoice-7b-exl3-4bit (4.4 GB).
- Если шум в аудио на выходе - снизьте значение negative_llm_steps_to_cache до 1-2 или совсем до 0 (как в оригинале, но будет медленнее). Чем длинее кусок - тем больше вероятность шума.
- Используйте split_by_newline:True для разбиения текста на куски по абзацам. Разбивать на куски по предложениям я не советую, интонация будет разная в каждом предложении.
6628🔥24👍7🤔2🤝2👏1🤣1
2025/10/16 22:31:42
Back to Top
HTML Embed Code: