Text-to-Speech
VoxCPM
Turkish
lora
turkish
synthetic-voice
designed-voice
emotional-tts

Ahenk: Türkçe metinden sese (VoxCPM2 + LoRA)

Ahenk, VoxCPM2 için Türkçe bir LoRA adaptörüdür: 2B taban model + 36.2 M parametrelik LoRA, 48 kHz, tek bir tasarlanmış kadın sesi (f022), 6 duygu ve gülme, ağırlıklar CC-BY-4.0. GPU gerektirir.

Bu ses yapaydır. f022, VoxCPM2 ile İngilizce bir metin tarifinden tasarlandı; gerçek bir kişinin sesi ya da kaydı değildir. Eğitim seslerinin tamamı yapay zekâ ile üretildi. Ürettiğiniz sesi paylaşırken yapay olduğunu belirtin (AB Yapay Zekâ Yasası md. 50).

This voice is synthetic. It was designed from a text description; it is no real person. Label what you generate as AI-generated.

Küçük model: Ahenk Cep · Kod ve ölçüm düzeneği · English

Küçük model Ahenk Cep'i tarayıcıda deneyin / try the small model Ahenk Cep in your browser: ozguradmin.github.io/ahenk-turkish-tts.

Örnekler

Hepsi yayınlanan kontrol noktasından (voxcpm2-f022-s3tr/step_0000500), 16 adım, cfg 2.0, tohum 0 ya da 1, trnorm ön ucu, sentez sonrası pause_clean. Yeni sentez yapılmadı; değerlendirme ve dinleme turlarındaki klipler.

Ne gösteriyor / What it shows Metin / Text Talimat / Instruction Ses / Audio Seçim / Picked by
Gülerek / laughing Hahaha, bu fıkrayı daha önce hiç duymamıştım! (Laughing heartily while speaking.) dinleyici, 2 tohumdan / listener, of 2 seeds
Neşeli / cheerful Harika haber! Sınavı geçtim, akşam hep birlikte kutlayalım! (Cheerful and warm, smiling while speaking.) dinleyici, 2 tohumdan / listener, of 2 seeds
Sakin / calm Derin bir nefes alın, her şeyi adım adım birlikte halledeceğiz. (Calm, slow and soothing.) dinleyici, 2 tohumdan / listener, of 2 seeds
Düz okuma / plain Eskişehir'den İzmir'e otobüsle gittik. - dinleyici, kör 4 sistem / listener, blind, 4 systems
Para, trnorm ile / money via trnorm İndirimle 99,99 TL'ye düştü.
→ İndirimle doksan dokuz lira doksan dokuz kuruşa düştü.
- dinleyici, kör 4 sistem / listener, blind, 4 systems
Soru çifti: düz cümle / pair: statement Cihazın garanti süresi 2 yıl.
→ Cihazın garanti süresi iki yıl.
- ölçüm: hatasız, tonlama denetimi geçti / metric: word-perfect, passes the intonation check
Soru çifti: mı sorusu / pair: mı-question Cihazın garanti süresi 2 yıl mı?
→ Cihazın garanti süresi iki yıl mı?
- ölçüm: hatasız, tonlama denetimi geçti / metric: word-perfect, passes the intonation check
Uzun cümle, eğitimde yok / long, held-out Karşılaştırma isteyenlere eski ve yeni paketi yan yana anlatırız; farkı müşteri kendisi görür. Akşam olduğunda kısa bir değerlendirme yaparız: hangi sorular arttı, hangi açıklama iyi çalıştı, nerede zorlandık? - ölçüm: 20 ayrılmış cümlede hatasız ve en yüksek UTMOS / metric: word-perfect, highest UTMOS of 20
Kızgın / angry Yeter artık! Üç gündür aynı sorun için arıyorum ve hâlâ kimse ilgilenmedi! (Angry tone, voice getting louder.) dinleyici, 2 tohumdan / listener, of 2 seeds
Üzgün / sad Ne kadar uğraştıysam da yetişemedim, onunla son kez vedalaşamadım. (Sad and quiet, with a heavy heart.) dinleyici, 2 tohumdan / listener, of 2 seeds
Empatik / empathetic Yaşadığınız sorun için gerçekten çok üzgünüm, hemen ilgileniyorum. (Warm and compassionate, as if comforting someone.) dinleyici, 2 tohumdan / listener, of 2 seeds
Şaşkın / surprised Vaay canına! Bütün bu emeği tek başına mı verdin? (Şaşkın, yükselen bir tonlamayla.) dinleyici, 2 tohumdan / listener, of 2 seeds
Şaşkın, "c" ile / surprised, with a "c" Cidden mi? Yarın gerçekten geliyor musun? (Şaşkın, yükselen bir tonlamayla.) dinleyici, 2 tohumdan / listener, of 2 seeds

