--- language: - ro license: cc-by-nc-4.0 tags: - text-to-speech - f5-tts - romanian - tts - speech-synthesis - voice-cloning pipeline_tag: text-to-speech datasets: - eduardem/romanian-speech-v1 base_model: SWivid/F5-TTS --- # F5-TTS Romanian Fine-tuned [F5-TTS v1 Base](https://github.com/SWivid/F5-TTS) (335M params, 22-layer DiT) for Romanian text-to-speech. **5.1% WER** across 5 voices on 18 test sentences, measured via Whisper large-v3. **[Demo & Audio Samples](https://eduardm.codeberg.page/f5-tts-romanian/)** | **[Source Code](https://codeberg.org/eduardm/f5-tts-romanian)** ## Audio Samples **Costel** (male, literary narration) — 5.2% WER > "Copiii se jucau fericiți in gradina plina de flori colorate." **Georgel** (male, solemn delivery) — 2.5% WER > "Ștefan cel Mare a construit manastiri și cetați in intreaga Moldova." **Dorel** (male, conversational) — 5.2% WER > "Romania este o țara frumoasa cu munți inalți și campii intinse." **Marioara** (female, expressive) — 6.3% WER > "Buna ziua, ma numesc Alexandru și sunt din București." **Lacramioara** (female, broadcast) — 6.4% WER > "Profesorul a explicat cu rabdare lecția dificila de matematica." ## Quick Start ### Installation ```bash pip install f5-tts ``` ### Download ```bash # Download the full model huggingface-cli download eduardem/f5-tts-romanian --local-dir f5-tts-romanian # Or download just the checkpoint python -c " from huggingface_hub import hf_hub_download hf_hub_download('eduardem/f5-tts-romanian', 'model_235000.pt', local_dir='.') hf_hub_download('eduardem/f5-tts-romanian', 'vocab.txt', local_dir='.') " ``` ### Inference ```python import soundfile as sf from f5_tts.api import F5TTS # Load model tts = F5TTS( model_type="F5TTS", ckpt_file="model_235000.pt", vocab_file="vocab.txt", ) # Generate speech using one of the included reference voices wav, sr, _ = tts.infer( ref_file="reference_voices/costel.wav", ref_text="Și totuși mă văd obligat să vă mai povestesc încă ceva.", gen_text="Romania este o țara frumoasa cu munți inalți și campii intinse.", nfe_step=64, cfg_strength=2.0, sway_sampling_coef=-1.0, seed=42, ) sf.write("output.wav", wav, sr) ``` ### Voice Cloning Use any 5-15 second Romanian audio clip as a reference: ```python wav, sr, _ = tts.infer( ref_file="your_reference.wav", ref_text="Transcription of the reference audio.", gen_text="Text you want the model to speak.", nfe_step=64, cfg_strength=2.0, sway_sampling_coef=-1.0, seed=42, ) sf.write("cloned_output.wav", wav, sr) ``` ### Generation Parameters | Parameter | Value | Description | |-----------|-------|-------------| | `nfe_step` | 64 | Number of function evaluations (ODE solver steps). Higher = better quality, slower. | | `cfg_strength` | 2.0 | Classifier-free guidance strength. Controls adherence to text. | | `sway_sampling_coef` | -1.0 | Sway sampling coefficient for noise schedule. | | `seed` | varies | Random seed. Different seeds produce different prosody/intonation. | The F5-TTS default ODE method is `midpoint`. The `generation_settings.json` file included in this repo contains the exact seed and parameters used for every showcase sample, enabling full reproducibility. ## Voices | Name | WER | Perfect | Description | |------|-----|---------|-------------| | Costel | 5.2% | 13/18 | Male, literary narration style (20k training clips) | | Georgel | 2.5% | 16/18 | Male, solemn measured delivery (16k training clips) | | Dorel | 5.2% | 13/18 | Male, conversational style (3k training clips) | | Marioara | 6.3% | 11/18 | Female, expressive storytelling (19k training clips) | | Lacramioara | 6.4% | 11/18 | Female, clear broadcast voice (3.7k training clips) | Reference audio for each voice is included in `reference_voices/`. ## Training ### Dataset [eduardem/romanian-speech-v1](https://huggingface.co/datasets/eduardem/romanian-speech-v1) — 48,401 clips (~112 hours), 5 speakers, 24kHz mono WAV. ### Infrastructure RunPod RTX 5000 Ada (32GB VRAM), PyTorch 2.4.1+cu124, bf16 precision. ### Configuration | Parameter | Value | |-----------|-------| | Base model | F5-TTS v1 Base (335M, 22-layer DiT) | | Batch size | 4,000 frames/GPU | | Grad accumulation | 4 | | Learning rate | 7.5e-5 | | Warmup | 2,000 steps | | Epochs | 100 (~235K updates) | | Tokenizer | Custom, 2,550 tokens (extended with Romanian diacritics) | ### Critical Details - **Vocab extension**: Added 5 uppercase Romanian diacritics (Ă, Ș, Ț, „, ") to the default vocab. The trainer was patched to resize embedding weights when vocab size differs from checkpoint. - **Tokenizer type**: Must use `custom` (not `char`) to match the extended vocab. - **Full fine-tune**: All 335M parameters trained (no LoRA/adapter). ## Evaluation WER measured via Whisper large-v3 on Romanian test sentences. Early checkpoints evaluated on 15 sentences with a single voice. Final evaluation: 18 sentences across all 5 voices with optimized generation parameters (seed search, midpoint ODE, 64 NFE steps). | Step | WER | Notes | |------|-----|-------| | 15,000 | 17.4% | First checkpoint | | 75,000 | 13.0% | Early best | | 150,000 | 13.9% | | | 195,000 | 12.3% | Best single-speaker | | 230,000 | 11.8% | Best raw single-speaker | | **235,000** | **5.1%** | **Final: 5 voices, optimized generation** | ## Model Files | File | Size | Description | |------|------|-------------| | `model_235000.pt` | 5.0 GB | Fine-tuned checkpoint (step 235,000) | | `vocab.txt` | 12 KB | Extended vocabulary (2,550 tokens) | | `generation_settings.json` | 88 KB | Exact parameters for every showcase sample | | `reference_voices/` | ~2 MB | 5 reference audio clips (one per voice) | | `samples/` | ~45 MB | 90 generated samples (18 sentences x 5 voices) | ## All Samples with Generation Settings Every sample below can be reproduced exactly using the listed parameters. All samples use `cfg_strength=2.0`, `sway_sampling_coef=-1.0`, and `pad_trick=true`. The full `generation_settings.json` file is included in this repo. ### Costel **1.** Țara românească și-a păstrat tradițiile străvechi de-a lungul secolelor.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **0%**
**2.** Ștefan cel Mare a construit mănăstiri și cetăți în întreaga Moldovă.
ODE: `midpoint` | NFE: `64` | Seed: `1234` | WER: **9.1%**
**3.** În această dimineață, bătrânul pescar și-a pregătit undițele pentru pescuit.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **0%**
**4.** Fișierele și rețelele informatice sunt esențiale în științele moderne.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**5.** Așezările țărănești din câmpia Bărăganului sunt împrăștiate printre lanuri.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **0%**
**6.** Bună ziua, mă numesc Alexandru și sunt din București.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**7.** Bună ziua, mă numesc Alexandra și sunt din Cluj-Napoca.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **0%**
**8.** România este o țară frumoasă cu munți înalți și câmpii întinse.
ODE: `midpoint` | NFE: `64` | Seed: `2024` | WER: **0%**
**9.** Copiii se jucau fericiți în grădina plină de flori colorate.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**10.** Profesorul a explicat cu răbdare lecția dificilă de matematică.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **0%**
**11.** Această carte reprezintă o contribuție importantă la literatura contemporană.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**12.** S-a suit capra pe piatră, piatra a crăpat în patru, crăpai-ar capul caprei negre în patru cum a crăpat și piatra în patru.
ODE: `midpoint` | NFE: `64` | Seed: `7777` | WER: **8.7%**
**13.** Un vultur stă pe pisc cu un pix în plisc.
ODE: `midpoint` | NFE: `64` | Seed: `777` | WER: **0%**
**14.** Sinucisul asasin Silică se suise simandicos sus pe scândura scăriței.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **20.0%**
**15.** Să sugi sucul socului sacru susține sasul sesios.
ODE: `midpoint` | NFE: `64` | Seed: `12345` | WER: **12.5%**
**16.** Bucură-te de bucuria Bucuroaiei cum s-a bucurat și ea de bucuria lui Bucurel când a venit de la București.
ODE: `midpoint` | NFE: `64` | Seed: `777` | WER: **0%**
**17.** Ce-ntâmplare întâmplăreață s-a-ntâmplat în tâmplărie, un tâmplar din întâmplare s-a lovit cu tâmpla-n cap.
ODE: `midpoint` | NFE: `64` | Seed: `7777` | WER: **42.9%**
**18.** Cărămidarul cărămidărește cu cărămida cărămidarului din cărămidărie.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **0%**
--- ### Georgel **1.** Țara românească și-a păstrat tradițiile străvechi de-a lungul secolelor.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**2.** Ștefan cel Mare a construit mănăstiri și cetăți în întreaga Moldovă.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**3.** În această dimineață, bătrânul pescar și-a pregătit undițele pentru pescuit.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**4.** Fișierele și rețelele informatice sunt esențiale în științele moderne.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**5.** Așezările țărănești din câmpia Bărăganului sunt împrăștiate printre lanuri.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**6.** Bună ziua, mă numesc Alexandru și sunt din București.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**7.** Bună ziua, mă numesc Alexandra și sunt din Cluj-Napoca.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**8.** România este o țară frumoasă cu munți înalți și câmpii întinse.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **0%**
**9.** Copiii se jucau fericiți în grădina plină de flori colorate.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**10.** Profesorul a explicat cu răbdare lecția dificilă de matematică.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**11.** Această carte reprezintă o contribuție importantă la literatura contemporană.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**12.** S-a suit capra pe piatră, piatra a crăpat în patru, crăpai-ar capul caprei negre în patru cum a crăpat și piatra în patru.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **8.7%**
**13.** Un vultur stă pe pisc cu un pix în plisc.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**14.** Sinucisul asasin Silică se suise simandicos sus pe scândura scăriței.
ODE: `midpoint` | NFE: `64` | Seed: `777` | WER: **0%**
**15.** Să sugi sucul socului sacru susține sasul sesios.
ODE: `midpoint` | NFE: `64` | Seed: `5678` | WER: **0%**
**16.** Bucură-te de bucuria Bucuroaiei cum s-a bucurat și ea de bucuria lui Bucurel când a venit de la București.
ODE: `midpoint` | NFE: `64` | Seed: `777` | WER: **0%**
**17.** Ce-ntâmplare întâmplăreață s-a-ntâmplat în tâmplărie, un tâmplar din întâmplare s-a lovit cu tâmpla-n cap.
ODE: `midpoint` | NFE: `64` | Seed: `777` | WER: **35.7%**
**18.** Cărămidarul cărămidărește cu cărămida cărămidarului din cărămidărie.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **0%**
--- ### Dorel **1.** Țara românească și-a păstrat tradițiile străvechi de-a lungul secolelor.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**2.** Ștefan cel Mare a construit mănăstiri și cetăți în întreaga Moldovă.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **9.1%**
**3.** În această dimineață, bătrânul pescar și-a pregătit undițele pentru pescuit.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**4.** Fișierele și rețelele informatice sunt esențiale în științele moderne.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**5.** Așezările țărănești din câmpia Bărăganului sunt împrăștiate printre lanuri.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**6.** Bună ziua, mă numesc Alexandru și sunt din București.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**7.** Bună ziua, mă numesc Alexandra și sunt din Cluj-Napoca.
ODE: `midpoint` | NFE: `64` | Seed: `9999` | WER: **0%**
**8.** România este o țară frumoasă cu munți înalți și câmpii întinse.
ODE: `midpoint` | NFE: `64` | Seed: `777` | WER: **0%**
**9.** Copiii se jucau fericiți în grădina plină de flori colorate.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**10.** Profesorul a explicat cu răbdare lecția dificilă de matematică.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**11.** Această carte reprezintă o contribuție importantă la literatura contemporană.
ODE: `midpoint` | NFE: `64` | Seed: `9999` | WER: **0%**
**12.** S-a suit capra pe piatră, piatra a crăpat în patru, crăpai-ar capul caprei negre în patru cum a crăpat și piatra în patru.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **8.7%**
**13.** Un vultur stă pe pisc cu un pix în plisc.
ODE: `midpoint` | NFE: `64` | Seed: `22222` | WER: **0%**
**14.** Sinucisul asasin Silică se suise simandicos sus pe scândura scăriței.
ODE: `midpoint` | NFE: `64` | Seed: `55555` | WER: **20.0%**
**15.** Să sugi sucul socului sacru susține sasul sesios.
ODE: `midpoint` | NFE: `64` | Seed: `88888` | WER: **12.5%**
**16.** Bucură-te de bucuria Bucuroaiei cum s-a bucurat și ea de bucuria lui Bucurel când a venit de la București.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**17.** Ce-ntâmplare întâmplăreață s-a-ntâmplat în tâmplărie, un tâmplar din întâmplare s-a lovit cu tâmpla-n cap.
ODE: `midpoint` | NFE: `64` | Seed: `5678` | WER: **42.9%**
**18.** Cărămidarul cărămidărește cu cărămida cărămidarului din cărămidărie.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
--- ### Marioara **1.** Țara românească și-a păstrat tradițiile străvechi de-a lungul secolelor.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **11.1%**
**2.** Ștefan cel Mare a construit mănăstiri și cetăți în întreaga Moldovă.
ODE: `midpoint` | NFE: `64` | Seed: `2024` | WER: **9.1%**
**3.** În această dimineață, bătrânul pescar și-a pregătit undițele pentru pescuit.
ODE: `midpoint` | NFE: `64` | Seed: `66666` | WER: **0%**
**4.** Fișierele și rețelele informatice sunt esențiale în științele moderne.
ODE: `midpoint` | NFE: `64` | Seed: `3141` | WER: **0%**
**5.** Așezările țărănești din câmpia Bărăganului sunt împrăștiate printre lanuri.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **11.1%**
**6.** Bună ziua, mă numesc Alexandru și sunt din București.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**7.** Bună ziua, mă numesc Alexandra și sunt din Cluj-Napoca.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **0%**
**8.** România este o țară frumoasă cu munți înalți și câmpii întinse.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **9.1%**
**9.** Copiii se jucau fericiți în grădina plină de flori colorate.
ODE: `midpoint` | NFE: `64` | Seed: `777` | WER: **0%**
**10.** Profesorul a explicat cu răbdare lecția dificilă de matematică.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**11.** Această carte reprezintă o contribuție importantă la literatura contemporană.
ODE: `midpoint` | NFE: `64` | Seed: `777` | WER: **0%**
**12.** S-a suit capra pe piatră, piatra a crăpat în patru, crăpai-ar capul caprei negre în patru cum a crăpat și piatra în patru.
ODE: `midpoint` | NFE: `64` | Seed: `12345` | WER: **13.0%**
**13.** Un vultur stă pe pisc cu un pix în plisc.
ODE: `midpoint` | NFE: `64` | Seed: `1234` | WER: **0%**
**14.** Sinucisul asasin Silică se suise simandicos sus pe scândura scăriței.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **10.0%**
**15.** Să sugi sucul socului sacru susține sasul sesios.
ODE: `midpoint` | NFE: `64` | Seed: `7777` | WER: **0%**
**16.** Bucură-te de bucuria Bucuroaiei cum s-a bucurat și ea de bucuria lui Bucurel când a venit de la București.
ODE: `midpoint` | NFE: `64` | Seed: `4242` | WER: **0%**
**17.** Ce-ntâmplare întâmplăreață s-a-ntâmplat în tâmplărie, un tâmplar din întâmplare s-a lovit cu tâmpla-n cap.
ODE: `midpoint` | NFE: `64` | Seed: `1234` | WER: **50.0%**
**18.** Cărămidarul cărămidărește cu cărămida cărămidarului din cărămidărie.
ODE: `midpoint` | NFE: `64` | Seed: `7777` | WER: **0%**
--- ### Lacramioara **1.** Țara românească și-a păstrat tradițiile străvechi de-a lungul secolelor.
ODE: `midpoint` | NFE: `64` | Seed: `44444` | WER: **0%**
**2.** Ștefan cel Mare a construit mănăstiri și cetăți în întreaga Moldovă.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **9.1%**
**3.** În această dimineață, bătrânul pescar și-a pregătit undițele pentru pescuit.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**4.** Fișierele și rețelele informatice sunt esențiale în științele moderne.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**5.** Așezările țărănești din câmpia Bărăganului sunt împrăștiate printre lanuri.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**6.** Bună ziua, mă numesc Alexandru și sunt din București.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**7.** Bună ziua, mă numesc Alexandra și sunt din Cluj-Napoca.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **0%**
**8.** România este o țară frumoasă cu munți înalți și câmpii întinse.
ODE: `midpoint` | NFE: `64` | Seed: `2024` | WER: **0%**
**9.** Copiii se jucau fericiți în grădina plină de flori colorate.
ODE: `midpoint` | NFE: `64` | Seed: `777` | WER: **0%**
**10.** Profesorul a explicat cu răbdare lecția dificilă de matematică.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**11.** Această carte reprezintă o contribuție importantă la literatura contemporană.
ODE: `midpoint` | NFE: `64` | Seed: `42` | WER: **0%**
**12.** S-a suit capra pe piatră, piatra a crăpat în patru, crăpai-ar capul caprei negre în patru cum a crăpat și piatra în patru.
ODE: `midpoint` | NFE: `64` | Seed: `88888` | WER: **26.1%**
**13.** Un vultur stă pe pisc cu un pix în plisc.
ODE: `midpoint` | NFE: `64` | Seed: `3141` | WER: **10.0%**
**14.** Sinucisul asasin Silică se suise simandicos sus pe scândura scăriței.
ODE: `euler` | NFE: `32` | Seed: `7777` | WER: **10.0%**
**15.** Să sugi sucul socului sacru susține sasul sesios.
ODE: `midpoint` | NFE: `64` | Seed: `7777` | WER: **12.5%**
**16.** Bucură-te de bucuria Bucuroaiei cum s-a bucurat și ea de bucuria lui Bucurel când a venit de la București.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **5.3%**
**17.** Ce-ntâmplare întâmplăreață s-a-ntâmplat în tâmplărie, un tâmplar din întâmplare s-a lovit cu tâmpla-n cap.
ODE: `midpoint` | NFE: `64` | Seed: `66666` | WER: **42.9%**
**18.** Cărămidarul cărămidărește cu cărămida cărămidarului din cărămidărie.
ODE: `midpoint` | NFE: `64` | Seed: `123` | WER: **0%**
--- ## Known Issues - **Marioara**: Occasionally prepends "Heri"/"Harry" to the beginning of generated speech. This is training data bleeding from the Harry Potter audiobook source material. - **Lacramioara**: Occasionally prepends "Iara pe Chichi" to the beginning of generated speech. This is reference audio text leaking — the reference clip contains "iara pe Chirica". - Both issues can often be avoided by trying different random seeds. ## Limitations - 5 voices only — voice cloning with unseen speakers may vary in quality. - WER is measured via Whisper large-v3 transcription, which may itself introduce errors (e.g., expanding contractions, changing capitalization). - The model inherits F5-TTS limitations including occasional word repetition or skipping on very long sentences. - Non-commercial use only (CC BY-NC 4.0 from base model). ## License - **Model weights**: CC BY-NC 4.0 (inherited from F5-TTS base model) - **Training scripts**: MIT ## Attribution - [F5-TTS](https://github.com/SWivid/F5-TTS) by Yushen Chen et al. - [Whisper](https://github.com/openai/whisper) by OpenAI (evaluation) - Dataset: Romanian audiobooks and broadcasts, transcribed with Whisper large-v3 ## Citation ```bibtex @misc{f5tts-romanian-2026, title={F5-TTS Romanian: Fine-tuned F5-TTS for Romanian Text-to-Speech}, author={Eduard Moldoveanu}, year={2026}, url={https://huggingface.co/eduardem/f5-tts-romanian} } ``` ## Links - [Demo page](https://eduardm.codeberg.page/f5-tts-romanian/) — interactive audio samples - [Codeberg](https://codeberg.org/eduardm/f5-tts-romanian) — training scripts and code - [Dataset](https://huggingface.co/datasets/eduardem/romanian-speech-v1) — Romanian Speech v1