Open release · development discontinued

An open Turkish text-to-speech model, released in full.

One professional voice, about 300 million parameters, a rectified-flow acoustic model at 24 kHz. Weights, code, the voice corpus and every evaluation result are public. This page lets you hear what it does well and where it falls short, with the numbers behind each sample.

Hear the voice

General · best of 8

Sabah güneşi sessiz sokağın taşlarına yavaşça vuruyordu.

AI-generated. Whisper transcribed it with zero character errors; speaker similarity to the real voice 0.972.

  • 304.6Mparameters
  • 24 kHzoutput, 100-band mel
  • 5.0 hof the released voice
  • 67.55 hCommon Voice + FLEURS foundation
  • 0.030CER, best of 8 (0.053 single seed)

Listen

Twenty prompts, each played twice

Two prompts from each of the ten categories in the 120-prompt turkish-v2 evaluation suite. For every sentence you can compare the first random seed as generated with the best of eight seeds picked by an automatic score. 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. Selection costs eight times the compute.

Where it fails

Numbers, normalization and foreign terms

The nine prompts with the highest error rates in the suite: six were the worst single-seed results, three the worst results even after selection. Under each sentence you can read what Whisper actually heard on the raw take, and see where the raw and selected takes sit within the CER range of all eight seeds.

Single seedBest of 8Range across 8 seeds

Long inputs

One duration for the whole input

The model predicts a single total frame count per 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 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.

The 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 where the fine-tuning stages start from.

16 Euler steps instead of 32

Halving the solver steps cut 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 the errors you hear come from the acoustic model.
  • The release is complete. Both checkpoints, the 5.0 h voice corpus, the training, selection and evaluation code, the 120-prompt suite, the listening protocol and its raw results are all public.

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 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.
  • 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.

Human listening

One listener, twenty-seven trials, one verdict

Automated speaker similarity should not be read as evidence of identity. The only human listening test that was run says so plainly.

Same person
0 / 12synthesized vs real, anchored
CMOS vs real
−1.83± 0.76, n = 12
Pooled CMOS
−0.67± 0.65, n = 27
Listeners
1native, knows the voice

A comparative MOS session was run on 9 August 2026 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. 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 and the listener judged none of the 12 pairs to be the same person.

The session rated the v5 predecessor checkpoint. The timbre penalty in selection and the adapter stage that became Antalia 1 were the response: they lowered the measured timbre penalty from 2.585 to 1.997, still outside the real-voice range of 0.47–0.98. A protocol with three or more listeners was designed and never run.

CMOS by category

candidate vs reference, v5 checkpoint
Emotional style
+2.0
General
+2.0
Questions
+0.2
Acknowledgement
0.0
Long form
−0.5
Names & places
−1.0
Voice agent
−1.0
Foreign terms
−1.1
Numbers
−2.0
Normalization
−2.5
−2.50+2.5

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 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.

    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
  3. Synthesize with the release recipe: text guidance 4.0, sway −0.8, 32 Euler steps, clause chunking at 120 characters and the per-character frame floor.

    python scripts/synthesize-crossflow.py \
      --checkpoint cloud0day3/antalia-1 \
      --vocoder nvidia/bigvgan_v2_24khz_100band_256x \
      --speaker voicedata-candidate-b \
      --prosody-presets prosody-presets.json --preset warm_voice_agent \
      --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, generate 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. inference-recipe.json there records the full recipe.