"Dinleyici" satırları kör dinlemede tek bir anadil dinleyicinin seçtiği kliplerdir (aşağıda). "Ölçüm" satırları otomatik ölçüyle seçildi; dinleyici bunları ayrıca seçmedi. Soru çiftini art arda dinleyin: aynı cümle, bir kez noktayla, bir kez "mı?" ile.

Hızlı başlangıç

pip install "voxcpm @ git+https://github.com/OpenBMB/VoxCPM@f0c787f0937dc1c9a8f4f64d9a332d9c5da2e629" soundfile scipy
pip install "git+https://github.com/ozguradmin/ahenk-turkish-tts"   # trnorm
import json, sys
from pathlib import Path
import soundfile as sf
from huggingface_hub import snapshot_download
from trnorm import normalize
from voxcpm import VoxCPM
from voxcpm.model.voxcpm import LoRAConfig

repo_dir = snapshot_download("ozgurguler/ahenk-tts-tr", allow_patterns=["lora_*", "*.py", "instructions_tr.json"])
sys.path.insert(0, repo_dir)
from instruction_pick import compose, pick  # noqa: E402  (stdlib)
from pause_clean import clean  # noqa: E402  (numpy + scipy)

lora_cfg = json.loads(Path(repo_dir, "lora_config.json").read_text(encoding="utf-8"))["lora_config"]
tts = VoxCPM.from_pretrained("openbmb/VoxCPM2", load_denoiser=False, optimize=False,
                             lora_config=LoRAConfig(**lora_cfg), lora_weights_path=repo_dir)
SR = tts.tts_model.sample_rate  # 48 kHz


def say(text: str, emotion: str = "", path: str = "cikti.wav", prefer: str = "auto") -> None:
    instruction, model_text, _ = pick(emotion, normalize(text), prefer)
    wav = tts.generate(text=compose(instruction, model_text), cfg_value=2.0, inference_timesteps=16, normalize=False)
    sf.write(path, clean(wav, SR)[0], SR)


say("Randevunuz 14.10.2026 saat 09:30'da; ücret 1.250 TL.", path="duz.wav")
say("Yeter artık! Bu sorun hâlâ çözülmedi!", "angry", "kizgin.wav")

Referans klip vermeyin: ses LoRA'nın içinde. PyPI'deki voxcpm 2.0.3 de çalışır (lora_config açıkça veriliyor), ama onun generate()'i seed almaz.

Duygu ve talimat

say()'in ikinci argümanı bir duygu adıdır (Türkçe adı da olur) ya da kendi talimatınız. pick() her duygu için eğitimdeki tek bir ifadeyi kullanır ve dili seçer: metnin ilk iki kelimesinden biri "c" ile başlıyorsa Türkçe talimat, yoksa İngilizce. Nedeni: İngilizce talimat duyguyu daha güçlü verir ama baştaki "c"yi İngilizce okutur ("Vay canına" → "vey kenına"); Türkçe talimat "c"yi doğru okutur, duyguyu daha hafif verir. prefer="tr" ya da "en" dili zorlar.

