Skip to main content

turkce-vurgu

English: Turkish grapheme-to-phoneme conversion with lexical stress: text → stress-marked IPA for TTS models, without espeak and without dependencies. Handles exceptional stress (place names, loanwords, pre-stressing suffixes such as negative -mA and the question particle mI) and k/g/l palatalization, which espeak gets wrong for Turkish.

Türkçe metni, ses sentezi (TTS) modellerinin girdisi olan vurgu işaretli IPA okunuşa çevirir. espeak gerektirmez, bağımlılığı yoktur.

from turkce_vurgu import g2p

g2p("Ankara'ya gitmedik ama yarın gideceğiz, değil mi?", vurgu=True)
# 'ˈankaɾaja ˈɟitmedic ˈama ˈjaɾɯn ɟidedʒeˈiz, deˈil mi?'
python -m turkce_vurgu "Sapanca gölünün kıyısında yürürken İstanbul'u düşündüm."
saˈpandʒa ɟølyˈnyn kɯjɯsɯnˈda jyˈɾyɾcen isˈtanbuɫu dyʃynˈdym.

Neden

Açık kaynak Türkçe ses modelleri okunuşu çoğunlukla espeak ile çıkarır. espeak'in Türkçesinde vurgu çoğu zaman yanlıştır (ˈAnkara yerine Anˈkara, geˈliyor yerine geliˈyor), k/g/l incelmesi eksiktir. Lisansı da GPL olduğu için ticari ürüne girmesi zordur. Bu paket MIT lisanslıdır ve Türkçe kurallarla çalışır.

Ne yapar

Okunuş (G2P)

  • k, g, l ön ünlüyle incelir: kâr → caːɾ, göl → ɟøl, ilk → ilc.
  • Uzun ünlüler korunur (â, î, û). ğ önceki ünlüyü uzatır ya da düşer: dağ → daː, ağaç → aatʃ.
  • Sayılar, yüzdeler, ondalıklar ve sık kısaltmalar sözcüğe açılır: %12,5 → yüzde on iki virgül beş, 1.250 km → bin iki yüz elli kilometre.
  • Yazımda görünmeyen uzun ünlüler ve kural dışı ince l/k/g için okunuş sözlüğü (1.488 sözcük, Vikisözlük): nadir → naːdiɾ, malum → maːlum, metal → metal (ince l), kilometre → cilometɾe. Ekli biçimlerde kök sözlükten, ekler kurallarla okunur.
  • Noktalama korunur; modeller duraklama ve tonlamayı noktalamadan öğrenir.

Sözcük vurgusu (vurgu=True): vurgulu hecenin önüne ˈ konur. Kurallar Türkçe vurgu literatüründen alınmıştır (kaynaklar aşağıda). Yöntem Oflazer & Inkelas'ınkiyle aynıdır: sözcükteki bütün vurgu adayları toplanır, en soldaki kazanır, aday yoksa son hece vurgulanır.

Aday Örnek Kaynak
Varsayılan: son hece; ekler eklendikçe vurgu sona kayar kitapˈlar, kitaplarˈdan, bırakaˈcak I&O 140
Sözlüksel vurgulu kök; ek alsa da vurgu kökte kalır loˈkantaya, tarˈhanada, ˈşimdi, ˈorada G&K 27–29, Ink ex.64
Vurgu almayan ekler: vurgu ekten önceki hecede (olumsuzluk -mA-, ek-eylem -(y)DI / -(y)mIş / -(y)sA / -(y)Im, -DIr, -(y)ken, -(y)lA, -CA, -leyin, -CAsInA, emir -(y)In) ˈgitmedik, oˈkumayacak, okulˈdaymışlar, öğrenˈciyim, kiraˈlıktır, araˈbayla, güˈzelce, ˈtürkçe I&O 141, Ink ex.61–62, G&K 32–34
Vurgu çeken ekler: vurgu ekin ilk hecesinde (-Iyor, -ArAk, -IncE, -(y)Iver, -(y)Akal, -mAksIzIn) geˈliyor, yaˈparak, geˈlince, tuˈtuver, bakˈmaksızın Ink ex.54, 61; G&K
Olumsuz geniş zaman vurgulanır gelˈmez, bakˈmazdık, yazˈmayız G&K
Yer adları ve yabancı adlar: Sezer kuralı (Türkçe kişi adları hariç; -istan, -hane hariç) ˈAnkara'ya, İsˈtanbul'u, Saˈpanca, hindisˈtan, Ahmeˈt'e Sezer 1981, I&O 143–150
Vurgusuz sözcükler soru eki mi (misin, midir…), de/da, ki, ya, bile, ise, ile G&K

