Antalia 1

An open Turkish text-to-speech model with one consented voice, released in full.

Listen Code Paper Foundation Corpus License

Türkçe model kartı: README.tr.md

Development of this model is discontinued. This is the last checkpoint we were satisfied with, published together with the foundation model, the code, the 5-hour voice corpus, the evaluation suite, a technical report, and an honest account of what it does and does not do. Nothing here is served or maintained as a product. Contact: sezgin@patientdesk.ai or GitHub issues.

At a glance

Task Turkish text-to-speech in one fixed voice. No zero-shot cloning.
Architecture Character-conditioned rectified flow (our "CrossFlow" implementation): 4-block ConvNeXt text encoder, 16 Transformer flow blocks at dim 768, one scalar duration head.
Size 304.6M parameters, fp32 safetensors, 1.22 GB.
Output 24 kHz mono. The model predicts 100-band log-mel frames; NVIDIA BigVGAN v2 (frozen, downloaded separately) turns them into audio.
Input Turkish graphemes after a deterministic normalizer that spells out numbers, dates, currency and abbreviations.
Intelligibility CER 0.053 on a single seed, 0.030 with best-of-8 selection (Whisper-large-v3, 120-prompt turkish-v2 suite).
Voice identity Automated similarity reads 0.93–0.94, but a native listener judged 0 of 12 synthesized-vs-real pairs to be the same person. See Limitations.
Recipe v2, recorded in inference-recipe.json: text guidance 4.0, rescale 0.5, noise-envelope pinning, sway −0.8, 32 Euler steps, clause chunking at ≤120 characters.
License Weights: Antalia OpenRAIL-M (LICENSE.md), which requires credit to the authors in anything that uses or redistributes the model. Code: Apache-2.0.
Training data Common Voice 26.0 Turkish (CC0), FLEURS Turkish (CC-BY-4.0), and 5.008 h of one consenting voice actor, released as antalia-voice-corpus (CC-BY-4.0).

Listen

Every clip below is AI-generated. None is a recording of a real person. CER is the Whisper-large-v3 character error rate against the prompt; Sim is WavLM x-vector cosine similarity to the voice actor's recordings. These are best-of-8 takes from the release recipe. The sample site has more than sixty clips, every one paired with its raw single-seed take, plus the nine worst failures in the suite.

AudioPrompt
Sabah güneşi sessiz sokağın taşlarına yavaşça vuruyordu.
General · CER 0.00 · Sim 0.972
Maalesef başvurunuz bu aşamada onaylanmadı, fakat yeniden değerlendirme isteyebilirsiniz.
Emotional style · CER 0.00 · Sim 0.966
İşlemi şimdi tamamlamamı ister misiniz, yoksa daha sonra mı arayalım?
Questions and confirmations · CER 0.00 · Sim 0.967
Kimlik doğrulaması için doğum tarihinizin yalnızca gün ve ay bilgisini söyler misiniz?
Voice agent · CER 0.00 · Sim 0.971
Yiğit Efe'nin dosyası Ankara'nın Çankaya ilçesindeki Mithatpaşa Caddesi'ne gönderildi.
Names and places · CER 0.00 · Sim 0.962
Doktorunuz tahlil sonuçlarını inceledikten sonra tedavi planını güncelleyecek, yeni reçeteniz eczane sistemine aktarılacak, kontrol randevunuz oluşturulacak ve bütün ayrıntılar size güvenli mesaj yoluyla bildirilecektir.
Long form, 18.7 s, chunked at clause boundaries · CER 0.00 · Sim 0.971

Where it struggles

The same honesty applies to the failures. The first row is the worst single-seed result in the suite and shows what best-of-8 selection buys; the second is a case no seed fixes; the third is the long-input failure that the chunking recipe exists for.

PromptTakes
Prof. Dr. Öz'ün 21.09.2026 tarihli e-reçete no.'su 004781'dir.
Normalization. Whisper heard the raw take as "Prof. Dr. 21 Eylül 2026 tarihli erihli e-reçete no. suf 47-8-1'dir." CER across the eight seeds ranged 0.13–0.38.
Single seed, CER 0.32

Best of 8, CER 0.13
Toplam tutar ₺1.275,50 ve indirim oranı %18 olarak görünüyor.
Numbers. Whisper heard "Toplam tutar 1275 lira 50 kuruş ve indirim oranı %18 olarak görünüyor." CER is scored against the unnormalized prompt, so a correctly spoken amount still counts as errors here; no seed scored below 0.13.
Single seed, CER 0.13

Best of 8, CER 0.13
Başvurunuzu tamamladıktan sonra belgeleriniz güvenli biçimde incelenecek … (370 characters)
Long input. The duration head budgets one length for the whole passage. Unchunked it renders as 9.1 s of rushed speech; chunked at ≤120 characters it takes 34.8 s.
Unchunked, 9.1 s

