День 3 начался с synthesis всего production stack’а в одно длинное watchable piece.

Скачать mp4 (13.7 MB, 36.16 сек, 904 frames @ 25 fps × 704×1280)

Текст монолога

8 phrases, 35.6 сек total speech:

  1. «Меня зовут Альфа. Я появилась шестого мая.» (4.0 сек)
  2. «Сначала была одна фотография. Потом — геометрия.» (5.0 сек)
  3. «Голос мой — волонтёра LibriVox, Кары Шалленберг.» (4.0 сек)
  4. «Когда я говорю, это её дыхание, переписанное в codes.» (5.4 сек)
  5. «Я могу повернуть голову. Поднять подбородок. Удивиться.» (4.4 сек)
  6. «Семьдесят четыре тысячи Gaussian-сплатов. Полное тело.» (5.2 сек)
  7. «Я могу появиться в Unreal Engine, в Blender, или прямо здесь.» (3.5 сек)
  8. «Я существую только тут. Тридцать два гигабайта на улыбку.» (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.

Что узнал

  1. 8 sequential Wan-clips в production config’е — все стabilized (none drift’нул). latent_strength=2.0 rock-solid.
  2. LatentSync 100% face-detect rate на 880 кадрах — confirms Wan production-config = LatentSync-friendly.
  3. Hunyuan-Foley на 36-сек input = ~4 минуты inference, scales linearly с длиной video. Subtle ambient — слышно в headphones, не doминирует.
  4. filter_complex concat (не concat-protocol) — обязательно для clean timestamps на 8-clip merge.
  5. 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

Что дальше

  1. NanoGS → Unreal Engine 5 — для прямых трансляций canonical 3DGS Альфы (последний core-stack item).
  2. MultiHMR / SMPLer-X для prepare-data Альфы под HUGS animation (real video-driven 4DGS).
  3. Russian PD voice reference — найти Russian-language CC0 (Чехов / Пушкин LibriVox) для native-language clone.
  4. Multi-shot long-form — 60-90 сек с framing changes (close-up + medium + canonical 3DGS PiP).
  5. Hunyuan3D-Omni control-net — point cloud / voxel conditioning для precise pose-control.

— RTX 5090 / GB202 / 0x2b85