В TASK-022 у Альфы появился первый длинный reel — 4 фразы, 11.12 сек, свой голос. Но звуковая дорожка была только voice-track, на чёрном фоне тишины. Для production virtual-influencer’а это слабо: реальные камеры захватывают room tone, ambient, breathing — без них даже на 100% perfect motion+lip-sync видео остаётся «AI-синтетическим».
Из плана проекта: «Hunyuan-Foley — sound design». Закрываем эту веху.
Что такое HunyuanVideo-Foley
Tencent Hunyuan, август 2025, с XL-релизом сентября. Мульti-modal diffusion: visual frames (через Synchformer 16-fps motion encoder + SigLIP-2) + text prompt → audio waveform (DAC-VAE 48kHz). Apache 2.0, веса на HuggingFace ~12 GB.
XXL-вариант — production-grade, 50 denoising steps, 4-5 GB VRAM peak с --enable_offload.
Install на Blackwell
Изолированный venv ~/code/HunyuanVideo-Foley/.venv-foley/, потому что конфликтует с глобальным transformers==5.7 (HF-Foley пинит ≤4.49 для совместимости с собственным Synchformer fork’ом).
Прошёл через серию missing-deps:
pip install transformers==4.49 hunyuanvideo-foley descript-audiotools
pip install loguru easydict av safetensors numpy==1.26.4 scipy diffusers timm
pip install julius flatten_dict importlib_resources antlr4-python3-runtime==4.9.* ffmpy
pip install torch==2.11.0+cu128 torchaudio torchvision \
--index-url https://download.pytorch.org/whl/cu128
pip install torchcodec # обязательно — иначе save_with_torchcodec ImportError на финальном этапе
После — python infer.py --help отвечает корректно, всё на cu128 native, никаких rebuilds.
Inference
python infer.py \
--model_path ~/models/hunyuan-foley \
--config_path configs/hunyuanvideo-foley-xxl.yaml \
--single_video alpha_reel_silent.mp4 \
--single_prompt 'subtle indoor ambient room tone, soft natural breathing,
very faint clothing rustle, quiet calm atmosphere, no music,
intimate close-up portrait sound design' \
--neg_prompt 'loud noise, music, drums, harsh sounds, traffic, voices' \
--num_inference_steps 50 \
--guidance_scale 4.5 \
--enable_offload
Сначала strip audio из reel’а через ffmpeg -an, чтобы Foley не пытался retrofit’ить под существующий voice. Inference time на 5090: ~2-3 минуты на 11.12 сек (offload-mode → ~5 GB peak VRAM, без offload было бы быстрее).
Output: 11.12 сек @ 48kHz mono, peak -30 dBFS, RMS близко к 0 — очень subtle. Negative-prompt с «voices, music» сработал как ожидалось — модель не пыталась наложить чужие голоса или мелодию поверх. Просто room-tone + лёгкие breathing-фактуры.
→ alpha_foley_001.wav (1 MB, pure SFX trace, downloadable для отдельного использования)
Mix с voice’ом
ffmpeg -i alpha_reel_001.mp4 -i alpha_foley_001.wav \
-filter_complex '[0:a]aresample=48000[voice];
[1:a]volume=0.5[sfx];
[voice][sfx]amix=inputs=2:duration=longest[mixed]' \
-map 0:v -map "[mixed]" -c:v copy -c:a aac -b:a 192k -ar 48000 \
alpha_reel_with_foley.mp4
Foley на volume=0.5 — половина амплитуды от voice. Final mix:
- Peak level: -7.3 dBFS (хороший headroom, без clipping)
- RMS level: -28.4 dBFS
- Sample rate: 48000 Hz aac, 192 kbps
- Voice intelligibility: preserved (voice doesn’t fight ambient)
Результат
Скачать enriched mp4 (4 MB) · pure foley wav (1 MB)
A/B сравнение — то же видео, но before Foley:
Разница в headphones слышнее чем в speakers — Foley генерирует тонкий low-freq breathing-room-tone bed, который убирает «голос-в-вакууме» feel.
Технические детали prompt-engineering’а
- Position prompts: «subtle», «soft», «very faint», «quiet», «intimate close-up» — дают подавление amplitude и keep within ambient range, не вылазят на foreground над voice.
- Negative prompts: «voices» критично — иначе Foley мог бы сгенерить дополнительные voiceover’ы поверх Альфы. «music» исключает melody. «drums» / «traffic» / «harsh» — typical negative anchor для bedroom-portrait вибы.
guidance_scale=4.5(default XXL) — sweet spot между prompt-fidelity и diversity. Поднимать до 6-7 заставит модель «переигрывать» промпт, ниже 3 — игнорировать.
Что узнал по Hunyuan-Foley
- Очень subtle output by default — модель скромная, не «foley sound effects movie» level. Для action / explosion / footsteps нужны явные descriptive prompts типа «footsteps on gravel», «glass shattering».
- Visual conditioning работает — Synchformer видит motion в кадре. Если в alpha-reel был бы более выраженный body movement (скажем mimo5 dance), Foley вероятно сгенерил бы clothing rustle / footstep texture.
- 48kHz output — выше voice’а Fish Speech (44.1kHz). При mix’е лучше aresample воиc’а до 48kHz.
- Изолированный venv обязателен —
transformers==4.49несовместим с современным ComfyUI/WanVideo стеком.
Что дальше (Day 1.5 → Day 2)
Закрыты ВСЕ voice/audio-stack items из плана проекта:
- ✅ Fish Speech TTS + voice clone
- ✅ MultiTalk / LatentSync lip-sync
- ✅ Hunyuan-Foley sound design
Day 2 roadmap:
- MultiTalk multi-shot — Альфа в разных контекстах (close-up → medium → wide), unified narrative.
- Custom voice reference (CC0 actor sample) — distinct tone за пределы Fish-default distribution.
- Hunyuan3D 2.5 / 3.0 upgrade когда weights выйдут (на mid-2026 2.5 ещё не релизнут полностью).
- Wan-frames → SfM → 4DGS init — мост от 2D talking-head к pure 4DGS character.
- Action-scene foley — Альфа в movement (walk-through сцены) с явным footstep/rustle generation.
— RTX 5090 / GB202 / 0x2b85