Chunked, 34.8 s

Quick start

git clone https://github.com/0daycloud/antalia
cd antalia
uv sync            # or: pip install -e .

# Vocoder: BigVGAN is not redistributed. Pinned commit + one-line hub patch.
git clone https://github.com/NVIDIA/BigVGAN /opt/bigvgan
git -C /opt/bigvgan checkout 7d2b454564a6c7d014227f635b7423881f14bdac
patch -d /opt/bigvgan -p4 < scripts/patches/bigvgan-huggingface-hub-1.patch
export PYTHONPATH=/opt/bigvgan

python scripts/synthesize-crossflow.py \
  --checkpoint cloud0day3/antalia-1 \
  --vocoder nvidia/bigvgan_v2_24khz_100band_256x \
  --speaker voicedata-candidate-b \
  --prosody -1.2398956 1.1943912 -2.1267404 -0.9549347 0.9637866 0.5145879 \
  --text-guidance 4.0 --sway -0.8 --steps 32 --mel-clamp 5.0 \
  --min-seconds-per-char 0.085 --chunk-chars 120 \
  --text "Merhaba, randevunuzu yarın saat on dört otuz için yeniden planladım." \
  --output merhaba.wav

--checkpoint accepts a Hub repo id, a local release directory, or a training .pt file. The loader downloads nvidia/bigvgan_v2_24khz_100band_256x (MIT) from the Hub. Python 3.12; a CUDA GPU is recommended, CPU works slowly.

For best-of-8 selection, generate candidates with --evaluation-suite ... --seed-candidates 8 and run scripts/select-best-of-n.py with timbre-profile.json and envelope-stats.json from this repository. Speaking-style presets live in prosody-presets.json; the full recipe is in inference-recipe.json.

Results

Measured on our 120-prompt Turkish evaluation suite (10 categories × 12 prompts; Whisper-large-v3 CER/WER, WavLM-base-plus-sv x-vector similarity against held-out real recordings of the voice).

Configuration CER mean CER p90 WER mean Speaker sim. mean Speaker sim. p10
Single seed, 32 Euler steps 0.0528 0.1348 0.1297 0.9331 0.9054
Best-of-8 seeds, timbre-gated selection 0.0298 0.1007 0.0934 0.9445 0.9170

Acknowledgements, questions and confirmations, voice-agent turns, emotional style, and general sentences are usually clean on a single seed. Sixteen Euler steps cut generation time by 45 % with the same mean similarity and slightly lower p10 similarity.

Recipe v2 was measured against v1 over 40 prompts × 8 seeds on this checkpoint: between-seed timbre drift 2.088 → 1.520 (real-voice reference 1.414) and single-seed CER 0.0717 → 0.0615.

What it does not do well

  1. Voice similarity is the biggest gap. Automated similarity reads 0.93–0.94, but in a blind native-listener session (27 trials, 3/3 catch trials clean) the listener rated 0 of 12 synthesized-vs-real pairs as the same person, and anchored comparisons scored CMOS −1.83 ± 0.76 against the real voice. The listener localized the difference to timbre; band analysis confirmed a +4.0 dB excess at 4.7–6.8 kHz (z = +3.5) and a formant-region tilt coming from the acoustic model, not the vocoder. The released adapter stage and the timbre penalty in selection reduced the measured penalty (2.585 → 1.997) but it remains outside the real-voice range (0.47–0.98). This was a single, informed listener; a multi-listener MOS was designed but never run.
  2. Long inputs. The model predicts one total duration per input and under-budgets long text: an unchunked 370-character input renders as 9.1 s of rushed speech versus 34.8 s when chunked. The recipe therefore splits at clause boundaries (≤120 characters), inserts 160 ms pauses, and enforces a floor of 0.085 s per non-space character. Chunking reduced long-form WER from 36.6 % to 10.7 % in our measurements.
  3. Numbers, normalization-heavy text, foreign names and abbreviations have the highest error rates. Best-of-8 selection partially recovers them (one prompt goes from CER 0.32 to 0.13); some prompts fail on all eight seeds.
  4. Seed variance is large. Per-prompt CER spans 0.00–0.17 across seeds on ordinary prompts. The headline best-of-8 numbers require eight generations plus Whisper and WavLM scoring.
  5. Turkish only, grapheme input after a deterministic normalizer, 24 kHz mono, one voice.
  6. No memorization audit was run; no audio watermark is embedded.

Files

File Purpose
model.safetensors EMA weights, fp32, 304,552,293 parameters. SHA-256 853a117ef95fa44efff785a6b674f380878da57879cb879d6d099d1e1444266e
config.json Release format antalia-crossflow-release-v1: architecture, mel statistics, vocabulary, speaker vocabulary, vocoder pointer, provenance
inference-recipe.json Sampling recipe v2: guidance 4.0, rescale 0.5, noise-envelope pinning, sway −0.8, 32 steps, chunking, frame floor, best-of-8 scoring
prosody-presets.json Six-dimensional prosody targets per speaking style (warm, question, empathy, explanation, numbers, phonetic)
timbre-profile.json, envelope-stats.json Aggregate statistics of the real voice used by the best-of-N selector
LICENSE.md Antalia OpenRAIL-M

Architecture

  • Text: deterministic Turkish normalizer → characters → embedding + sinusoidal positions → 4 ConvNeXt-style depthwise-conv blocks (kernel 7, dim 768).
  • Duration: one scalar head predicts log total frames. No aligner, no per-token durations.
  • Acoustic model: 16 Transformer blocks (dim 768, 12 heads, SwiGLU FFN 3072) with self-attention over mel frames, cross-attention over characters, zero-initialized adaLN modulation from the flow timestep, plus a zero-initialized speaker/style bottleneck adapter (dim 128) in every block.
  • Conditioning: 256-d speaker embedding and a 6-d prosody vector (log seconds/char, log energy mean/std, log F0 mean/std, voiced ratio) through zero-initialized projections; classifier-free guidance on text and speaker.
  • Vocoder: BigVGAN v2 24 kHz 100-band 256x, frozen.

There is no zero-shot cloning: the speaker table contains this voice (voicedata-candidate-b) plus anonymized Common Voice speaker ids used during training. Speaker id 0 is the unconditioned foundation path.

Training data and lineage

All stages used only Common Voice 26.0 Turkish (CC0; 59,593 filtered clips), FLEURS Turkish (CC-BY-4.0; 1,876 clips), and the consented recordings of the released voice (621 script-aligned segments / 2.965 h, later 1,073 corrected segments / 5.008 h). No scraped audio, no other speakers' private recordings, no third-party TTS weights. Filter manifests and QA reports are in the code repository.

Stage Init Updates Trainable Data
Foundation v3 scratch 100,000 all CV + FLEURS, 67.55 h
Speaker conditioning foundation 3,000 speaker embeddings/projections CV speaker ids
Voice embedding previous 100 one speaker embedding 621 voice segments
CFG fine-tune previous 8,000 acoustic blocks 41,277 CV + 621 voice
Consistency fine-tune previous 6,000 acoustic blocks 41,277 CV + voice ×10
Timbre adapter (released) previous 1,400 3.16M adapter params 1,073 voice segments

The voice corpus is published too

The 1,073 segments / 5.008 h this model was fine-tuned on are released as antalia-voice-corpus under CC-BY-4.0: audio, verbatim transcripts, and per-clip signal and alignment metrics. The voice actor signed an addendum permitting public redistribution of the recordings themselves, not only of these weights.

Studio-quality, consented, single-speaker Turkish speech is scarce, and for several use cases the corpus is more useful than this checkpoint: fine-tuning a different architecture on the same voice, Turkish ASR on read speech, prosody and normalization research (it deliberately covers numerals, readback, foreign terms and graded expressive style across 11 categories), or simply as a clean, rights-traceable Turkish reference set. 24 kHz mono, median SNR 34.9 dB, every clip through the full quality gate.

Only the training split ships. The parent-disjoint test split is withheld, so the speaker similarity figures above are not independently reproducible from it.

Intended use and restrictions

Research on Turkish speech synthesis, single-voice assistants and prototypes with clear AI disclosure, and study of the failure modes documented above. The OpenRAIL-M license prohibits impersonating real persons, deceptive or fraudulent use, political robocalls, and use without disclosure that audio is synthetic. It also requires attribution: any distribution of the model or its derivatives, and any product, service or publication that uses them, must credit "Antalia 1" by Sezgin Saygili, Emre Kaplaner, Oncel Ozgul and Fikri San Koktas (Patientdesk.ai) with a link to this repository or the code repository. The voice actor consented to redistribution of these weights and her recordings, not to derivative datasets of her voice presented as recordings of a real person.

Citation

@misc{antalia1_2026,
  title  = {Antalia 1: An Open Turkish Text-to-Speech Model from a Rights-Clean Pipeline},
  author = {Saygili, Sezgin and Kaplaner, Emre and Ozgul, Oncel and Koktas, Fikri San},
  year   = {2026},
  note   = {Technical report},
  url    = {https://huggingface.co/cloud0day3/antalia-1}
}

Acknowledgements

The anonymous voice actor whose voice this is; Common Voice contributors; NVIDIA for BigVGAN. The name "Antalia" is not a registered trademark of the authors.

Downloads last month
93
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for cloud0day3/antalia-1

Finetuned
(1)
this model

Datasets used to train cloud0day3/antalia-1

Space using cloud0day3/antalia-1 1