Özel adlar büyük harf ve kesme işaretinden tanınır (Serdivan'daki, cümle ortasında Zeynep). Türkiye illeri ve bazı ilçeler cümle başında da tanınır.

Yazımdan çözülemeyen ikiliklerde vurgulanabilir okuma (son hece) seçilir. Örnekler:

  • GİTme ("gitme!") / gitME ("gitmek");
  • -(y)Im ek-eylemi / iyelik;
  • yüklem -lAr / çoğul -lAr.

Doğruluk

Literatürdeki örnekler (tests/literatur.tsv). Kaynaklarda vurgusu verilmiş 123 sözcük ve çekimli biçim; her satırda kaynağı yazar:

Grup Doğru
Ek ve kök kuralları (çekimli biçimler) 90 / 90
Sezer kuralı (yer adları, yabancı adlar) 30 / 33
Toplam 120 / 123 (%97,6)

Sezer grubundaki 3 hata (santaMOnika, monTAna, papaDOpulos) Sezer kuralının kaynaktaki tanımıyla da çelişiyor; Inkelas bu adları kural dışı örnek olarak veriyor. Kaynaklar arasında çelişen 2 örnek ve bağlam gerektiren 6 örnek ölçüye katılmadı.

Vikisözlük (degerlendirme/vikisozluk.py, 9.030 sözcük, 5 katlı çapraz doğrulama). Vikisözlük'ün okunuş şablonu vurgu belirtilmezse son heceyi kendiliğinden işaretler. Bu yüzden yalnız son hece dışındaki işaretler güvenilir altın veridir.

  • Son hecesi vurgulu sıradan sözcüklerde (adlar, sıfatlar, eylemler) kurallar %98,6–98,9 oranında aynı yeri bulur.
  • Son hece dışı vurgulu sözcükler (1.234 sözcük, çoğu yabancı kökenli): sözlüğe girmemiş bir sözcüğün vurgusunu kurallar ancak özel adlarda tahmin edebilir (%62). Bu vurgu tanım gereği sözlükseldir. Bilinenler turkce_vurgu/veri/istisna.tsv sözlüğündedir (1.203 sözcük).

Karşılaştırma için: espeak-ng'nin Türkçe vurgusu Vikisözlük'le yalnız %55 oranında aynı hecede buluşur (Ghostwriter-Dict ölçümü).

Kaynaklar

  • I&O: S. Inkelas & C. O. Orgun (2003). Turkish stress: a review. Phonology 20:139–161.
  • Ink: S. Inkelas (1999). Exceptional stress-attracting suffixes in Turkish: representations versus the grammar. The Prosody-Morphology Interface, 134–187.
  • G&K: A. Göksel & C. Kerslake (2005). Turkish: A Comprehensive Grammar, s. 26–34.
  • Sezer: E. Sezer (1981). On non-final stress in Turkish. Journal of Turkish Studies 5:61–69.
  • O&I: K. Oflazer & S. Inkelas. A finite state pronunciation lexicon for Turkish.
  • B. Kabak & I. Vogel (2001). The phonological word and stress assignment in Turkish. Phonology 18.
  • J. Woodard (2015). Stress rules for Turkish language learners. GIALens 9(1).
  • H. Yawney (2018). Toronto Working Papers in Linguistics 40.
  • Vikisözlük (Wiktionary) Türkçe maddeleri, kaikki.org dökümü (wiktextract), CC BY-SA 4.0.

Semboller: Çıktı yalnız StyleTTS2'nin (ve Kokoro'nun) 178 sembollük listesindeki sembolleri kullanır. Bu modellerin önceden eğitilmiş metin gömmeleri doğrudan kullanılabilir.