Duygu pick() adı İngilizce talimat Türkçe talimat
kızgın angry Angry tone, voice getting louder. Kızgın bir ses tonuyla, sesi giderek yükselerek.
neşeli cheerful Cheerful and warm, smiling while speaking. Neşeli ve sıcak, konuşurken gülümseyerek.
üzgün sad Sad and quiet, with a heavy heart. Üzgün ve sessiz, içi burkularak.
sakin calm Calm, slow and soothing. Sakin, yavaş ve yatıştırıcı.
şaşkın surprised Astonished, with rising intonation. Şaşkın, yükselen bir tonlamayla.
empatik empathetic Warm and compassionate, as if comforting someone. Sıcak ve şefkatli, birini teselli eder gibi.
gülerek laughing Laughing heartily while speaking. Konuşurken kahkahalarla gülerek.

Gülme için "haha" metinde kalmalı; her tohumda gerçek gülme çıkmayabilir. Kural, iki kör dinleme turundaki 20 kararın 18'iyle uyuşuyor (tek dinleyici). Eğitimdeki bütün ifadeler:

Eğitimde kullanılan talimat ifadeleri / all training wordings
Duygu / Emotion Önerilen / Recommended İngilizce aslı / English original Diğer eğitim ifadeleri / other training wordings
kızgın / angry Kızgın bir ses tonuyla, sesi giderek yükselerek. Angry tone, voice getting louder. Sinirli ve sert, kesik kesik konuşarak.
Öfkeli ve tepkili, her kelimede sesi biraz daha yükselerek.
Çok kızgın ve bıkmış, sert ve üstüne basa basa konuşarak.
Öfkeden deliye dönmüş, keskin ve yüksek sesle, neredeyse bağırarak.
Çok sinirli, sesi sertleşmiş, hızlı hızlı konuşarak.
Biraz sinirlenmiş, sert ve sabırsız.
Biraz kızgın, soğuk ve gergin.
neşeli / cheerful Neşeli ve sıcak, konuşurken gülümseyerek. Cheerful and warm, smiling while speaking. Mutlu ve keyifli, parlak ve canlı bir sesle.
Cıvıl cıvıl ve şakacı, hareketli bir ritimle.
Heyecanlı ve sevinçli, parlak bir sesle hızlı konuşarak.
Çok mutlu ve enerjik, coşku dolu.
Çok heyecanlı, sevinçten neredeyse gülecek gibi.
Biraz neşeli, rahat ve samimi.
Tatlı bir mutlulukla, konuşurken hafifçe gülümseyerek.
üzgün / sad Üzgün ve sessiz, içi burkularak. Sad and quiet, with a heavy heart. Hüzünlü ve sessiz, yavaş konuşarak.
Kederli ve durgun, uzun duraklamalarla.
Çok üzgün, yavaş ve alçak sesle, neredeyse fısıldayarak.
Derin bir üzüntüyle, sesi alçak ve titrek.
Çok üzgün, ağlamaklı.
Biraz üzgün ve yorgun, enerjisiz.
Hayal kırıklığına uğramış ve morali bozuk, yumuşak ve yavaş.
şaşkın / surprised Şaşkın, yükselen bir tonlamayla. Astonished, with rising intonation. Şaşırmış, inanamıyormuş gibi sesi yükselerek.
Hayret içinde, beklenmedik bir haber almış gibi.
Çok şaşırmış, sesi birden incelerek.
Şok olmuş, gözleri fal taşı gibi açılmış, inanamayarak hızlı konuşarak.
Son derece şaşkın, sesi bir anda incelerek.
Biraz şaşırmış, meraklı ve canlı.
Hoş bir şaşkınlıkla, parlak ve yükselen bir sesle.
sakin / calm Sakin, yavaş ve yatıştırıcı. Calm, slow and soothing. Yumuşak ve dingin, ara ara usulca duraklayarak.
Sakin ve güven veren, alçak ve dengeli bir sesle.
Çok sakin ve rahat, yumuşak ve yavaş konuşarak.
Huzurlu ve telaşsız, meditasyon yaptırır gibi.
Çok huzurlu, alçak sesle ve tane tane.
Sakin ve dengeli, normalden biraz daha yavaş.
Ağırbaşlı ve nazik, düzenli bir tempoyla.
empatik / empathetic Sıcak ve şefkatli, birini teselli eder gibi. Warm and compassionate, as if comforting someone. Empatik ve içten, yumuşak bir sesle konuşarak.
Sıcak, sabırlı ve güven veren, anlayış dolu.
Çok nazik ve şefkatli, yumuşak ve sabırlı.
Derin bir anlayışla, şefkatli ve yavaş.
Çok şefkatli, yakın bir arkadaşını teselli eder gibi.
Biraz endişeli, nazik ve anlayışlı.
Nazik ve özür diler gibi, yumuşak ve içten.
gülme / laughter Konuşurken kahkahalarla gülerek. Laughing heartily while speaking. Neşeli bir gülüşle konuşarak.
Kıkır kıkır gülerek, eğlenerek.

