Antalia 1 — Turkish text-to-speech, one consented voice
Development of this model is discontinued. We publish the last checkpoint we were satisfied with, together with the foundation model, the code, the evaluation suite, an honest account of what it does and does not do, and a technical report. Nothing here is being served or maintained as a product.
- Code: https://github.com/0daycloud/antalia (Apache-2.0)
- Foundation model: https://huggingface.co/cloud0day3/antalia-1-foundation
- Training corpus (5.008 h of her speech, CC-BY-4.0): https://huggingface.co/datasets/cloud0day3/antalia-voice-corpus
- Samples: https://0daycloud.github.io/antalia/
- Paper: https://github.com/0daycloud/antalia/blob/main/paper/main.pdf
- Contact: sezgin@patientdesk.ai or GitHub issues
- Türkçe model kartı: README.tr.md
What it is
Antalia 1 is a ~305M-parameter character-conditioned rectified-flow model (our "CrossFlow" implementation) that predicts 24 kHz, 100-band log-mel spectrograms for one fixed Turkish voice, decoded by NVIDIA BigVGAN v2. The voice belongs to a professional Turkish voice actor who recorded scripted material under a commercial consent and later signed an addendum that allows these weights to be redistributed openly. She is credited anonymously at her request.
There is no zero-shot cloning: the speaker table only contains this voice (voicedata-candidate-b)
plus anonymized Common Voice speaker ids used during training. Speaker id 0 is the unconditioned
foundation path.
What it does well
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.
What it does not do well
- 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.
- 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.
- Numbers, normalization-heavy text, foreign names and abbreviations have the highest error rates. Best-of-8 selection partially recovers them (e.g. one prompt goes from CER 0.32 to 0.13); some prompts fail on all eight seeds.
- 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.
- Turkish only, grapheme input after a deterministic normalizer, 24 kHz mono, one voice.
- 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 |
Champion sampling recipe (guidance 4.0, 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 |
The vocoder is not redistributed here; the loader downloads nvidia/bigvgan_v2_24khz_100band_256x
(MIT) from the Hub.
How to run
git clone https://github.com/0daycloud/antalia
cd antalia
uv sync # or: pip install -e .
# BigVGAN source tree (pinned commit + one-line hub patch), see README "Vocoder"
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.
For best-of-8 selection run --evaluation-suite ... --seed-candidates 8 and
scripts/select-best-of-n.py with timbre-profile.json and envelope-stats.json.
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).
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.
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.
| 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 |
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. The voice actor consented to redistribution of these weights, 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
- -
Model tree for cloud0day3/antalia-1
Base model
cloud0day3/antalia-1-foundation