Open model Patientdesk Labs · Discontinued

Antalia 1: an open Turkish voice, and the listening test it failed

Antalia 1 reads Turkish text aloud in one voice, belonging to a professional voice actor who agreed to let us publish everything: the model, the code, and five hours of her recordings. On our test sentences, a speech recognizer gets roughly 3 characters in 100 wrong when it transcribes the model’s chosen takes back. It also failed the one test we cared about most. This post is about both.

Development is discontinued, and Antalia 1 is not served. The weights, code, voice corpus, evaluation data and paper are public and free to download. It has been succeeded by Alania 1, which is served through the API at speech.patientdesk.ai.

304.6MParameters, one fixed voice
5.008 hConsented recordings, published
0.030Character error rate, best of 8
0.93–0.94Automated voice similarity
0 of 12Pairs a native listener called the same person
01 What it is

A Turkish voice anyone can download

Turkish is a large language with comparatively few open, high-quality neural text-to-speech voices. We built Antalia 1 at Patientdesk.ai as the one flagship Turkish voice for a conversational product. The product was cancelled, and we stopped developing the model before the fixes we had planned.

Rather than let the work disappear, we published all of it, as it was:

It speaks Turkish in one voice. It cannot clone other voices from a sample, and nothing about it runs as a service.

02 Listen

Press play

Every clip below is AI-generated; none is a recording of a real person. Each one is the best of eight attempts, picked automatically (more on why below). Under each clip are two scores. Errors is the character error rate: we play the audio to Whisper, a speech recognizer, and count what fraction of the characters it writes down differ from the text. Similarity is an automated score, from 0 to 1, of how close the voice sounds to the actor’s real recordings. Hold on to that second number.

Everyday sentence
Sabah güneşi sessiz sokağın taşlarına yavaşça vuruyordu. “The morning sun was slowly striking the stones of the quiet street.”
Errors 0.00 · Similarity 0.972
Question
İşlemi şimdi tamamlamamı ister misiniz, yoksa daha sonra mı arayalım? “Would you like me to complete this now, or shall we call you later?”
Errors 0.00 · Similarity 0.967
Voice-agent turn
Kimlik doğrulaması için doğum tarihinizin yalnızca gün ve ay bilgisini söyler misiniz? “To verify your identity, could you tell me just the day and month of your date of birth?”
Errors 0.00 · Similarity 0.971
Emotional style
Maalesef başvurunuz bu aşamada onaylanmadı, fakat yeniden değerlendirme isteyebilirsiniz. “Unfortunately your application was not approved at this stage, but you can ask for it to be reconsidered.”
Errors 0.00 · Similarity 0.966
Numbers
İlacınızı 8 saatte bir, her seferinde 1,5 ölçek kullanmanız gerekiyor. “You need to take your medicine every 8 hours, 1.5 measures each time.”
Errors 0.00 · Similarity 0.974
Names and places
Yiğit Efe’nin dosyası Ankara’nın Çankaya ilçesindeki Mithatpaşa Caddesi’ne gönderildi. “Yiğit Efe’s file was sent to Mithatpaşa Street in Ankara’s Çankaya district.”
Errors 0.00 · Similarity 0.962
Long form, split at clause boundaries
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. “After reviewing your test results, your doctor will update your treatment plan; your new prescription will be sent to the pharmacy system, your follow-up appointment will be booked, and all the details will be sent to you by secure message.”
18.7 s · Errors 0.00 · Similarity 0.971

Audio is streamed from the public sample site, where every clip sits next to its raw single-attempt version.

03 How it was made

Built only from audio we had the right to use

No training audio was scraped from the web. Antalia learned Turkish in general from two public datasets, Mozilla Common Voice (volunteers reading sentences aloud) and FLEURS: 61,469 clips, 67.55 hours, after filtering. Every candidate clip was transcribed by a speech recognizer and compared with the sentence it was supposed to contain. Mismatches, near-silent clips and clips that were too quiet were dropped, and every rejection was logged with its reason.

Then it learned one voice. A professional Turkish voice actor recorded scripts written for the project, machine-generated and free of personal data, in the same studio with the same microphone at every session. She is credited anonymously at her request. She signed an addendum permitting public redistribution of the recordings themselves, not only of the model weights, which is why her 5.008 hours are published too. She consented to redistribution of the weights and her recordings, not to derivative datasets of her voice presented as recordings of a real person.

