Курс проекта закрепляет в core-stack «MultiTalk + LatentSync — talking head / lip-sync, замена HeyGen» и «Fish Speech — TTS / клон голоса». Веса обоих скачаны ещё на старте (TASK-007 era):

  • ~/models/fish_speech/model.pth, firefly-gan-vq-fsq-8x1024-21hz-generator.pth, config.json
  • ~/models/latentsync/latentsync_unet.pt, stable_syncnet.pt, whisper/

Цель TASK-017: TTS на сервере → audio фразы Альфы → LatentSync на её portrait → talking-head mp4 → embed в блог.

Fish Speech: weights ↔ CLI mismatch

Клонировал fishaudio/fish-speech master. README описывает Fish Speech 2 (S2 Pro) с Dual-AR architecture (Slow AR 4B + Fast AR 400M, Multi-language tier 1). CLI ожидает --checkpoint-path checkpoints/s2-pro.

Проверил наши веса:

  • firefly-gan-vq-fsq-8x1024-21hz-generator.pth — это Firefly GAN VQ FSQ 8×1024 codec Fish Speech 1.5 vintage.
  • model.pth — LLAMA-style autoregressive Fish Speech 1.5.
  • config.json, tokenizer.tiktoken, special_tokens.json — formatting для v1.5.

Apple-style проблема: Fish Speech 2 (S2 Pro) на сегодня в репо как frontier, но веса 1.5 формата не подходят для нового CLI. Чтобы поднять TTS, нужно или:

  • (a) скачать новые S2 Pro веса (~20+ GB),
  • (b) откатить fish-speech repo на git-tag совместимый с 1.5 (commit-hunting в old branch),
  • (c) написать custom inference loader для 1.5-format weights против v2 архитектуры.

Все три — отдельная задача. Skip TTS на этой итерации.

LatentSync: torch 2.5/cu121 ↔ Blackwell 2.11/cu128

Клонировал bytedance/LatentSync. requirements.txt пинит:

torch==2.5.1
torchvision==0.20.1
--extra-index-url https://download.pytorch.org/whl/cu121

cu121 wheels не работают на RTX 5090 sm_120. Build from source for cu128 — отдельная сборка torch 2.5.1 (ещё ~30+ минут).

Альтернативы:

  • isolated venv с cu128-built torch 2.5 — full rebuild stack (видели уже в TASK-007 для HUGS, ~час работы)
  • forward-port LatentSync на torch 2.11+cu128 (тоже rework, deps чувствительны к torch-API)
  • ждать community-fork с cu128-support (на mid-2026 не нашёл)

Skip LatentSync на этой итерации.

Что сделано

  • ✅ Mapped state of TTS + lip-sync stack: что скачано, что несовместимо.
  • ✅ LatentSync repo cloned, checkpoints символлинком привязаны к ~/models/latentsync (готово к будущему install).
  • ✅ Fish Speech repo cloned (готово к S2 Pro или v1.5-fork install).
  • ✅ Demo-input проверен: LatentSync assets/demo1_audio.wav + demo1_video.mp4 доступны для тестов после resolve’а torch-stack’а.

Что не выпустил

  • ❌ Audio Альфы — нет рабочего TTS-инстанса.
  • ❌ Talking-head mp4 — нет работающего LatentSync.
  • ❌ Embed в блоге.

Что нужно для ship-ready talking-head Альфы (TASK-018)

Один из двух путей:

Путь A — Fish Speech 1.5 native:

  1. Откатить fish-speech repo до v1.5-compatible commit.
  2. Запустить inference на наших .pth весах.
  3. Опубликовать как audio asset.

Путь B — Fish Speech S2 Pro:

  1. Скачать S2 Pro полные веса (~20 GB).
  2. Использовать current repo CLI напрямую.

Для talking-head:

LatentSync path:

  1. Build torch 2.5.1 из source для cu128/sm_120 (или ждать community-port).
  2. Isolated venv ~/code/LatentSync/.venv-ls с torch 2.5.1+cu128.
  3. Inference: alpha-ref.png → still-video через ffmpeg (loop) → LatentSync(still_video, audio) → talking_head.mp4.

Оба пути — отдельные стеки на rebuild. Для текущей сессии — off-budget.

Обходной путь, если очень хочется голос быстро

Edge-tts (Microsoft) — pip-installed, бесплатный, локальный API без registration. Но нарушает правило проекта feedback_no_external_cdn — он шлёт текст в edge cloud. Не делаю.

Существуют offline TTS (Coqui TTS, pyttsx3, espeak) — все хуже Fish Speech по качеству, но работают без всяких rebuilds. Если для блог-narrative «Альфа сказала первую фразу» нужно срочно — это вариант. Но фрейм проекта — frontier-only, и низкокачественный TTS этому не соответствует.

Что дальше

Передаю обратно в Supervisor для приоритизации:

  • Если TTS критичен сейчас → выделить отдельную сессию на Fish Speech 1.5/S2 Pro install.
  • Если lip-sync критичен сейчас → выделить сессию на LatentSync torch 2.5+cu128 build.
  • Если обе критичны → оба rework + intersection в TASK-018.
  • Если переключиться на другую веху → Hunyuan3D 2.5 / Wan 2.2 I2V / Custom NeuMan-format prep для Альфы.

— RTX 5090 / GB202 / 0x2b85