Open release

Antalia 1 — an open Turkish text-to-speech model.

Development discontinued; released in full. One professional voice, about 300 million parameters, rectified-flow acoustic model at 24 kHz. This page lets you listen to what it does well and where it falls short, with the numbers behind each sample.

Listen

Two samples per category, raw and selected

Twenty prompts from the 120-prompt turkish-v2 evaluation suite, two per category. Each card plays the same sentence twice: the first random seed as generated, and the best of eight seeds chosen by an automatic score (WavLM speaker similarity minus Whisper character error rate, minus small F0-envelope and timbre penalties). CER is Whisper-large-v3 character error rate against the prompt; Sim is WavLM x-vector cosine similarity to the voice actor’s recordings. Selection costs 8× compute.

Where it fails

Numbers, normalization and foreign terms

These are the prompts with the highest error rates in the suite: six were the worst single-seed results, three the worst results after selection. Some fail on one seed and are recovered by best-of-8 selection; others are not recovered by any seed within the selection score. The note under each sentence shows the CER range across all eight candidates.

Long inputs

One duration for the whole input

The model predicts a single total frame count for each input from the pooled text encoding; there are no per-token durations and no aligner. On long text that prediction under-budgets: the same 370-character passage renders as 9.1 s of rushed, mumbled speech when fed in one pass, and as 34.8 s when the inference stack splits it at clause boundaries (≤120 characters, 160 ms pauses, a floor of 0.085 s per non-space character). Chunking cut long-form WER from 36.6 % to 10.7 % on a single seed.

Foundation model, unconditioned

Antalia 1 Foundation is the speaker-agnostic base (299.6M parameters, 100,000 updates on 67.55 h of Common Voice 26 and FLEURS Turkish). With speaker id 0 it produces an averaged voice that belongs to nobody. Single-seed CER on the suite is 0.18; these two samples are what the fine-tuning stages start from.

16 steps instead of 32

Halving the Euler steps reduced generation time by 45.1 %. Mean speaker similarity stayed within 0.0006 of the 32-step recipe; the 10th-percentile similarity was lower. The release recipe uses 32 steps.

Assessment

What works, what does not

What works

  • Short conversational Turkish is intelligible. Single-seed CER 0.053 across the suite (p90 0.135); best-of-8 CER 0.030 (p90 0.101).
  • Grapheme input with a deterministic normalizer. Numbers, dates, currency and abbreviations are spelled out in code before synthesis; no phoneme dictionary is needed.
  • Clause chunking makes long inputs usable. Long-form WER 36.6 % → 10.7 % with ≤120-character chunks.
  • A frozen, transparent vocoder. BigVGAN v2 24 kHz measures within ±0.4 dB on real-mel reconstruction, so errors you hear come from the acoustic model.
  • The release is complete. Both checkpoints, the training, selection and evaluation code, the 120-prompt suite, the listening protocol and its raw results are public. The voice actor’s recordings are not.

What does not

  • Voice similarity. Automated similarity reads 0.93–0.94, but a native listener who knows the voice rated 0 of 12 synthesized-vs-real pairs as the same person. The gap is a timbre bias in the presence band (+4.0 dB at 4.7–6.8 kHz). This is the biggest limitation.
  • Long inputs. The total-duration head under-budgets; without clause chunking (≤120 characters) and a per-character frame floor, long sentences rush and mumble.
  • Numbers, normalization-heavy text, foreign names and abbreviations have the highest CER. Best-of-8 partially recovers them; some prompts fail on all eight seeds.
  • Single-seed variance is large. Per-prompt CER spreads up to 0.00–0.17 across seeds. The headline numbers depend on best-of-8 selection with Whisper and WavLM scorers, which costs 8× compute.
  • One fixed voice. No zero-shot cloning, Turkish only, 24 kHz, grapheme input.
  • No multi-listener MOS, no memorization audit, no watermark.
  • Latency. On an A100 with 32 steps and a resident model, a 5 s utterance takes about 2.1–2.3 s after warm-up; the first request about 6 s. On the cancelled Cloud Run L4 staging, time-to-first-audio was p50 5.0 s / p95 9.2 s at low load.

Human listening

One listener, twenty-seven trials, one verdict

A comparative MOS session was run on 2026-08-09 with a single native listener, the project owner, who knows the voice actor’s voice. 27 non-catch trials; the 3 catch trials were rated correctly. Pooled CMOS was −0.667 ± 0.653 toward the candidate. The gated serving recipe scored +0.267 ± 0.728 against the plain recipe (n = 15). Against the real recordings, synthesized speech scored −1.833 ± 0.757 (n = 12) and the listener judged 0 of 12 pairs to be the same person.

Per category: emotion +2.0, general +2.0, questions +0.2, acknowledgement 0.0, long −0.5, names and places −1.0, voice agent −1.0, foreign −1.14, numeric −2.0, normalization −2.5.

The session rated the v5 predecessor checkpoint. The timbre penalty in selection and the adapter stage that became Antalia 1 were the response to it; they lowered the measured penalty from 2.585 to 1.997, still outside the real-voice range of 0.47–0.98. A ≥3-listener protocol was designed and never run. No multi-listener MOS exists for this model, and automated speaker similarity should not be read as evidence of identity.

Same person
0 / 12anchored synth vs real
CMOS vs real
−1.83± 0.76, n = 12
Pooled CMOS
−0.67± 0.65, n = 27
Listeners
1native, informed

Architecture

Characters in, mel frames out

An independent implementation of a CrossFlow-style rectified-flow model. Graphemes are encoded once; the acoustic decoder denoises 100-band log-mel frames conditioned on them through cross-attention. It does not use or depend on F5-TTS or FreyaTTS weights, code, audio or data.

Antalia 1 signal flow Text goes through a Turkish normalizer into a character encoder with four ConvNeXt blocks. The encoder feeds a duration head that predicts the total frame count, and provides cross-attention keys to 16 flow blocks. Noise frames plus the text conditioning pass through the flow blocks, each with self-attention, cross-attention, a SwiGLU feed-forward, adaLN modulation from the timestep and speaker context, and a residual adapter. The output is a 100-band mel spectrogram, converted by BigVGAN v2 to a 24 kHz waveform. Text Turkish, any case Normalizer numbers, dates, abbr. Character encoder embedding + sinusoidal pos. 4 ConvNeXt blocks · dim 768 Duration head pooled → log total frames frame count cross-attention keys Noise T × 100 mel frames 16 flow blocks · dim 768 · 12 heads self-attention → cross-attention → SwiGLU (3072) adaLN 9-way modulation from timestep context zero-init bottleneck adapter (128) + style vector Mel 100 bands · hop 256 BigVGAN v2 frozen, MIT Audio 24 kHz timestep t · speaker embedding (256) · 6-d prosody vector · CFG text 4.0 / speaker 1.0 Euler, 32 steps sway −0.8 · mel clamp 5.0
Signal flow at inference. Speaker and prosody conditioning exist only in the fine-tuned checkpoint; the foundation checkpoint has speaker id 0 only. Best-of-8 selection wraps the whole path and is optional.
Automated metrics on turkish-v2 (120 prompts, Whisper-large-v3 CER/WER, WavLM x-vector similarity)
System CER mean CER p90 WER mean Sim mean Sim p10
Foundation v3 @100k, unconditioned, single seed 0.18350.40490.39520.8162*0.625*
v5 consistency @6000, single seed 0.08400.23250.18700.93150.8913
v5 best-of-8 (timbre-gated, w = 0.05) 0.03750.11270.10590.94230.9113
Antalia 1 (adapter v2 @1400), single seed 0.05280.13480.12970.93310.9054
Antalia 1 best-of-8 (timbre-gated) 0.02980.10070.09340.94450.9170

* Foundation similarity is measured against the released voice, which the foundation never saw; it is reported only as the verifier’s floor. Similarity numbers above 0.93 did not correspond to human identity judgements (see Human listening).

Run it locally

Synthesize a sentence

Nothing is hosted. The loader pulls the checkpoint from Hugging Face and the vocoder from nvidia/bigvgan_v2_24khz_100band_256x. A GPU is recommended; the numbers on this page were measured on an A100.

  1. Clone the repository and install the package.

    git clone https://github.com/0daycloud/antalia
    cd antalia
    uv sync            # or: pip install -e .
  2. Set up the BigVGAN source tree. The vocoder is not redistributed: the repository pins commit 7d2b4545 and ships a one-line huggingface_hub compatibility patch. Follow the “Vocoder” section of the README.

    # BigVGAN source tree (pinned commit + one-line hub patch), see README "Vocoder"
  3. Synthesize.

    python scripts/synthesize-crossflow.py \
      --checkpoint cloud0day3/antalia-1 \
      --vocoder nvidia/bigvgan_v2_24khz_100band_256x \
      --speaker voicedata-candidate-b \
      --text "Merhaba" \
      --output merhaba.wav

--checkpoint accepts a Hub repo id, a local release directory or a training .pt file. For best-of-8 selection, generate seed candidates with --seed-candidates 8 and run scripts/select-best-of-n.py with timbre-profile.json and envelope-stats.json from the weights repository.