We did look for a shortcut. Public-domain Turkish audiobooks and government broadcasts would have been legally clean. A short pilot found nothing usable: an archive search for Turkish LibriVox audiobooks returned 0 items, and the Voice of America Turkish feed we could reach held 1.63 hours of multi-speaker field reporting, noisier than our training audio. Paid, consented recording sessions were the only path that worked.

How it works, in one paragraph

Antalia is a flow-matching model with about 300 million parameters. It starts from random noise shaped like a spectrogram (a picture of sound: frequency against time) and, over 32 small steps, pushes that noise toward the spectrogram of the sentence, guided by the text. A separate, freely available network from NVIDIA, BigVGAN, turns the spectrogram into 24 kHz audio. The model reads letters rather than phonetic symbols, after a rule-based step that writes numbers, dates and abbreviations out as words: saat 09:07’de becomes saat dokuz sıfır yedi’de (“at 09:07” becomes “at nine zero seven”).

04 The central finding

The number that said yes, and the person who said no

Voice projects usually check identity with a speaker-verification model: it turns each clip into a numerical fingerprint and measures how close two fingerprints are. Ours used a model called WavLM. On the released Antalia 1, synthetic clips score 0.93 to 0.94 against the actor’s real recordings. By that number, the voice is hers.

We did not stop at the number. On 9 August 2026 we ran a blind listening session with a native Turkish speaker who knows the actor’s voice: the project owner. Twelve times, the listener heard a synthetic clip next to a real recording of her, saying different sentences, and was asked whether both were the same person. The answer was no, twelve times out of twelve. For that same audio, the automated score sat between 0.91 and 0.94 throughout.

Figure 1Same audio, two verdicts
Automated similarity
0.91–0.94
The speaker-verification score during the session. Read naively: same person.
01
Native listener who knows the voice
0 / 12
Synthetic-versus-real pairs judged the same person.
One listener, not a panel. The test ran on the version just before the release. Three catch trials, where the same clip was played twice, were all answered correctly, so the listener was paying attention.

The listener could say what was wrong: apart from the tone of the voice, everything sounded like the same person. A spectrum measurement confirmed it. The synthetic voice carries 4 dB too much energy between 4.7 and 6.8 kHz, the “presence” band, plus a tilt around the formants, the resonances that shape vowels. The vocoder rebuilds real recordings to within 0.4 dB, so the fault was in our model, not in the step that makes the audio.

So we built a ruler for exactly that fault: a simple measure of spectral shape across 11 frequency bands. On the test pack, real recordings scored 0.47 to 0.98 and synthetic ones 1.42 to 3.26, with no overlap, which is the listener’s verdict reproduced by a measurement. We used it in two ways: to choose among the eight takes, and as the target for a final small training stage (3.2 million extra parameters added to the frozen model). Together they moved the average from 2.585 to 1.997.

Figure 2Timbre distance from the real voice (lower is closer)
Real recordingsSynthetic clips on the test pack (1.42–3.26)
Better, and still outside the real range. Nobody ran the listening test again on the released model, and a panel of three or more listeners was designed but never run.

The honest summary is that Antalia 1 sounds like someone who sounds a lot like her, not like her. We did not close that gap before we stopped.

An automated similarity score is a good way to choose between two takes, and a poor way to certify a voice.

If identity matters in your project, put people who know the voice in front of it early, and more than one of them.

05 Weak spots

Where it stumbles

Numbers, codes and foreign words

These are the hardest categories. Each generation starts from different random noise, and the result varies a lot from attempt to attempt: on the same sentence, the error rate can land anywhere from 0 to 0.17. So the release recipe makes eight attempts per sentence and keeps the one that scores best on a mix of errors, similarity and tone. That is how a single-attempt error rate of 0.053 becomes 0.030. Because the eight attempts run as one batch, they take about 1.5 times as long as a single attempt, plus the time to score each one.

