Downloads · 30 days
130
100% of all-time downloads
VoiceHub/dacvae-tts-tr-w512
dacvae-tts-tr-w512 is a text-to-speech model from VoiceHub. Use it when you need text read aloud. It is set up for dacvae-tts. The card lists the license as cc-by-nc-4.0.
Zero-shot voice-cloning text-to-speech for Turkish, trained from scratch with dacvae-tts in the latent space of the frozen Meta DACVAE codec (facebook/dacvae-watermarked, 48 kHz, 128 channels, 25 latent frames/s). Tex…
Downloads · 30 days
130
100% of all-time downloads
All-time downloads
130
Public
Repo size
274 MB
Likes
1
Public
Click a slice to open those files.
.pt266 MB · 98%
From the Hugging Face model README
Zero-shot voice-cloning text-to-speech for Turkish, trained from scratch with
dacvae-tts in the latent space of the frozen Meta DACVAE codec
(facebook/dacvae-watermarked, 48 kHz, 128 channels, 25 latent frames/s). Text in (UTF-8 bytes, Turkish number
normalization), 3–15 s reference audio + its transcript in, 48 kHz speech in the reference voice out.
Vyvo/tr-dataset-12 (Turkish podcast segments, 93 h) filtered to quality ≥ 55, Whisper-large-v3
CER ≤ 0.10 and DNSMOS OVRL ≥ 2.8 → 32k clips (~70 h). 60k updates, batch expansion 4, one RTX 4090 (9.5 h).tr-w512-clean, update 60k) had the best Freya score of all runs; an in-domain fine-tune that looked better on the
training-domain monitor regressed on Freya and was not published.| Model | Params | WER % | CER % |
|---|---|---|---|
| Piper (tr) — from the FreyaTTS paper | – | 4.4 | – |
| this model | 66.5M | 4.3 | 2.5 |
| MMS-TTS — paper | – | 6.8 | – |
| FreyaTTS — paper | 183M | 8.0 | 3.0 |
| XTTS-v2 — paper | 467M | 11.1 | – |
| F5-TTS (tr fine-tune) — paper | 336M | 24.3 | – |
Also: speaker similarity 0.946 (WavLM-base-plus-SV cosine vs the prompt), DNSMOS OVRL 2.89 (real podcast speech through the
codec: 3.27). Held-out-speaker cross-utterance cases (48): WER 0.099 / CER 0.053 at guidance 5. Generated audio for every
evaluated checkpoint, with texts and transcripts, is in VoiceHub/dacvae-tts-tr-w512-clean (dataset).
The numbers above use the plain prompt-rate duration rule and one sample per sentence. Inference-side improvements, each measured on Freya-TR-Eval with two disjoint draws of the 24 unseen prompt voices (prompt seed 42 = the set of the table above, seed 1000 = a second set):
| Setting (same checkpoint, guidance 5, 32 steps) | WER % (seed 42) | CER % (seed 42) | WER % (seed 1000) | CER % (seed 1000) |
|---|---|---|---|---|
| prompt-rate rule (published numbers) | 4.32 | 2.50 | 4.40 | 2.20 |
| fixed 15 characters/s (old demo option) | 5.96 | 3.39 | – | – |
duration_mode="clamp" (slow down prompts faster than 17 chars/s) | 3.61 | 2.03 | 3.73 | 1.99 |
duration_mode="predictor" (fitted duration predictor) | 4.14 | 2.26 | 3.99 | 2.39 |
duration_mode="auto" (predictor below 13, clamp above 17 chars/s) | 3.61 | 1.81 | 3.50 | 1.91 |
auto + best-of-3 (Whisper-turbo picks the candidate; demo default) | 1.59 | 0.72 | 1.92 | 0.72 |
Guidance variants did not beat plain CFG on intelligibility: APG (η 0.5, momentum −0.3) and CFG-rescale (φ 0.7) remove most
of the output saturation (files reaching the decoder's tanh ceiling 96% → 58% / 22%, loudness −13.9 → −16.3 / −18.4 LUFS)
and raise speaker similarity/DNSMOS slightly, but WER rises to 4.96% / 5.16%. Independent text/speaker guidance (speaker 3 or 7 with text 5) and interval CFG (t < 0.7) did not help either
(WER 4.63 / 5.14 / 4.42). Best-of-3 is ranked by Whisper-large-v3-turbo and scored by Whisper-large-v3; turbo is distilled
from large-v3, so part of the gain may reflect shared ASR preferences. Speaker similarity (0.947) and DNSMOS (2.93) are
unchanged by the recommended settings.
All runs, per-sentence transcripts and scores: VoiceHub/dacvae-tts-tr-w512-clean, folder demo-experiments/.
pip install torch torchaudio numpy soundfile scipy pyloudnorm huggingface_hub transformers \
"dacvae @ git+https://github.com/facebookresearch/dacvae.git@414c20785fc3a28373073ea8ef7a1316eeeaca6e"
import sys
from huggingface_hub import snapshot_download
repo = snapshot_download("VoiceHub/dacvae-tts-tr-w512")
sys.path.insert(0, repo) # the `dacvae_tts` package (Turkish frontend, duration modes) is bundled here
from dacvae_tts.frontend import speakable, split_sentences
from dacvae_tts.inference import Synthesizer
tts = Synthesizer(f"{repo}/model.pt", device="cuda") # downloads facebook/dacvae-watermarked on first use
voice = tts.prepare_reference("prompt.wav", "Prompt kaydında söylenen cümlenin tam metni.") # 3-15 s, one speaker
text, changes = speakable("Toplantı 23.09.2026'da saat 14:30'da; bütçe %20 arttı.") # dates, times, symbols -> words
results, info = tts.synthesize_many(
[chunk for chunk, _ in split_sentences(text)], voice, candidates=3, # sentence chunks x candidates, one batch
duration_mode="auto", guidance=5.0, steps=32, sway=-1.0,
)
# results[i][k]["audio"] is candidate k of chunk i (48 kHz float32); rank the candidates with an ASR (the demo uses
# openai/whisper-large-v3-turbo and keeps the lowest CER), then join the chunks.
Synthesizer.synthesize(text, ref_audio=..., reference_text=..., duration_mode="auto", guidance=5.0, steps=32) is the
one-call API for a single sentence. Without reference_text the prompt is transcribed with Whisper (asr_language="tr").
Sampler options: guidance_until/guidance_from (interval CFG), cfg_rescale, apg_eta/apg_norm/apg_momentum,
speaker_guidance (independent text/speaker guidance).
Vyvo/tr-dataset-12, CC-BY-4.0 podcasts) and this model are released
CC-BY-NC-4.0; the DACVAE codec keeps its upstream license.Live demo (ZeroGPU): https://huggingface.co/spaces/Vyvo/dacvae-tts-tr-demo
gradio_client, endpoint /synthesize).The demo's code is in space/ (app.py interface, engine.py models and ZeroGPU jobs; the dacvae_tts package at the
repository root is reused); space/SPACE.md describes deploying a copy.
model.pt: EMA weights + config + codec metadata + latent normalization (torch.load(..., weights_only=True)).config.json: training/model configuration.dacvae_tts/: inference code (snapshot of the training repository, branch turkish-tts): Turkish text frontend
(frontend.py), duration rules and the fitted predictor (duration.py, duration_tr.json), sampler options, batched
synthesis (inference.py), output post-processing (audio.py).space/: the Gradio demo.