Bilinen sınırlar

  • Kurallar sözcük düzeyindedir. Cümle vurgusu (odak) ses modelinin işidir.
  • Tam bir biçimbilim çözümleyicisi yoktur. Ekler sözcük sonundaki kalıplardan tanınır; bir ekin gerçekten ek olduğu Vikisözlük kök ve eylem listeleriyle sınanır (güzel+ce ✓, düşün+ce ✗). Belirsiz durumlarda son hece kullanılır.
  • Sözlükte olmayan yabancı kökenli sözcüklerin vurgusu tahmin edilemez (son hece varsayılır). Kaynaklı eklemeler turkce_vurgu/vurgu.py içindeki LITERATUR listesine yapılır.

İlgili projeler

  • turkce-plbert: bu paketin vurgulu okunuşuyla eğitilmiş Türkçe PL-BERT. StyleTTS2/Kokoro gibi modellerde tonlamayı besler.

Test

python -m unittest discover -s tests

English summary

Rule-based Turkish grapheme-to-phoneme conversion with lexical stress marking (IPA ˈ), for TTS front-ends. It has no dependencies, is espeak-free and MIT-licensed. It handles palatal k/g/l, long vowels, soft-g, and number and abbreviation expansion. Stress assignment follows the linguistic literature (Inkelas & Orgun 2003; Inkelas 1999; Göksel & Kerslake 2005; Sezer 1981) using the Oflazer & Inkelas leftmost-wins algorithm. It combines lexically stressed roots (1,203 entries from Wiktionary, CC BY-SA), pre-stressing and stress-attracting suffixes, and Sezer stress for place and foreign names.

  • On 123 stress examples cited in the literature, 120 are correct (97.6%).
  • On final-stressed common words from Wiktionary, the rules agree 98.6–98.9% of the time.
  • For comparison, espeak-ng agrees with Wiktionary on the stressed syllable in only 55% of words.

The output uses only StyleTTS2/Kokoro symbols. A Turkish PL-BERT trained on this G2P lives in the sister project turkce-plbert.

Lisans

Kod MIT, bkz. LICENSE. turkce_vurgu/veri/ altındaki sözlük dosyaları Vikisözlük'ten türetildiği için CC BY-SA 4.0'tır (degerlendirme/sozluk_uret.py üretir).

Metadata

Release files for turkce-vurgu 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for turkce-vurgu 0.1.0
File Size Uploaded
turkce_vurgu-0.1.0.tar.gz 126.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for turkce-vurgu 0.1.0
File Interpreter ABI Platform
turkce_vurgu-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 246.9 kB

Release files / turkce_vurgu-0.1.0.tar.gz

Download URL turkce_vurgu-0.1.0.tar.gz
Size 126.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b3746f3b61e6e1fc653f066809cbc4505a3b264a55bdc1068f1b2d8338cdd3d7
BLAKE2b-256 checksum
How to use checksums
f9175b47b076745ff2642ddb5be938e91c2a3f07466032b3f6c5eeee78b05823
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release files / turkce_vurgu-0.1.0-py3-none-any.whl

Download URL turkce_vurgu-0.1.0-py3-none-any.whl
Size 120.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bad799bbdf86c4942be9905767b9080dfae12cca7bc62d2ddd2a854e8d44e0a1
BLAKE2b-256 checksum
How to use checksums
f24eebf984df3b130f9080f39209ef05a1519f84cc2e3e4798cb24858575594e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page