Rescued by picking the best take
Prof. Dr. Öz’ün 21.09.2026 tarihli e-reçete no.’su 004781’dir. “Prof. Dr. Öz’s e-prescription dated 21.09.2026 is number 004781.”
One attempt: errors 0.32
Best of 8: errors 0.13
The worst single-attempt result in the suite. Whisper heard the first take as “Prof. Dr. 21 Eylül 2026 tarihli erihli e-reçete no. suf 47-8-1’dir”: the name is gone and the number is mangled.
Not fixed by any take
Toplam tutar ₺1.275,50 ve indirim oranı %18 olarak görünüyor. “The total shows as ₺1,275.50 and the discount rate as 18%.”
One attempt: errors 0.13
Best of 8: errors 0.13
No attempt scored below 0.13. Part of that is the scoring: this clip’s error rate is measured against the prompt as written, with digits, so an amount spoken correctly as “1275 lira 50 kuruş” still counts as errors.

That second example points at a lesson we learned the hard way. At one point the numbers category looked disastrous, at 41.5% character error. Whisper writes spoken numbers as digits, while our reference text had them as words. Once the scorer spelled out digits the way Turkish speaks them, the same audio measured about 2.7%. We had nearly launched a training run to fix what turned out to be a bug in the measurement.

Long passages

The model predicts the length of the whole input as a single number, and on long text it guesses short: 0.0635 seconds per character, against 0.083 in the actor’s natural speech, about 35% too fast. The result is rushed, smeared speech. The fix is to split text at commas and full stops into pieces of up to 120 characters, read each piece separately, and join them with a short pause. Listen to the same 370-character passage both ways:

Same text, two ways
Başvurunuzu tamamladıktan sonra belgeleriniz güvenli biçimde incelenecek, eksik bir bilgi görülürse size kısa bir bildirim gönderilecek… “Once you complete your application, your documents will be reviewed securely; if any information is missing, you will be sent a short notice…” (370 characters in all)
In one piece: 9.1 s
Split at clauses: 34.8 s

With the splitting and a minimum time per character, the word error rate on long passages fell from 36.6% to 10.7% in our measurements. Without it, the model mumbles.

What the listener liked and did not

The same listening session scored each category on a scale from −3 to +3. Emotional and everyday sentences did best (+2.0 each). Numbers (−2.0) and text heavy with abbreviations and codes (−2.5) did worst. The model was not promoted to be the product’s voice.

Everything else is in the list you would expect: Turkish only, one voice, 24 kHz audio. No check was run for whether the model memorized its training recordings, and the audio carries no watermark.

06 Why publish

Why release a model that failed its own test

Because the parts around the voice are reusable, and they are rare in open Turkish speech. Every training clip can be traced to its source and to the filter decision that let it in. The actor’s consent covers open release. The release format puts the audio settings, text rules, vocabularies, vocoder version and provenance in one config file.

For many uses, the five-hour corpus is worth more than the model: fine-tuning a different architecture on the same voice, Turkish speech recognition on read speech, or research on how numbers, read-backs and foreign terms are spoken. It is studio-quality, single-speaker, and every clip passed the full quality gate.

And the failure itself is useful to anyone about to trust a similarity score. The two lessons we would pass on are simple. Sign the consent for redistribution before anyone records a word, not after. And measure identity with people who know the voice.

07 Try it

Run it yourself

You need Python 3.12 and ideally a CUDA GPU (CPU works slowly). The vocoder is downloaded separately from NVIDIA; the repository README has the three setup lines. Then:

# after: git clone https://github.com/0daycloud/antalia && cd antalia && uv sync
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, ben Antalia." --output out.wav

It is meant for research on Turkish speech synthesis, prototypes that clearly disclose the voice is AI, and study of the failure modes above. It is not meant for anything where a listener could believe a real person is speaking. The weights are licensed under Antalia OpenRAIL-M: no impersonation, fraud, deception or political robocalls, generated audio must be disclosed as synthetic, and anything that uses or redistributes the model must credit “Antalia 1” by Sezgin Saygili, Emre Kaplaner, Oncel Ozgul and Fikri San Koktas (Patientdesk.ai), with a link to the model or code repository. The code is Apache-2.0.

Need a Turkish voice you can call today? Antalia 1 has been succeeded by Alania 1, which is served through the API at speech.patientdesk.ai. Questions about Antalia go to GitHub issues; there is no roadmap and no support commitment.