--- license: apache-2.0 base_model: nineninesix/gepard-1.0 library_name: gepard pipeline_tag: text-to-speech language: - sl tags: - text-to-speech - tts - slovenian - gepard - nanocodec - qwen3_5 - lora --- # Gepard Slovenian TTS (80k) A LoRA fine-tune of [**nineninesix/gepard-1.0**](https://huggingface.co/nineninesix/gepard-1.0) — a ~555M autoregressive, Qwen3.5-backbone TTS that generates NVIDIA **NanoCodec** audio tokens — adapted to **Slovenian** on the ARTUR read-speech corpus. Gepard is natively multilingual (EN/ES/PT/NL) and grapheme-based with a language-tag front-end, so Slovenian is added by fine-tuning on `sl: ` prompts — **no phoneme front-end** (the Qwen3.5 tokenizer handles č/š/ž cleanly and the multilingual base learns Slovenian grapheme-to-sound internally; using IPA would have discarded that multilingual transfer). ## Honest quality note The model **speaks Slovenian with correct šumniki (č, š, ž)** and its prosody is fairly natural (inherited from the multilingual base). **Overall quality is not yet top-tier** — this is a first scaled run (80k utterances, 5 epochs) on a single read-speech corpus. Expect occasional mispronunciations, variable pacing, and sensitivity to generation parameters. It is competitive on naturalness but a phoneme-based system can still be crisper on pure pronunciation. **Emotion:** there is some **content-driven emotional inflection** — the multilingual base was pretrained on emotion-annotated speech (EmoNet-Voice), so emotionally-charged text and punctuation (questions, exclamations, sad/angry phrasing) nudge the prosody, in clean Slovenian with no foreign-accent leak. It is **mild, not cinematic**, and there is no explicit emotion-control input. ## Samples Generated with the settings below (`cfg_scale=4.5`, `temperature=0.4`, `repetition_penalty=1.45`). | Style | Prompt | Audio | |---|---|---| | Pronunciation | *Slovenščina je lep jezik s šumniki č, š in ž.* | | | Neutral | *Danes je lep sončen dan in ptice pojejo na drevesih.* | | | Happy | *Kako čudovit dan, res sem srečen!* | | | Sad | *Žal mi je, vse je izgubljeno.* | | | Angry | *Dovolj mi je tega, takoj nehaj!* | | | Question | *Kaj se je zgodilo, kje si bil ves ta čas?* | | | Surprise | *Neverjetno, kako je to sploh mogoče?* | | | Whisper | *Tiho, nekdo prihaja, ne povej nikomur.* | | ## Generation settings (important) Use these — they are the tuned sweet spot. **Prefix every input with `sl: `** (the language tag is caller-owned; the model was trained on it). ``` temperature = 0.4 # clear articulation cfg_scale = 4.5 # strong text guidance → audible č/š/ž (2.5–4.5 usable; too high = harsh) cfg_frames = 25 # onset-only guidance repetition_penalty = 1.45 # REQUIRED — without it, cfg 4.0 occasionally fails to terminate (runaway) repetition_window = 32 ``` ## Architecture / codec - Backbone: `Qwen3_5ForCausalLM`, 14 layers, hidden 1024, vocab 248320, ~555M params, bf16. - Codec: **NVIDIA NeMo NanoCodec** `nvidia/nemo-nano-codec-22khz-1.89kbps-21.5fps` — GroupFSQ, 8 layers, fsq_levels `[8, 7, 6, 6]`, 21.5 frames/s, 22050 Hz output. - Language routing: transcripts prefixed `"{lang}: {text}"` before tokenization. ## How it was made - **Data:** [ARTUR](http://hdl.handle.net/11356/1776) Slovenian read speech. Clean multi-speaker selection (speakers with ≥ 25 utterances; drops single-clip pseudo-speakers), **80000 utterances across ~1348 speakers**, 0.8–14 s, resampled to 22050 Hz. - **Audio → tokens:** fused NanoCodec encode (slice/resample/encode in one GPU pass). - **Training:** LoRA on the Qwen3.5 backbone (base frozen), **5 epochs**, single GPU, via [gepard-train](https://github.com/nineninesix-ai/gepard-train) (`text_layout=repeat_ft`, the short-register fix). Language tag `sl`, grapheme text (no G2P). ## Usage Run with the [gepard-inference](https://github.com/nineninesix-ai/gepard-inference) runner + the NeMo codec (needs `nemo_toolkit[tts]` for decoding): ```python import torch, soundfile as sf from gepard_inference import GepardRunner, UnfoldedCodecModel # gepard-inference package dev = "cuda" runner = GepardRunner.from_checkpoint("texdata/Gepard-Slovenian-TTS", device=dev) codec = UnfoldedCodecModel.from_pretrained("nvidia/nemo-nano-codec-22khz-1.89kbps-21.5fps").eval().to(dev) tokens = runner.generate( "sl: Danes je lep sončen dan in ptice pojejo.", # MUST prefix "sl: " temperature=0.4, cfg_scale=4.5, cfg_frames=25, repetition_penalty=1.45, repetition_window=32, max_frames=800, ) codes = tokens.unsqueeze(0).to(dev) clen = torch.tensor([codes.shape[-1]], device=dev) audio, alen = codec.decode_from_codes(codes, clen) sf.write("out.wav", audio[0, : int(alen[0])].cpu().numpy(), 22050) ``` ## Limitations - Overall quality is a first-pass; not production-grade. Best on short, declarative sentences. - Grapheme-based: rare/foreign words and unusual stress may be mispronounced. - Trained only on ARTUR read speech → neutral prosody, no emotion/expressive control tuned yet. - Requires the generation settings above; low `cfg_scale` (< 1) is unstable, very high (≈ 9) gets harsh. ## References - Base model: [nineninesix/gepard-1.0](https://huggingface.co/nineninesix/gepard-1.0) (Apache-2.0) - Training: [gepard-train](https://github.com/nineninesix-ai/gepard-train) · Inference: [gepard-inference](https://github.com/nineninesix-ai/gepard-inference) - Codec: [nvidia/nemo-nano-codec-22khz-1.89kbps-21.5fps](https://huggingface.co/nvidia/nemo-nano-codec-22khz-1.89kbps-21.5fps) · [NVIDIA NeMo](https://github.com/NVIDIA/NeMo) - Base pretraining data (gepard-1.0): LAION Emilia, EmoNet-Voice - Fine-tune data: [ARTUR Slovenian speech corpus](http://hdl.handle.net/11356/1776) (CLARIN.SI) - Tokenizer: `nineninesix/qwen3_5-full-attn-only-14` ## License Apache-2.0 for the model weights (inherited from gepard-1.0). The NanoCodec used for decoding is under NVIDIA's Open Model License. ## Citation **Cite this work** (Tadej Fius, MediaAtlas Ltd): ```bibtex @misc{fius2026gepard, title = {Gepard Slovenian TTS}, author = {Fius, Tadej}, year = {2026}, publisher = {MediaAtlas Ltd}, howpublished = {Hugging Face}, url = {https://huggingface.co/texdata/Gepard-Slovenian-TTS} } ``` Upstream / source citations: ```bibtex @misc{gepard, title={Gepard 1.0 (Qwen3.5-backbone TTS, NanoCodec)}, author={{nineninesix}}, url={https://huggingface.co/nineninesix/gepard-1.0}} @misc{artur, title={ARTUR: Speech Database of Slovene}, author={{CLARIN.SI}}, url={http://hdl.handle.net/11356/1776}} ``` LoRA fine-tune of nineninesix/gepard-1.0 on the ARTUR read-speech corpus (CLARIN.SI).