A fine-tuned version of
SWivid/F5-TTS (335M params) for
Georgian text-to-speech. The model produces high-quality Georgian speech when using training speakers as reference. Generalization to arbitrary voice cloning is a work in progress.
Round-trip CER: TTS generates audio →
Meta Omnilingual ASR 7B transcribes → compare to original text.
Evaluated with speaker 3 reference audio (NISQA MOS 4.99).
1from huggingface_hub import hf_hub_download
2
3# Download checkpoint and vocab
4ckpt_path = hf_hub_download("NMikka/F5-TTS-Georgian", "model_110000.pt")
5vocab_path = hf_hub_download("NMikka/F5-TTS-Georgian", "extended_vocab.txt")
The model works best with reference audio from the training dataset. Voice cloning to arbitrary Georgian speakers is a work in progress.
1from datasets import load_dataset
2from huggingface_hub import hf_hub_download
3from f5_tts.api import F5TTS
4import soundfile as sf
5import numpy as np
6
7# Download model
8ckpt_path = hf_hub_download("NMikka/F5-TTS-Georgian", "model_110000.pt")
9vocab_path = hf_hub_download("NMikka/F5-TTS-Georgian", "extended_vocab.txt")
10
11# Load a reference sample from the training dataset
12ds = load_dataset("NMikka/Common-Voice-Geo-Cleaned", split="test")
13ref_sample = ds[92] # Pick any sample as voice reference, but this one is the one i used while testing alot.
14
15# Save reference audio to temp file (F5-TTS expects a file path)
16ref_path = "/tmp/ref.wav"
17sf.write(ref_path, np.array(ref_sample["audio"]["array"]), ref_sample["audio"]["sampling_rate"])
18
19# Load model
20model = F5TTS(
21 ckpt_file=ckpt_path,
22 vocab_file=vocab_path,
23 device="cuda",
24 use_ema=False, # Important: this checkpoint was not trained with EMA
25)
26
27# Generate speech using a training speaker as reference
28wav, sr, _ = model.infer(
29 ref_file=ref_path,
30 ref_text=ref_sample["text"],
31 gen_text="საქართველო მდებარეობს კავკასიის რეგიონში, ევროპისა და აზიის გასაყარზე",
32)
33sf.write("output.wav", wav, sr)
1wav, sr, _ = model.infer(
2 ref_file="reference.wav",
3 ref_text="reference transcript",
4 gen_text="text to synthesize",
5 nfe_step=32, # Denoising steps (default 32, higher = better quality, slower)
6 cfg_strength=2.0, # Classifier-free guidance (default 2.0)
7 speed=1.0, # Speech speed multiplier
8)
The pretrained F5-TTS uses a pinyin-based vocabulary (2,545 tokens). For Georgian, we extended the vocabulary by appending 34 Georgian Unicode characters (ა-ჰ + „). New embeddings were initialized with the mean of existing pretrained embeddings, then the text embedding layer was resized from 2,546 → 2,580 dimensions.
This model was trained as part of the first Georgian TTS benchmark — a comparative study of 6 open-source TTS architectures. See the full project:
github.com/NMikaa/TTS_pipelines
1@misc{f5tts-georgian-2026,
2 title={F5-TTS Georgian: Fine-tuned Flow-Matching TTS for Georgian},
3 author={NMikka},
4 year={2026},
5 url={https://huggingface.co/NMikka/F5-TTS-Georgian}
6}