DACVAE Turkish TTS: Ref1 voice
A Turkish text-to-speech model (206M parameters), fine-tuned on one voice. It speaks Turkish text in that voice with 48 kHz audio. No reference clip is needed: give it text and it answers in the Ref1 voice.
- Demo: Vyvo/dacvae-tr-tts-demo
- Code, training and fine-tuning guides: github.com/kadirnar/dacvae-tr-tts
Samples
Generated from text alone, with no reference clip.
| Text | Audio |
|---|---|
| Merhaba! Bugün hava çok güzel, sahilde uzun bir yürüyüş yapmaya ne dersin? | |
| Toplantı saat on dörtte başlayacak; lütfen raporları yanınızda getirin. | |
| İstanbul Boğazı'nın iki yakası, akşam ışıklarıyla bambaşka bir güzelliğe bürünür. |
How it was made
- Base model: a flow-matching DiT trained on a few hundred hours of Turkish speech.
- Reinforcement learning: GROW and rejection-sampling fine-tuning, which cut the word error rate.
- Fine-tune: 1,500 steps (11 minutes on one GPU) on VoiceHub/moss-tts-v1.5-turkish-ref1, 13.9 hours of one voice.
The audio codec is Aratako/Semantic-DACVAE-Japanese. It is downloaded automatically.
Results
Scores are on 200 held-out sentences in this voice.
- WER is judged by Whisper-large-v3.
- SIM is speaker similarity to the prompt.
- UTMOS is predicted naturalness.
| Model | WER | SIM | UTMOS |
|---|---|---|---|
| Before fine-tuning | 0.43 % | 0.948 | 2.79 |
| This model | 0.76 % | 0.957 | 3.26 |
The WER difference is 6 words in 1,844, which is within noise.
Without a reference clip (6 sentences, 2 seeds each, 12 outputs):
- The voice stays Ref1: similarity to a Ref1 clip is 0.963, and 0.976 between outputs.
- UTMOS is 3.35.
- Our Turkish STT model transcribed all 12 outputs without errors.
The base model without a reference gives a different voice each time (similarity 0.65).
Use
git clone https://github.com/kadirnar/dacvae-tr-tts && cd dacvae-tr-tts
pip install -e ".[codec]"
import soundfile as sf
from huggingface_hub import hf_hub_download
from mytts.flow.sampler import SamplerConfig
from mytts.infer import Synthesizer
repo = "VoiceHub/dacvae-tr-tts-ref1"
syn = Synthesizer.from_export(hf_hub_download(repo, "model.pt"), device="cuda")
prompt = hf_hub_download(repo, "voices/ref1.wav")
sc = SamplerConfig(steps=32, sway=-1.0, cfg_mode="joint", cfg_w=4.0, noise_scale=0.9)
# text only: the model speaks in the Ref1 voice
wav, sr = syn.synthesize("Merhaba, nasılsınız?", lang="tr", sc=sc, seed=0, out_lufs=-16.0)
sf.write("out.wav", wav, sr)
# optional: a reference clip and its transcript
wav, sr = syn.synthesize(
"Merhaba, nasılsınız?", lang="tr", sc=sc, seed=0, out_lufs=-16.0,
prompt_audio=prompt,
prompt_text="Gürcü yetkililer, daha sonra, Rusya'nın desteğiyle ilgili suçlamaları geri çekti.",
)
- Seed: change
seedto hear a different reading of the same text. - Voice prompts:
voices/has three clips of this voice; their transcripts are invoices/voices.json. They are optional. - Other voices: you can give another voice as the prompt. Use a clean, studio-quality clip of 3-15 s. This model leans to the Ref1 voice, though. For zero-shot cloning of other voices, fine-tune with replay data (FINETUNE.md).
Limits
- Turkish only.
- Numbers and abbreviations: best when written out as words.
- Responsible use: do not use it to imitate a real person without their consent.
License
CC BY-NC 4.0: non-commercial use only.
Dataset used to train VoiceHub/dacvae-tr-tts-ref1
Viewer • Updated • 12.6k • 30