F5-TTS mimarisi · 336M parametre · zero-shot klonlama

Anka TTS,
Türkçe için eğitildi.

1 Anka TTS nedir

Türkçe için eğitilmiş konuşma modeli.

Anka TTS, F5-TTS mimarisi üzerinde Türkçe konuşma verisiyle eğitildi. 495 cümlelik testte WER %1,73 sonucunu veriyor.

model kartı 260.000 adım
  • MimariF5-TTS · DiT + flow matching
  • Parametre336M
  • DilTürkçe
  • İnce ayar260.000 adım
  • Sesvarsayılan dahil · zero-shot klonlama
  • Çıktı24 kHz · mono
terminal
pip install "anka-tts[tts]"
hizli_baslangic.py
from anka import AnkaTTS

tts = AnkaTTS.from_pretrained("anka-tts/v0.1", device="cuda")

# varsayılan ses
wav = tts.synthesize("2026'da toplantı 14:30'da mı?")
tts.save_wav(wav, "cikti.wav")

# kendi sesiniz · isteğe bağlı
tts.add_voice("anlatici", "referans.wav",
              "Bugün İstanbul'da hafif bir rüzgar var.")
wav = tts.synthesize("Merhaba!", voice="anlatici")

Ağırlıklar from_pretrained ile iniyor; model CUDA, MPS ve CPU üzerinde aynı arayüzle çalışıyor. Çıktı her seferinde aynı sözleşmeye uyuyor: 24 kHz, mono, yeniden üretilebilir.

2 Ölçüm

Sekiz sistem, aynı test
Anka TTS birinci.

Türkçe TTS sistemlerinin WER, CER ve RTF karşılaştırması
# Sistem Params Referans ses WER % CER % RTF
1 Anka TTS 336M Evet 1,73 ± 0,05 0,41 ± 0,05 0,160
2 Chatterbox MTL 500M Evet 1,84 ± 0,20 0,41 ± 0,08 0,379
3 Piper (tr, dfki) 16M Hayır 3,22 0,71 0,065
4 XTTS-v2 (base) 470M Evet 3,34 ± 0,38 1,33 ± 0,20 0,140
5 MMS-TTS (tr) 36M Hayır 6,41 1,52 0,015
6 Coqui GlowTTS (tr) 28M Hayır 10,75 2,92 0,016
7 FreyaTTS 183M Hayır 12,02 4,95 0,119
8 F5 base (Türkçe yok) 336M Evet 77,84 ± 0,13 32,58 ± 0,54 0,146
Kapsam

Bir milyar parametre altındaki modeller. WER, CER ve RTF'de düşük olan iyi; addaki çubuk WER'i ölçekliyor, taralı olan ölçeğin dışında.

Tekrar

Her sistem üç kez koşuldu; ± aradaki standart sapma. ± taşımayan satırlar referans almayan, deterministik sistemler; tekrarı aynı sesi üretirdi, bir kez koşuldular.

Referans

Referans alan her sisteme aynı klip verildi: paketle gelen male sesi.

Hız ayarı

Ölçümler bütün modeller için speed=1.0 ile gerçekleştirildi. Paketin kendi varsayılanı speed=0.85 ve aynı sette WER %1,50 · CER %0,31 veriyor.

Ayrım

Anka ile Chatterbox sayısal olarak ayrışıyor ama güven aralıkları çakışıyor; bu test ikisini birbirinden ayırmıyor.

Betik

Ölçüm tekrarlanabilir: değerlendirme betiğini görüntüleyin ↗

3 Dinle

Rakamlar bir yana.
Kulağa böyle geliyor.

Örnek 1 erkek · 8,2 sn referans
Referans 0:00
Anka TTS çıktısı 0:00

“Toplantı 15.03.2026'da saat 14:30'da başlıyor.”

Örnek 2 kadın · 8,1 sn referans
Referans 0:00
Anka TTS çıktısı 0:00

“Dr. Ayşe Yılmaz'ın raporuna göre üretim %12 arttı.”

Her iki çıktı da varsayılan ayarlarla üretildi; birden çok denemeden seçim yapılmadı.

Kendi metninle dene Hugging Face Spaces üzerinde tarayıcıda çalışır; ses klonlama ve otomatik referans metni dahil.
4 Modelin içinde

Metin giriyor, ses çıkıyor.
Arada birkaç karar var.

Birden çok ses

Pakette hazır iki Türkçe ses geliyor, kadın ve erkek. Kendi kaydınızı bir adla kaydettiğinizde diske kopyalanıyor, sonraki oturumlarda da duruyor; ince ayar, LoRA ya da GPU saati gerekmiyor. Her çağrıda voice= ile kimin konuşacağını seçiyorsunuz, aynı metnin farklı bölümleri farklı seslerle okunabiliyor. Referansın birebir transkripti şart: model süreyi ondan kestiriyor.

add_voice("anlatici", "ref.wav", text="...")
list_voices() ["female", "male", "anlatici"]
synthesize(metin, voice="anlatici")

Uzun metin ve üretim penceresi

Model tek geçişte sınırlı uzunlukta ses üretiyor ve o an hangi ses kullanılıyorsa onun referansı bu pencerenin bir kısmını kaplıyor. Kendi haline bırakılsa F5 bütçe dolduğunda en yakın noktalamadan bölüyor, bu da cümlenin ortasındaki bir virgül olabiliyor. Anka metni önce cümlelere ayırıp pencereye sığdığı kadarını grupluyor, böylece dikiş her zaman cümle sonuna düşüyor. Paragraf sınırı hiç aşılmıyor ve geçişte duraklama uzuyor; tek başına pencereye sığmayan cümle en az zarar veren yerden bölünüyor, bu da uyarıyla söyleniyor.

sentence_pause=0.15  paragraph_pause=0.45

Metin normalizasyon katmanı

Metin modele ulaşmadan önce adım sırası sabit bir katmandan geçiyor: tarih, saat, para, yüzde, birim, Roma rakamı, sıra sayısı ve kısaltmalar okunuşa çevriliyor. Sıra sözleşmenin parçası, çünkü tarih adımı sayıdan önce çalışmazsa 15.03.2026 binlik ayraçlı bir sayı sanılıyor. Ek, yazılana göre değil okunuşa göre yeniden kuruluyor; ünlü uyumu buradan geliyor. Kısaltmanın harf harf mi yoksa kelime gibi mi okunacağına bir liste değil Türkçe hece yapısı karar veriyor. Noktalama olduğu gibi kalıyor, en çok da soru işareti: model tonlamayı oradan okuyor.

1.250 TL'yi bin iki yüz elli lirayı
15.03.2026'da on beş mart iki bin yirmi altıda
TCDD te ce de de  ·  NATO Nato

Klonlama kalitesini belirleyen tek en önemli şey

Klonlama sonucunu belirleyen şey referans kaydı; modelden de parametrelerden de daha çok. Uzun referans üretim penceresinden pay aldığı için geriye sentezlenecek daha az süre kalıyor. Kısa referansın sorunu ise farklı: model ses karakteristiğini yeterince alamıyor. 7-9 saniye ikisinin arasındaki bant.

Süre 7-9 saniye < 5 sn model sesi tanıyamaz, > 12 sn kırpılır
İçerik Düşen tonlamayla biten tam cümle Cümle ortasından kesilmiş parça
Transkript Noktalamalı, birebir söylenen Noktalamasız, yaklaşık, eksik
Kayıt Tek konuşmacı, sessiz ortam, 24 kHz+ Gürültü, müzik, yankı, 16 kHz
Seviye Normal kayıt seviyesi Sonradan normalize edilmiş, taban gürültüsü yükselir