yazgı-tts-1

A Turkish text-to-speech model with 8 built-in voices that speaks clean, accurate and natural Turkish. It reads numbers, prices, dates, codes and addresses correctly, and runs about 6x faster than real time on a laptop CPU. On Freya-TR-Eval it is one of the most accurate and natural open Turkish models.

Samples

Voice Text Audio
male-01 Siparişiniz 14 Ekim'de saat 15:30'da kargoya verildi. Tahmini teslimat tarihi 16 Ekim Perşembe.
female-01 Sepetinizdeki ürünlerin toplamı 1.299,90 TL. Üç taksit seçerseniz aylık ödemeniz 433,30 TL olacak.
male-02 Siparişinizdeki 3 ürünün hepsi stokta. Yarın sabah kargoya verilecek ve size kısa bir mesaj göndereceğiz.
female-04 Teslimat adresiniz Atatürk Caddesi No: 12, Daire 5, Kadıköy, İstanbul olarak kaydedildi.
male-03 Bugün İstanbul'da hava parçalı bulutlu, sıcaklık 18 derece civarında. Akşam saatlerinde kuzeyden esen rüzgârın hızlanması ve gece boyunca hafif yağmur bekleniyor. Yarın ise güneşli bir gün bizi bekliyor.
female-02 Kapadokya'ya ilk kez gidenler genellikle sabahın erken saatlerinde balonları izlemek için uyanır. Gün ağarırken yüzlerce renkli balon vadinin üzerinde yavaşça yükselir. Öğleden sonra yeraltı şehirlerini gezmek, akşam da yöresel bir lokantada testi kebabı yemek bu yolculuğun vazgeçilmezlerindendir.

Benchmarks

Freya-TR-Eval (495 sentences), scored with the Freya-TR-Eval re-run by PatientDesk AI: 3 seeded takes per system, faster-whisper large-v3 on audio band-limited to 8 kHz, corpus WER per take. Naturalness is UTMOS22, out of 5.

System Params WER % ↓ CER % ↓ Clean sentences ↑ UTMOS ↑
yazgı-tts-1, male-01 (best voice) 81M 0.90 ± 0.12 0.17 95.1% 4.01
EMA Lightning¹ 8.6M 0.92 ± 0.13 0.18 - 3.30
Antalia-2 Mini 1.0.1² 7.6M 1.02 0.21 - 3.18
yazgı-tts-1, female-01 81M 1.06 ± 0.25 0.20 93.9% 3.98
Alania-2 (API, best voice) 488M 1.15 ± 0.22 0.22 93.0% 3.52
Trendyol-TTS 2.38B 1.16 ± 0.16 0.23 93.1% 3.82
Gemini 3.8 Flash TTS - 1.23 ± 0.10 0.29 92.9% 3.53
Gemini 3.8 Flash-Lite TTS - 1.34 ± 0.19 0.27 91.9% 3.63
Anka TTS 336M 1.42 ± 0.06 0.30 91.6% 3.52

¹ From the EMA Lightning model card.

² From the Antalia-2 Mini model card.

Other rows are from the Freya-TR-Eval re-run.

Speed: real-time factor 0.17 on a laptop CPU (Apple M5, 4 threads), about 6x faster than real time. With streaming, the first audio is ready after 0.27 s on the same CPU.

Quick start

pip install "yazgi-tts[hub] @ https://huggingface.co/erkamk/yazgi-tts-1/resolve/main/dist/yazgi_tts-0.1.0-py3-none-any.whl"
python -m yazgi_tts "Siparişiniz 14 Ekim'de saat 15:30'da kargoya verildi." -o out.wav --voice male-01
from yazgi_tts import YazgiTTS, RATE
import soundfile as sf

tts = YazgiTTS()
audio = tts.say("Toplam tutar 1.299,90 TL.", voice="female-01")
sf.write("out.wav", audio, RATE)

# optional: your own readings for names the front end reads wrongly
tts = YazgiTTS(pronunciations={"Xiaomi": "şaomi"})

# streaming: play audio while the rest is still being made
for chunk in tts.stream("Merhaba! Siparişiniz hazırlanıyor.", voice="male-01"):
    ...  # each chunk is 24 kHz float32 audio