Tablo, instructions_tr.json'daki 77 ifadeden eğitimde kullanılan 51 ifadeyi gösterir; kalan 26 ifade (ayrılmış ifadeler ve dinleme yarışmasının ifadeleri) eğitimde yoktu / the table shows the 51 of the 77 wordings in instructions_tr.json that training used; the other 26 (held-out wordings and the listening contest's) were never trained.

Önerilen ayarlar

  • inference_timesteps=16, cfg_value=2.0: aşağıdaki ölçümlerin ayarı. 10 adım daha hızlıdır, ölçülmüş tam bir karşılaştırma yok.
  • normalize=False ve önce trnorm.normalize: model trnorm'un okunuş formuyla eğitildi. VoxCPM'in kendi normalizer'ı sayıları ve ekleri bozar.
  • pause_clean.clean: duraklardaki nefes sesini kısar (en çok 25 dB), konuşmaya dokunmaz. Kör A/B'de (4 uzun cümle) temizlenmiş sürümde nefes 4/4 daha az bulundu, doğallık 3'ünde aynı, 1'inde daha iyi.
  • Uzun metni cümlelere bölüp tek tek sentezleyin.

Ölçümler

TR-Zor: sayı, tarih, saat, para, kısaltma ve telefon içeren 155 zor cümle. Ayrılmış: Antalia veri setinin 20 uzun cümlesi (12-19 sn), eğitimde yok. Yargıç faster-whisper large-v3-turbo (beam 5); referans ve çıktı trnorm.normalize_for_eval ile normalize edildi. WER %, düşük iyi; "hatasız" tek kelime hatası olmayan cümleler. UTMOS22 strong doğallığı tahmin eder (1-5). RTF: sentez süresi / ses süresi, A100 80 GB, cümle cümle.

Model Adım / cfg TR-Zor WER TR-Zor hatasız Ayrılmış WER Ayrılmış hatasız UTMOS TR-Zor UTMOS ayrılmış RTF
Ahenk (VoxCPM2 2B + LoRA, step_0000500) 16 / 2.0 2.54 141/155 0.82 16/20 3.70 3.14 2.28
Trendyol-TTS (2B + LoRA) 16 / 2.0 3.98 134/155 0.68 16/20 3.82 3.73 1.37
Ahenk Cep† (8.6M) 16 / 2.0 2.32 144/155 0.95 17/20 3.44 3.18 -
EMA Lightning† (8.6M) + trnorm 4 / - 2.43 145/155 1.49 16/20 3.36 2.95 -
Antalia-2 Mini† (7.6M), kendi ön ucu - 3.30 140/155 1.22 16/20 3.23 2.94 -

