seslen-tts
English: An open Turkish text-to-speech model that runs on CPU, without PyTorch and without internet: 6 voices × 9 emotions, correct Turkish lexical stress and question intonation, automatic emotion per sentence and reading style per text. ONNX Runtime only (~330 MB model, downloaded from Hugging Face on first use). Real-time factor ≈ 0.2–0.4 on a laptop CPU.
İşlemcide çalışan, duygulu, vurguyu bilen açık Türkçe ses modeli. GPU, internet ve PyTorch gerekmez.
from seslen_tts import Seslen, wav_yaz
s = Seslen() # model ilk kullanımda Hugging Face'ten iner (~330 MB)
wav_yaz("merhaba.wav", s.tum("Merhaba! Yarın bize gelecek misiniz? Dikkat edin, yol kaygan.", ses="zeynep"))
seslen-tts "Bir varmış bir yokmuş, ormanda meraklı bir sincap yaşarmış." -s ayse -o masal.wav
seslen-tts --sesler
Neler yapar
- 6 ses, 9 duygu: nötr, neşeli, heyecan, uyarı, merak, özür, üzgün, kızgın, fısıltı.
- Türkçe vurgu doğru okunur: "ANkara", "geLİyor", "GELmedi". Okunuş turkce-vurgu ile çıkarılır; sayılar, tarihler, saatler, para ve kısaltmalar turkce-normalize ile okunur hâle gelir ("14:30'da" → "on dört otuzda").
- Soru ezgisi: evet/hayır sorusunda ezgi soru ekinden önceki sözcüğün vurgulu hecesinde yükselir ("yardımcı olaBİLİR misin?").
- Otomatik duygu: her cümlenin tonu metinden seçilir: soru merakla, uyarı uyarıyla, sevinç neşeyle okunur.
turkce-duygu gerekir (
pip install "seslen-tts[duygu]"). - Otomatik üslup: haber tempolu ve düz, masal yavaş ve hareketli, tarif adım adım okunur.
turkce-uslup gerekir (
pip install "seslen-tts[uslup]").
Kurulum
pip install seslen-tts # temel: sesler, vurgu, soru ezgisi
pip install "seslen-tts[hepsi]" # + otomatik duygu ve üslup
Python 3.9+, Windows / Linux / macOS. Model SESLEN_TTS_MODEL ortam değişkeniyle yerel bir klasörden de okunur.
Sesler
| Ses | Kim | Doğallık (UTMOS) |
|---|---|---|
ayse |
olgun kadın (~45), orta-kalın, güven veren | 4,04 |
zeynep |
genç kız (~17), ince, canlı | 3,95 |
koca |
iri kalın dev, gürleyen ama sevimli (çizgi karakter) | 3,90 |
fatma |
yaşlı kadın (~70), ince, şefkatli nine | 3,53 |
emre |
genç erkek (~18), orta, enerjik | 2,93 |
hasan |
yaşlı erkek (~72), kalın, bilge dede | 2,78 |
Örnek sesler: Hugging Face model sayfası.
Kullanım
s = Seslen()
for p in s.seslendir(metin, ses="emre", ton="otomatik", uslup="otomatik"): # cümle cümle, akış hâlinde
print(p.ton, p.cumle) # p.ses: 24 kHz float32 dizi; p.sessizlik_ms: sonraki duraklama
s.tum(metin, ses="fatma", ton="uzgun") # bütün metin tek tonda
s.tum(metin, ses="hasan", hiz=0.9, perde=1.05) # hız ve ses perdesi
s.tum(metin, ses="zeynep", ton="neseli", yogunluk=0.6) # duygu şiddeti (0-1, 1 = tam ton)
Alt düzey: s.model.konus(cumle, s.model.stil("ayse", "merak")) tek cümleyi seslendirir.
Ölçümler
- Anlaşılırlık (Whisper medium, 6 ses × 4 yeni cümle): %100. Whisper sayıları rakamla yazdığı için ("onda" → "10'da") ham ölçüm %93,2 görünür.
- Doğallık: UTMOS 2,8–4,0 (tablo). UTMOS İngilizce dinleyicilerle eğitildi; Türkçe vurguyu yargılayamaz, yapaylığı yakalar.
- Hız (i7-12700H, 6 iş parçacığı): gerçek zaman oranı ≈ 0,2–0,4. Yani 5 saniyelik cümle 1–2 saniyede üretilir. Windows'un arka plan süreçlerine uyguladığı enerji kısıtı paket tarafından kapatılır (yoksa 4–5 kat yavaşlıyordu).
Nasıl yapıldı
StyleTTS2 (iSTFTNet çözücü) öğrenci modeli. Ses ve duygu verisini öğretmen model VoxCPM2 üretti: sesler tariften tasarlandı, gerçek bir kişinin sesi değildir. Eğitim üç aşamalıdır: temel, difüzyon ve çekişmeli ince ayar, son olarak vurgu işaretli okunuş ile Türkçe PL-BERT. Eğitim tek RTX 4090'da yapıldı. Ağlar ONNX'e aktarıldı; aktarımın sesi değiştirmediği sınandı (log-mel farkı, modelin kendi iki çalıştırması arasındaki farkın altında).
Sınırlılıklar
- Ses klonlama yok. Bu bilerek böyle: açık modelle başkasının sesini taklit etmek mümkün olmasın diye yalnız hazır sesler var.
- Yalnız Türkçe. Yabancı sözcükler Türkçe okunuşla okunur.
- Uzun yabancı adlarda, kısaltma yığınlarında ve çok uzun cümlelerde okunuş hataları olabilir.
- Duygular seslere göre farklı belirginliktedir (ölçülenler arasında en belirgin: Ayşe ve Zeynep).
Lisans ve kullanım koşulları
- Kod: MIT (LICENSE).
- Model ağırlıkları ve sesler: CC BY-SA 4.0. Türkçe PL-BERT Vikipedi metniyle eğitildi; öğretmen VoxCPM2 Apache-2.0, StyleTTS2 MIT.
- Kullanım koşulu (öğretmen modelin ve StyleTTS2'nin koşullarından):
- Üretilen sesin yapay zekâ sesi olduğu dinleyiciye belirtilmelidir.
- Gerçek bir kişiyi taklit etmek, dolandırıcılık ve dezenformasyon için kullanmak yasaktır.
Ticari ürün sesleri, özel ses tasarımı, stüdyo arayüzü ve kurum içi kurulum: Seslen (iletişim).
Kardeş projeler
turkce-normalize · turkce-vurgu · turkce-duygu · turkce-uslup · turkce-plbert · turkce-tts-sinav
Metadata
Release files for seslen-tts 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| seslen_tts-0.1.0.tar.gz | 15.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| seslen_tts-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.7 kB
Release files / seslen_tts-0.1.0.tar.gz
| Download URL | seslen_tts-0.1.0.tar.gz |
|---|---|
| Size | 15.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
532bb2d65c5cea152d46d60a78a8b7553c9e71fb78bc9d436f0dc14408504584
|
|
BLAKE2b-256 checksum How to use checksums |
afc03ecd27cedd719dd44912c568c7498b18668345f2720f1636b85546536c6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Release files / seslen_tts-0.1.0-py3-none-any.whl
| Download URL | seslen_tts-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c11a538559ac6700f2ee7537a50b9c5382aaefaf8cde99098e04a0aea62cb13b
|
|
BLAKE2b-256 checksum How to use checksums |
96778282b87c2502189639f795aceee1dc8d0b2b366ffedf9c94e32388281d5d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|