HTTP API: python -m yazgi_tts.serve --port 8000, then POST /tts {"text": "...", "voice": "male-01"} for a WAV file, or POST /tts/stream with the same body for raw 16-bit PCM at 24 kHz, sent while it is made.

Voice Description
male-01 (default) thirties, deep, warm, narrator
male-02 young adult, medium pitch, gentle, slow
male-03 fifties, medium pitch, soft, news presenter
male-04 thirties, low, soft
female-01 young adult, high, bright, receptionist
female-02 sixties, low, strong, calm
female-03 sixties, medium pitch, bright, confident
female-04 young adult, high, clear, relaxed

Model details

yazgı-tts-1 architecture

  • Codec: 24 kHz audio as 12.5 frames per second, each frame 16 codes from 2,048 (2.2 kbps). Decoder 25M; the 72M encoder is only needed to clone a new voice.
  • TTS model (56M): an autoregressive talker writes the first code of each frame; a small code predictor fills the other 15. The voice comes from a short reference and a speaker embedding.
  • Text front end: normalizer-tr 0.7.0 plus our rules for initialisms, codes and units. Long text is split into whole sentences (up to 300 characters) and decoded in one pass.
  • 81M parameters for speech in total.

Training

  1. Codec: 559k steps on Alania and about 600 h of real Turkish speech.
  2. Supervised training: about 120k steps on 2,485 h of Alania (1.65M clips, 2,706 voices).
  3. Speaker-embedding fine-tune: 15k steps.
  4. Reinforcement learning (GRPO): 125 steps, rewarding reading accuracy, voice similarity and naturalness.

Data and licenses

Source Kind License Hours Used for
Alania synthetic speech, CC BY subset synthetic, ~2,700 voices CC BY 4.0 2,485 (TTS), 1,150-1,860 (codec) TTS, codec
YODAS2 Turkish (tr000) real, YouTube CC BY 3.0 (per video) 500+ codec
Common Voice 21.0 Turkish real, crowd-recorded CC0 1.0 ~75 codec
MediaSpeech Turkish real, broadcast CC BY 4.0 10 codec
FLEURS Turkish (train) real, read speech CC BY 4.0 8.3 codec

Held out of all training: FLEURS dev and test, 1 in 40 Common Voice speakers, and Freya-TR-Eval.

Limitations

  • Little emotion. It reads clearly and calmly but does not show emotion such as excitement or sympathy.
  • Voice cloning is weak. tts.clone() builds a voice from 3-6 s of speech, but it only sounds close for voices like the built-in ones (similarity about 0.27 on real speakers). Use the built-in voices.
  • Turkish only. Foreign names, brand names and words are read with Turkish letter sounds; pass pronunciations to fix the ones you need.

Attribution

Resource By License Used for
Alania Synthetic Speech TR cloud0day3 CC BY 4.0 TTS and codec training
YODAS2 ESPnet (Li et al., 2023); each video by its uploader CC BY 3.0 Codec training
Common Voice 21.0 Mozilla Foundation (Ardila et al., 2020) CC0 1.0 Codec training
MediaSpeech Kolobov et al., 2021 CC BY 4.0 Codec training
FLEURS Google (Conneau et al., 2022) CC BY 4.0 Codec training
normalizer-tr its authors Apache-2.0 Text front end
spkrec-resnet-voxceleb SpeechBrain Apache-2.0 Speaker embeddings
Freya-TR-Eval Freya CC BY 4.0 Evaluation
Freya-TR-Eval re-run PatientDesk AI Apache-2.0 Evaluation harness

YODAS2 videos are licensed by their uploaders; the video ids are listed in ATTRIBUTION.md. Alania's speech was generated with VoxCPM2, and part of its text comes from FineWeb-2 (ODC-By 1.0).

License

Apache-2.0 for the code and the weights; see LICENSE. Credits for the training data are in NOTICE and ATTRIBUTION.md.

Downloads last month
57
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Datasets used to train erkamk/yazgi-tts-1

Space using erkamk/yazgi-tts-1 1