† Küçük modeller ayrı bir oturumda (RTX 5060 dizüstü, aynı yargıç ve normalizasyon) ölçüldü. Aynı oturumda Ahenk'in klipleri yeniden puanlandı: 2.54 / 0.82 WER, UTMOS 3.69 / 3.13, yani tablodaki satırla ±0.01 içinde. Trendyol-TTS kendi sesiyle konuşur; UTMOS farkının bir kısmı ses ve kayıttan gelebilir.

  • Önde olduğumuz yer: zor metni doğru okuma (TR-Zor 2.54'e karşı Trendyol 3.98).
  • Geride olduğumuz yerler: tahmini doğallık, özellikle uzun cümlelerde (UTMOS 3.14'e karşı 3.73); ayrılmış WER (0.82'ye karşı 0.68); hız (RTF 2.28'e karşı 1.37, aynı GPU türü).
  • Bunlar otomatik ölçümlerdir. MOS çalışması yapılmadı.

Bu ölçümün klipleri sentezden sonra pause_clean.py'den geçti (210 klip, 75 nefes kısıldı, toplam 11,7 sn; ayar v1/hp80/L-55dB/max25dB) / the clips of this evaluation went through pause_clean.py after synthesis (210 clips, 75 breaths turned down, 11.7 s in all; settings v1/hp80/L-55dB/max25dB).

TR-Soru (soru tonlaması) ve TR-Zor kategorileri

TR-Soru: 35 satır (mı soruları, "değil mi", soru sözcüklü ve sonu yükselen sorular, eşli düz cümleler); score_intonation.py perde tepesinin yerini ve yüksekliğini ölçer. Eşler: sorunun tepesi eşli düz cümleninkinden yüksek olan çiftler. AUC: mı sorularının tepesi düz cümlelerden ne kadar ayrışıyor (0.5 fark yok, 1 tam ayrım).

Model Çıkarım / Inference (timesteps / cfg) Eşler / pairs AUC Kalıba uyan sorular / questions matching the pattern TR-Soru WER TR-Soru hatasız / error-free
Ahenk (VoxCPM2 2B + LoRA, step_0000500) 16 / 2.0 8/8 0.93 0.43 0.00 35/35

TR-Zor kategorileri, WER % (hatasız / toplam):

Kategori / Category Ahenk Trendyol-TTS (2B + LoRA)
sayı / numbers 0.00 (15/15) 4.49 (13/15)
sıra sayısı / ordinals 0.00 (12/12) 0.00 (12/12)
tarih / dates 0.00 (12/12) 0.00 (12/12)
saat / times 1.59 (11/12) 1.59 (11/12)
para / money 1.25 (11/12) 1.25 (11/12)
yüzde / percentages 0.00 (8/8) 1.92 (7/8)
birim / units 0.00 (12/12) 1.37 (11/12)
telefon numarası / phone numbers 7.56 (9/12) 6.72 (9/12)
kısaltma (Prof. Dr.) / abbreviations 1.43 (11/12) 1.43 (11/12)
akronim (TBMM, THY) / acronyms 8.05 (10/15) 13.79 (9/15)
kısa cevap / short replies 8.00 (14/15) 20.00 (12/15)
soru / questions 0.00 (8/8) 0.00 (8/8)
özel yazım (kâğıt, hâlâ) / special spellings 4.55 (8/10) 4.55 (8/10)

İnsan dinlemesi

Hepsi kör, hepsi tek anadil dinleyiciyle (proje sahibi), her cümlede en iyi bulunan klip seçildi. Bunlar işarettir, istatistiksel sonuç değildir.

  • Büyük ve küçük modeller, 10 cümle (düz, sayılı, soru, uzun; dört sistem rastgele sırada, ses düzeyi eşitlenmiş): Ahenk 8, Ahenk Cep 2, EMA Lightning 0, Antalia-2 Mini 0. Ahenk'in klipleri yayınlanan kontrol noktasındandı.
  • 4. tur, 20 cümle, yayınlanan kontrol noktası eğitilmeden önce: ince ayarın başladığı aşama 2 / 1500. adım 8, önceki sürüm 6, aşama 2 / 2000. adım 4, EMA Lightning 2. EMA'nın kazandığı iki cümle bizim "c"yi bozduğumuz cümlelerdi.
  • Talimat dili, iki tur, 20 karar: saf duyguda (kızgın, neşeli, üzgün) İngilizce talimat 6/6; ilk iki kelimeden biri "c" ile başlayan cümlelerde Türkçe talimat 10/10. pick() bu sonuçtan çıktı.
  • Yayınlanan modelin İngilizce talimatlı duyguları ayrıca kulakla puanlanmadı; örneklerdeki duygu klipleri iki tohum arasından seçildi.

Bilinen sorunlar

  • İngilizce talimattan sonra "c": baştaki "c" /k/, /s/ ya da /z/ gibi okunabilir ("Cam" → "Kam", "Cidden" → "Zidden"). IPA probunda c doğru: İngilizce talimatla 1/14, Türkçe talimatla 13/14. pick() ilk iki kelimeye bakar; ileride yanlış çıkan bir "c" için prefer="tr".
  • Sonu yükselen sorular yükselmez: "Yarın geliyorsun?" gibi mı'sız sorular düz cümle gibi biter (0/4). mı soruları ve soru sözcüklü sorular doğru. Eğitim verisindeki bir eksik; geçici çözüm: "mı" ekleyin.
  • "Telefon gibi" tını: bazı duygulu kliplerde ses parlak ve cızırtılı (1-5 kHz şişmesi). Probda İngilizce talimatla 7/20, Türkçe talimatla 4/20 klipte. Başka tohum deneyin.
  • Türkçe talimatla duygu hafif: probda kızgın perdesi 312 Hz (İngilizce 325), üzgün 190 Hz (223). Türkçe talimatla "Cam" iki klipte de "Cem" gibi çıktı.
  • Nefes: duraklarda nefes sesi kalır, çoğu taban modelden. pause_clean kısar.
  • Harf harf okunan kısaltmalar ve telefon numaraları en zayıf kategoriler (WER 8.05 ve 7.56; kategori tablosu).
  • GPU gerekir: A100 80 GB üzerinde RTF 2.28, yani gerçek zamandan yavaş. CPU'da ölçülmedi. CPU için: Ahenk Cep.

Model ayrıntıları

Taban model openbmb/VoxCPM2, 2B, Apache-2.0
Adaptör LoRA r=64, alpha=64; LM (q_proj, v_proj, k_proj, o_proj) + DiT (q_proj, v_proj, k_proj, o_proj); 36.2 M parametre, 138.0 MB
Kontrol noktası voxcpm2-f022-s3tr/step_0000500 (adım 500): aşama 2'nin 1500. adımından başlayan, her talimatlı satırı bir kez İngilizce bir kez Türkçe talimatla gören ince ayar. İngilizce talimatı unutmadan Türkçe talimatı öğrendiği için seçildi; düz okumada 1500. adımla aynı ya da biraz iyi (TR-Zor 2.54 / 2.87).
lora_weights.safetensors sha256 0d6362c273b0dac67787ec966a5bbd719b3850cbfb1df567044df153d9886019
VoxCPM sürümü OpenBMB/VoxCPM f0c787f0937dc1c9a8f4f64d9a332d9c5da2e629 (eğitim ve ölçüm)
Eğitim Aşama 1: Alania'dan 25 sa, 23.706 klip, düz okuma; 2.000 adım. Aşama 2: f022 sesiyle 4.274 klip, 4,58 sa (düz, sayılı, uzun, soru, duygu, gülme); 1500. adım dinlemeyle seçildi. İnce ayar: 4.916 satır, lr 5e-5, 500 adım. Hepsi A100 80 GB.
Ses tasarımı Referanssız VoxCPM2 tarifi: "Female speaker, in their fifties, a counsellor; low-pitched and velvety; patient and polite delivery at a measured pace; recorded close to the microphone in a quiet studio." ~150 tarif × 2 tohum arasından UTMOS, Whisper CER ve iki kör dinleme turuyla seçildi. Tarif kimseyi anmaz.

Paketteki yardımcı dosyalar (ahenk-turkish-tts/tts/voxcpm'ten olduğu gibi, Apache-2.0):

Dosya / File İçerik / Contents sha256
instruction_pick.py talimatın dilini seçer: ilk iki kelimeden biri c ile başlıyorsa Türkçe, yoksa İngilizce; Vay -> Vaay (yalnız standart kütüphane) / picks the instruction language: Turkish when one of the first two words starts with c, else English; Vay -> Vaay (stdlib only) 69e5f2de0327e45a1049d161e29c927e9636e6f09beabea7628f349c7410b707
pause_clean.py sentezden sonra duraklardaki nefes sesini kısar (numpy + scipy) / turns breath noise in pauses down after synthesis (numpy + scipy) a8952114562fff1db399f96d8b14eff2709a5cc79bd4ba8f975d4786af0b68f3
onset.py pause_clean.py'nin kullandığı çerçeve ve perde yardımcıları / the frame and pitch helpers pause_clean.py imports 3d37228997f6a3936087514c54ab9778851a8a12b83c4b36bd90b6d2d9cc3118
instructions_tr.json İngilizce talimat -> Türkçe karşılığı, 77 ifade / English instruction -> its Turkish wording, 77 wordings 5d1e18c62fe8ad75863abbca37878aef5730c6787619c4e599d7c454b98882b4

Eğitim verisi ve lisans

Lisans
Taban model VoxCPM2 (OpenBMB) Apache-2.0
Alania Turkish Synthetic Speech by PatientDesk AI (aşama 1; tamamı sentetik konuşma) CC BY 4.0
Alania Turkish Domain Text by PatientDesk AI (aşama 2 metinleri) CC BY 4.0
Soru, duygu, ünlem ve gülme metinleri, Türkçe talimatlar (bu proje) Apache-2.0
Bu LoRA'nın ağırlıkları CC BY 4.0
instruction_pick.py, pause_clean.py, onset.py, instructions_tr.json Apache-2.0

Ağırlıkları kullanırken ya da dağıtırken CC BY 4.0 atıf ister. Şöyle yazın: "Ahenk (https://github.com/ozguradmin/ahenk-turkish-tts), CC BY 4.0" ve aşağıdaki Alania atıflarını koruyun:

Bu sürümün eğitiminde Antalia sesi ya da metni yok; yalnız ayrılmış ölçüm cümlelerinin metni Antalia veri setinden (Patientdesk.ai, CC BY 4.0).

Sorumlu kullanım

  • Üretilen sesi gerçek bir insan kaydı gibi sunmayın; telefon, IVR, duyuru ve videoda yapay olduğunu söyleyin (AB Yapay Zekâ Yasası md. 50). Bu modelde filigran yok; makinece okunur bir işaret için AudioSeal (MIT) eklenebilir.
  • Kimseyi taklit etmeyin. VoxCPM2 referans klipten ses klonlayabilir; kimsenin sesini izni olmadan klonlamayın.
  • Üretilen öfke, üzüntü, şefkat ya da gülmeyi gerçek bir insanın tepkisi gibi kullanıp dinleyiciyi baskı altına almayın (sahte acil durum, sahte yakın).
  • Dolandırıcılık, sosyal mühendislik ve siyasi otomatik arama için kullanmayın.

CC BY 4.0 altında bunlar lisans şartı değil, ricadır; AB Yapay Zekâ Yasası yükümlülükleri ayrıca geçerlidir.

Sürümler

Sürüm Kontrol noktası Ne değişti
v1 (Ekim 2026) voxcpm2-f022-s3tr/step_0000500 İlk açık sürüm: Türkçe ve İngilizce talimat, instruction_pick, pause_clean

Atıf

@misc{guler2026ahenk,
  title  = {Ahenk: a Turkish LoRA for VoxCPM2 with a designed synthetic voice},
  author = "{Ahenk}",
  year   = {2026},
  url    = {https://huggingface.co/ozgurguler/ahenk-tts-tr}
}
@misc{voxcpm2,
  title  = {VoxCPM2},
  author = "{OpenBMB}",
  year   = {2026},
  url    = {https://huggingface.co/openbmb/VoxCPM2}
}
@misc{alania_tr,
  title  = {Alania Turkish Synthetic Speech and Alania Turkish Domain Text},
  author = "{PatientDesk AI}",
  url    = {https://huggingface.co/datasets/cloud0day3/alania-synthetic-speech-tr}
}

İletişim

Sorular, izin ve kötüye kullanım bildirimleri: destek@ozgurguler.tech


English

Ahenk is a Turkish LoRA adapter for VoxCPM2 (2B base + 36.2 M LoRA, 48 kHz) that speaks in one designed female voice ("f022", no real person), with six emotions and laughter. Weights CC BY 4.0. It needs a GPU.

Samples. The table above: plain reading, a price read through trnorm, a statement/question pair, a long held-out sentence and the emotions. "Listener" rows were picked blind by one native listener; "metric" rows were picked by automatic scores only.

Quick start. The code above: say(text) for plain text, say(text, "angry") for an emotion. Feed the text through trnorm.normalize, keep normalize=False, pass no reference clip, and run pause_clean.clean on the output.

Emotion and instruction. pick() uses one training wording per emotion and chooses its language: Turkish when one of the first two words starts with "c", else English. English instructions give stronger emotion but often read a leading "c" the English way ("Cam" → "Kam"); Turkish ones get the "c" right with milder emotion. prefer="tr" or "en" forces it. The rule agrees with 18 of 20 blind judgements (one listener).

Evaluation. Same harness for every row (Whisper large-v3-turbo judge, trnorm evaluation normaliser, UTMOS22). Ahenk reads hard text best (TR-Zor WER 2.54 vs Trendyol-TTS 3.98). It loses on predicted naturalness, most on long sentences (UTMOS 3.14 vs 3.73), on held-out WER (0.82 vs 0.68) and on speed (RTF 2.28 vs 1.37). Rows marked † were measured in a separate local session; re-scoring Ahenk there matched within 0.01. Automatic metrics only, no MOS study.

Listening. One listener, blind: in a 10-sentence round against the small models Ahenk was picked 8 times, Ahenk Cep 2, EMA Lightning 0, Antalia-2 Mini 0. In an earlier 20-sentence round (before this checkpoint) our checkpoints won 18, EMA Lightning 2.

Known issues. A leading "c" after an English instruction (use prefer="tr"). Questions without "mı" that should rise at the end do not (0/4). A bright "phone-like" timbre on some emotional clips (7/20 with English instructions). Milder emotion with Turkish instructions. Breath in pauses (use pause_clean). Spelled-out acronyms and phone numbers are the weakest categories. Slower than real time on A100 80 GB (RTF 2.28); not measured on CPU.

Responsible use. Label the output as synthetic (EU AI Act Art. 50); there is no watermark, AudioSeal is an option. No impersonation and no voice cloning without consent. Do not present generated emotion as a real person's reaction. No fraud, scams or robocalls.

Licence. LoRA weights CC BY 4.0 (derived from the Alania datasets; keep the attribution above); base model Apache-2.0; helper files Apache-2.0. Credit it as "Ahenk (https://github.com/ozguradmin/ahenk-turkish-tts), CC BY 4.0". Contact: destek@ozgurguler.tech

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ozgurguler/ahenk-tts-tr

Base model

openbmb/VoxCPM2
Adapter
(37)
this model

Datasets used to train ozgurguler/ahenk-tts-tr

Space using ozgurguler/ahenk-tts-tr 1