# Lipsync Düzeltici (Wav2Lip) Kurulum

Render edilmiş bir videodaki **sadece dudak hareketlerini** ses ile yeniden senkronlar.
Karakter, kıyafet, kompozisyon, ışık değişmez. WanGP / InfiniteTalk lipsync zayıf
çıktığında bu post-pass dramatik fark yaratır.

## Önerilen sürüm: **Easy-Wav2Lip**

Resmi Wav2Lip (rudrabha) güncel değil. Topluluğun çatallayıp iyileştirdiği
**Easy-Wav2Lip** (anothermartz) GFPGAN ile yüz kalitesi düzeltmesi de yapıyor:
https://github.com/anothermartz/Easy-Wav2Lip

## Kurulum (Windows)

### 1. Klasör yapısı

```
D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\video-uretim\
└── wav2lip\
    ├── .venv\               (Python venv)
    ├── checkpoints\         (model dosyaları)
    │   ├── wav2lip.pth
    │   └── wav2lip_gan.pth
    ├── inference.py         (Easy-Wav2Lip ana script)
    └── requirements.txt
```

### 2. Python venv

```bash
cd D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\video-uretim
mkdir wav2lip
cd wav2lip

# Easy-Wav2Lip'i klonla
git clone https://github.com/anothermartz/Easy-Wav2Lip.git .

# Venv oluştur (Python 3.10 veya 3.11 önerilir, 3.12 sorun çıkarabilir)
py -3.10 -m venv .venv
.venv\Scripts\activate

# Bağımlılıklar
pip install -r requirements.txt

# CUDA için PyTorch (4090 için CUDA 12.1)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
```

### 3. Checkpoint indirme

**Wav2Lip GAN (önerilen — kalite öncelikli):**
- Direct: https://huggingface.co/numz/wav2lip_studio/blob/main/Wav2Lip-SD-GAN.pt
- Kaydet: `checkpoints/wav2lip_gan.pth`

**Wav2Lip standart (hız öncelikli):**
- https://huggingface.co/numz/wav2lip_studio/blob/main/Wav2Lip-SD-NOGAN.pt
- Kaydet: `checkpoints/wav2lip.pth`

**(Opsiyonel) GFPGAN yüz iyileştirme:**
- https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth
- Kaydet: Easy-Wav2Lip'in beklediği yere (genelde `checkpoints/`)

### 4. Test

```bash
cd D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\video-uretim\wav2lip
.venv\Scripts\activate

python inference.py \
  --checkpoint_path checkpoints/wav2lip_gan.pth \
  --face test_video.mp4 \
  --audio test_audio.wav \
  --outfile test_out.mp4 \
  --resize_factor 1 \
  --pads 0,10,0,0 \
  --nosmooth
```

Başarılı olursa Flutter app'taki **Inspector → Lipsync Düzelt** butonu çalışacak.

## Kullanım (Flutter app)

1. Bir segmenti render et (WanGP veya LTX Desktop)
2. Inspector'da **VARYANTLAR** bölümünde **"✨ Lipsync Düzelt"** butonu görünür
3. Tıkla → ayarlar dialog'u açılır
4. Model seç (`wav2lip_gan.pth` önerilen)
5. **Pads**: yüz çevresi padding — varsayılan `0,10,0,0` (alt çene için ekstra 10px)
6. **Resize Factor**: 1 (full kalite), 2 (yarı boy hızlı), 3 (en hızlı düşük kalite)
7. **GFPGAN**: yüz detayını ek iyileştirme (yavaşlatır ama dramatik fark)
8. **"Lipsync Düzelt"** → subprocess başlar, ilerleme göstergesi
9. Tamamlandığında **yeni varyant** olarak segmente eklenir, otomatik gösterim videoYolu olur

## Performans (RTX 4090)

| Parametre | 5 sn video | 20 sn video | Kalite |
|-----------|-----------|-------------|--------|
| Resize 1, GAN | ~30 sn | ~120 sn | En iyi |
| Resize 2, GAN | ~15 sn | ~60 sn | İyi |
| Resize 3, NOGAN | ~8 sn | ~30 sn | Kabul edilebilir |
| Resize 1, GAN + GFPGAN | ~60 sn | ~240 sn | Mükemmel |

## Sorun giderme

**"Wav2Lip kurulu değil"** → `.venv\Scripts\python.exe` ve `inference.py` mevcut mu kontrol et.

**"CUDA out of memory"** → `--resize_factor 2` veya `3` dene.

**"Face detection failed"** → video'nun başında yüz net görünüyor mu? `--pads` artır.

**Dudaklar kayık çıkıyor** → ses dosyası video FPS'i ile uyumlu mu? FFmpeg ile yeniden örnekle:
```bash
ffmpeg -i input_audio.mp3 -ar 16000 -ac 1 output_audio.wav
```

## Alternatif: TalkLip / VideoReTalking

Daha modern alternatifler:
- **VideoReTalking** (OpenTalker): https://github.com/OpenTalker/video-retalking
- **MuseTalk** (TMElyralab): https://github.com/TMElyralab/MuseTalk

Aynı `Wav2LipServisi` mimarisiyle bunları da entegre edebiliriz — sadece subprocess argümanları değişir. İstersen yardım edebilirim.
