Compare commits
3 Commits
b373f915b5
...
4f494daffb
| Author | SHA1 | Date |
|---|---|---|
|
|
4f494daffb | |
|
|
958c8d6fc6 | |
|
|
5ba89c7191 |
27
README.md
27
README.md
|
|
@ -650,6 +650,33 @@ In der Diagnostic unter Einstellungen → Sprachausgabe:
|
||||||
> **Tipp:** Fuer beste Ergebnisse: saubere Aufnahme, eine Stimme, kein Hintergrund,
|
> **Tipp:** Fuer beste Ergebnisse: saubere Aufnahme, eine Stimme, kein Hintergrund,
|
||||||
> 10-30 Sekunden Gesamtlaenge. Mehrere kurze Dateien werden zusammengefuegt.
|
> 10-30 Sekunden Gesamtlaenge. Mehrere kurze Dateien werden zusammengefuegt.
|
||||||
|
|
||||||
|
### Deutsches Fine-Tune (bessere Qualitaet auf Deutsch)
|
||||||
|
|
||||||
|
Das Default-Modell `F5TTS_v1_Base` ist primaer auf Englisch + Chinesisch trainiert
|
||||||
|
und liefert auf Deutsch merklich schwaechere Voice-Cloning-Qualitaet als XTTS es
|
||||||
|
tat. Community-Fine-Tune von [aihpi](https://huggingface.co/aihpi/F5-TTS-German)
|
||||||
|
auf dem Emilia-Dataset + Common Voice 19.0 funktioniert deutlich besser.
|
||||||
|
|
||||||
|
**Konfiguration ueber Diagnostic → "F5-TTS Modell-Tuning (advanced)":**
|
||||||
|
|
||||||
|
| Feld | Wert |
|
||||||
|
|------|------|
|
||||||
|
| Modell-Architektur | `F5TTS_Base` *(nicht v1_Base! Fine-Tune basiert auf der alten Architektur)* |
|
||||||
|
| Custom Checkpoint | `hf://aihpi/F5-TTS-German/F5TTS_Base/model_365000.safetensors` |
|
||||||
|
| Custom Vocab | `hf://aihpi/F5-TTS-German/vocab.txt` |
|
||||||
|
| cfg_strength | `2.0` |
|
||||||
|
| nfe_step | `32` |
|
||||||
|
|
||||||
|
→ "Anwenden" klicken. Die `hf://`-Pfade werden einmalig automatisch runter-
|
||||||
|
geladen (~3-5GB, landet im `xtts/hf-cache/`) und bei Container-Restart aus
|
||||||
|
dem Cache wiederverwendet.
|
||||||
|
|
||||||
|
> **Warnung zur BigVGAN-Variante** (`F5TTS_Base_bigvgan/model_295000.safetensors`):
|
||||||
|
> funktioniert AKTUELL NICHT mit dieser Bridge. Die f5-tts Library laedt
|
||||||
|
> per Default den Vocos-Vocoder, die BigVGAN-Weights sind damit inkompatibel
|
||||||
|
> → Modell produziert NaN, App bleibt stumm. Nur die **Vocos-Variante
|
||||||
|
> (F5TTS_Base/model_365000.safetensors)** nutzen.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Docker Volumes
|
## Docker Volumes
|
||||||
|
|
|
||||||
|
|
@ -268,7 +268,15 @@ def split_sentences(text: str, max_len: int = 350) -> list[str]:
|
||||||
|
|
||||||
|
|
||||||
def float_to_pcm16(wav: np.ndarray) -> bytes:
|
def float_to_pcm16(wav: np.ndarray) -> bytes:
|
||||||
"""Float32 (-1..+1) → int16 little-endian bytes."""
|
"""Float32 (-1..+1) → int16 little-endian bytes.
|
||||||
|
|
||||||
|
F5-TTS generiert gelegentlich NaN/Inf bei Instabilitaeten — ohne sanitize
|
||||||
|
waere der Cast zu int16 undefiniert (RuntimeWarning + kaputter Sound).
|
||||||
|
"""
|
||||||
|
nan_count = int(np.isnan(wav).sum() + np.isinf(wav).sum())
|
||||||
|
if nan_count > 0:
|
||||||
|
logger.warning("F5-TTS Output enthaelt %d NaN/Inf samples — ersetze mit 0", nan_count)
|
||||||
|
wav = np.nan_to_num(wav, nan=0.0, posinf=1.0, neginf=-1.0)
|
||||||
wav = np.clip(wav, -1.0, 1.0)
|
wav = np.clip(wav, -1.0, 1.0)
|
||||||
pcm = (wav * 32767.0).astype(np.int16)
|
pcm = (wav * 32767.0).astype(np.int16)
|
||||||
return pcm.tobytes()
|
return pcm.tobytes()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue