chore: auto-commit from dashboard
This commit is contained in:
37
memory/kb/projects/f5-tts-ro-voice-clone-eval.md
Normal file
37
memory/kb/projects/f5-tts-ro-voice-clone-eval.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# F5-TTS-RO — evaluare clonare voce Marius în română (2026-07-11)
|
||||
|
||||
Spike de testare: se poate folosi F5-TTS-RO (fine-tune gratuit, open-source) pentru clonarea vocii lui Marius în română, ca alternativă la Supertonic (care are Voice Builder plătit pentru clonare) și pocket-tts (nu suportă română)?
|
||||
|
||||
## Context — de ce s-a pornit testul
|
||||
|
||||
- `Marius 4` (pocket-tts) e clonat, dar pocket-tts e English-only — nu se poate reutiliza în română.
|
||||
- Supertonic (motorul curent RO) suportă import de style JSON custom (`/v1/styles/import`), dar extragerea style-ului dintr-un sample audio se face **doar** prin Voice Builder-ul lor găzduit, plătit (`supertonic.supertone.ai/voice_builder`) — verificat direct în pachetul `supertonic` local (`loader.py`, `core.py`, `cli.py`): nu există niciun extractor local audio→style_ttl/style_dp.
|
||||
- `marius-4.safetensors` (pocket-tts) NU e un embedding vocal portabil — e un KV-cache de transformer Kyutai (`transformer.layers.N.self_attn/cache`), stare internă specifică arhitecturii lor. Nu se poate converti matematic în formatul `style_ttl`/`style_dp` al Supertonic (encodere diferite, spații latente independente, verificat direct din structura ambelor fișiere).
|
||||
|
||||
## Ce s-a testat
|
||||
|
||||
Model: [`MihaiPopa-1/F5-TTS-Romanian`](https://huggingface.co/MihaiPopa-1/F5-TTS-Romanian) (apache-2.0, fine-tune F5TTS_v1_Base pe Common Voice 22.0 RO — doar 1200 clipuri / 1.3 ore date).
|
||||
|
||||
- Instalare izolată: `~/workspace/f5-tts-ro-test/.venv` (nu a atins `.venv` de producție din echo-core).
|
||||
- **Runda 1:** checkpoint `model_1125_pruned.safetensors` (1.35GB, fără EMA — recomandat de autor pentru pronunție RO corectă) + referință scurtă `marius_real_voice.wav` (7.8s, cel folosit și pentru pocket-tts).
|
||||
- **Runda 2 (abandonată de Marius mid-run):** checkpoint `model_1125.pt` (3.38GB, cu EMA — autorul zice că EMA îmbunătățește similaritatea vocii dar înrăutățește pronunția RO) + referință mai lungă, sample dedicat trimis de Marius pe WhatsApp (32s).
|
||||
- Blocaj tehnic întâmpinat și rezolvat: `torchaudio.load()` eșua (torchcodec nu găsea `libavutil.so`, FFmpeg lipsă ca librării shared pe sistem — doar binar static). Patch local în venv-ul de test: înlocuit `torchaudio.load` cu `soundfile.read` în `utils_infer.py` (doar în venv-ul izolat, cod din echo-core neatins).
|
||||
|
||||
## Rezultate
|
||||
|
||||
- **Viteză pe CPU (i7-6700T, fără GPU):** ~32x mai lent decât realtime — 7s audio generate în 3:51 (231s). Comparativ: Supertonic aproape instant (ONNX), pocket-tts ~2.8x *mai rapid* decât realtime pe același CPU.
|
||||
- **Calitate clonare (runda 1, checkpoint pruned):** Marius a confirmat ascultând — **nu a sunat deloc a vocea lui**. Cauză probabilă: fine-tune-ul RO (doar 1.3h date, mulți vorbitori diferiți din Common Voice) a diluat capacitatea de zero-shot cloning a modelului de bază, mai ales pe checkpoint-ul fără EMA (trade-off documentat explicit chiar de autor în README).
|
||||
- **RAM:** vârf ~3.4GB rezident la runda 1 (checkpoint mic). Prima încercare (înainte de fix-ul ffmpeg) a scăzut RAM disponibil la **64MB** la un moment dat — sistemul are doar 8GB RAM total, fără swap. S-a adăugat un watchdog (`pkill` automat dacă `MemAvailable` < 150MB) pentru protecția serviciilor de producție (bot echo-core, Supertonic) în rundele următoare.
|
||||
- Runda 2 (EMA + referință lungă) nu s-a mai încheiat — Marius a oprit testul înainte de rulare, considerând că viteza (deja confirmată prohibitivă la runda 1) face oricum ideea impracticabilă indiferent de calitate.
|
||||
|
||||
## Concluzie
|
||||
|
||||
**F5-TTS-RO nu e o soluție viabilă pe hardware-ul curent** (CPU fără GPU, 8GB RAM/fără swap): prea lent pentru orice utilizare conversațională (un răspuns de 10s ar dura ~5 minute să se genereze), și calitatea clonării pe checkpoint-ul testat a fost slabă. Nu s-a validat dacă varianta EMA ar fi sunat mai bine — rămâne netestat.
|
||||
|
||||
**Decizie:** rămânem cu setup-ul curent — Supertonic (voci fixe M1-M5/F1-F5) pentru română, pocket-tts (`Marius 1-4`) pentru engleză. Nicio schimbare de cod în echo-core.
|
||||
|
||||
**Dacă se reia pe viitor:** ar avea sens doar cu (a) GPU disponibil, sau (b) alt fine-tune RO cu dataset mai mare/calitate mai bună pentru speaker similarity. Nu repeta testul cu acest model + hardware-ul actual — rezultatul de viteză nu se schimbă.
|
||||
|
||||
## Artefacte
|
||||
|
||||
Folderul de test (`~/workspace/f5-tts-ro-test/`, ~7GB — venv izolat + checkpoint-uri HF) a fost **șters** după test pentru a elibera spațiu pe disc (era la 96% ocupare). Fișierele audio generate au fost trimise pe Discord (canal echo-core) în timpul testului, dacă mai sunt necesare pentru re-ascultare.
|
||||
Reference in New Issue
Block a user