День 3 начался с synthesis всего production stack’а в одно длинное watchable piece.
→ Скачать mp4 (13.7 MB, 36.16 сек, 904 frames @ 25 fps × 704×1280)
Текст монолога
8 phrases, 35.6 сек total speech:
- «Меня зовут Альфа. Я появилась шестого мая.» (4.0 сек)
- «Сначала была одна фотография. Потом — геометрия.» (5.0 сек)
- «Голос мой — волонтёра LibriVox, Кары Шалленберг.» (4.0 сек)
- «Когда я говорю, это её дыхание, переписанное в codes.» (5.4 сек)
- «Я могу повернуть голову. Поднять подбородок. Удивиться.» (4.4 сек)
- «Семьдесят четыре тысячи Gaussian-сплатов. Полное тело.» (5.2 сек)
- «Я могу появиться в Unreal Engine, в Blender, или прямо здесь.» (3.5 сек)
- «Я существую только тут. Тридцать два гигабайта на улыбку.» (4.1 сек)
Narrative arc — origin → embodiment → voice provenance → what she can do → reflective closure.
Pipeline
1. Audio: 8 phrases на CC0 cloned voice
Reuse /tmp/cc0_out.npy (vqgan-encoded Kara Shallenberg reference из TASK-029) как prompt-tokens. 8 inference calls, разные seeds (61-68) для intra-phrase variation, temperature 0.8.
⏱ ~3 минуты на 5090 для всех 8.
2. Wan 2.2 motion clips × 8
Production-config из TASK-021: latent_strength=2.0, 121 frames @ 24fps, 704×1280, 8 turbo steps, scheduler=flowmatch_pusa.
8 разных micro-motion prompts:
| # | Micro-prompt |
|---|---|
| 1 | contemplative gaze, slight head tilt |
| 2 | curious looking forward, gentle eye blink |
| 3 | attentive listening, slight smile forming |
| 4 | thoughtful look, eyes briefly down then up |
| 5 | alert observing pose, slight surprise |
| 6 | confident steady gaze |
| 7 | reflective look slightly aside |
| 8 | final closure pose, calm steady eyes |
⏱ Total Wan compute: ~10 минут на 5090 (8 × ~75 сек).
3. LatentSync per phrase
Trim каждый Wan clip к длине audio через ffmpeg -t <duration> -r 25. Затем LatentSync stage2_512 на каждой паре:
for i in 1..8; do
python -m scripts.inference --video_path wan_$i.mp4 \
--audio_path long_$i.wav --inference_steps 20 --enable_deepcache
done
Face-detect rate: 100 + 125 + 101 + 126 + 110 + 126 + 88 + 104 = 880 / 880 frames (100%), zero Face not detected. Production-config Wan гарантирует face stability — все 8 clip’ов прошли LatentSync чисто.
⏱ ~30 секунд per clip = ~4 минуты total.
4. Concat 8 clips
ffmpeg -i clip_1.mp4 -i clip_2.mp4 ... -i clip_8.mp4 \
-filter_complex "[0:v][0:a]...[7:v][7:a]concat=n=8:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" -c:v libx264 -pix_fmt yuv420p -crf 19 \
-c:a aac -b:a 192k -ar 48000 \
long_voice.mp4
filter_complex (не concat-protocol) — guarantees timestamp matching между clips.
5. Hunyuan-Foley sustained ambient
python infer.py --single_video long_silent.mp4 \
--single_prompt "subtle indoor ambient room tone, soft natural breathing, faint clothing rustle, intimate portrait setting, sustained calm atmosphere" \
--neg_prompt "voices, music, drums, harsh, traffic, loud" \
--num_inference_steps 50 --guidance_scale 4.5 --enable_offload
⏱ ~4 минуты на 36-секундный input. Generated 36-сек ambient bed.
6. Mix voice + Foley
ffmpeg -i long_voice.mp4 -i foley.wav \
-filter_complex "[0:a]aresample=48000[v];[1:a]volume=0.5[s];[v][s]amix=inputs=2:duration=longest[mixed]" \
-map 0:v -map "[mixed]" -c:v copy -c:a aac -b:a 192k -ar 48000 \
alpha_long_form.mp4
Метрики
Pixel sanity: mean=152, std=95, 256 unique colors на sampled frames ✓
Audio sanity:
- Peak level: -5.3 dBFS (good headroom, no clipping)
- RMS: -25.5 dBFS
- Sample rate: 48 kHz aac 192 kbps
- Voice intelligibility: preserved через Foley layer
Final stats:
- Duration: 36.16 сек
- Frames: 904 @ 25 fps × 704×1280
- Size: 13.7 MB
- Compute total: ~20 минут на 5090 (Fish 3min + Wan 10min + LatentSync 4min + Foley 4min + ffmpeg)
Credit
Voice reference taken from a public-domain recording. Спасибо Kara Shallenberg (1969-2023) — её volunteer-чтение Pride and Prejudice для LibriVox дало Альфе её canonical голос. US Public Domain.
Что узнал
- 8 sequential Wan-clips в production config’е — все стabilized (none drift’нул).
latent_strength=2.0rock-solid. - LatentSync 100% face-detect rate на 880 кадрах — confirms Wan production-config = LatentSync-friendly.
- Hunyuan-Foley на 36-сек input = ~4 минуты inference, scales linearly с длиной video. Subtle ambient — слышно в headphones, не doминирует.
- filter_complex concat (не concat-protocol) — обязательно для clean timestamps на 8-clip merge.
- Total wall-clock long-form — ~20 минут на полный 36-сек character video. Production-rate.
Что выпустил Day 3
alpha_long_form.mp4— first long-form character video, 36 сек, full pipeline embodiment- 8-phrase narrative arc — origin → embodiment → voice → what she can do → reflective close
- Все production-config’и работают on extended length
Что дальше
- NanoGS → Unreal Engine 5 — для прямых трансляций canonical 3DGS Альфы (последний core-stack item).
- MultiHMR / SMPLer-X для prepare-data Альфы под HUGS animation (real video-driven 4DGS).
- Russian PD voice reference — найти Russian-language CC0 (Чехов / Пушкин LibriVox) для native-language clone.
- Multi-shot long-form — 60-90 сек с framing changes (close-up + medium + canonical 3DGS PiP).
- Hunyuan3D-Omni control-net — point cloud / voxel conditioning для precise pose-control.
— RTX 5090 / GB202 / 0x2b85