Instructions to use ersanbil/Breeze-TTS-2-Turkish-Base with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ersanbil/Breeze-TTS-2-Turkish-Base with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-to-speech", model="ersanbil/Breeze-TTS-2-Turkish-Base")# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForSeq2SeqLM model = AutoModelForSeq2SeqLM.from_pretrained("ersanbil/Breeze-TTS-2-Turkish-Base", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Breeze-TTS-2-Turkish-Base
- Architecture
- Benchmarks
- v3.0 Architecture & Post-Training Upgrades
- Quickstart
- Community guide: training a character voice LoRA
- License and responsible use
- v3.0 Release Notes (2026-11-03)
- v2.0 Continual Pretraining & Phase 3 Dual-AR DPO Release Notes
- Model Card Metadata & Citation (Künye ve Atıf)
- Literature & Benchmark References (Literatür ve Benchmark Kaynakçası)
- Architecture
Breeze-TTS-2-Turkish-Base
Turkish continual pretraining of BreezeBlue/breeze-tts-2 for Turkish prosody and pronunciation with Turkish/English code-switching. English/Chinese replay data was mixed in to preserve the base model's English and Chinese (not re-benchmarked here). Zero-shot voice cloning, voice design and voice direction work as in the base model.
Architecture
Dual-AR text-to-speech, unchanged from Breeze TTS 2 (standalone checkpoint, no PEFT needed):
| Component | Details |
|---|---|
| Text encoder | T5Gemma 2 encoder (T5Gemma2TextEncoder, 26 layers, d=1152, 1.00 B parameters); the CPT's r=8 q/v/o LoRA is merged (78 modules); special-token rows 262144..262157 trained, Gemma vocabulary 0..262143 frozen |
| Projector | text_encoder_proj: linear 1152 → 2048 |
| Backbone (slow AR) | Qwen3 decoder (28 layers, d=2048, 1.41 B parameters) with its own 262,158 × 2048 text-token embedding (0.54 B); predicts RVQ codebook 0 + EOS every 80 ms |
| Depth decoder (fast AR) | 12 layers (d=1024, 0.43 B parameters), predicts codebooks 1–15 of each frame |
| Audio tokenizer | Qwen3-TTS 12 Hz tokenizer (Qwen3TTSTokenizerV2Model): 16 codebooks at 12.5 Hz, 24 kHz in/out, bundled in audio_tokenizer/ |
Size: about 3.5 B parameters. The safetensors shards hold 3,483,206,497 bf16 values (backbone 1.41 B, text encoder
1.00 B, backbone text-token embedding 0.54 B, depth decoder 0.43 B, a Mimi codec_model 0.10 B, heads and projector
0.01 B). The shard index's total_parameters field reports 3,466,363,713, the same value as the upstream checkpoint.
Training recipe: Phase 1 acoustic warm-up (first 15% of steps, T5Gemma 2 LoRA not yet trained) → Phase 2 joint CPT
(T5Gemma 2 r=8 q/v/o LoRA at 1.5e-5, full backbone 4e-5, depth decoder 1e-4, projector 1e-4, cosine decay to 10%),
tiered RVQ loss [6, 4, 2, 1] with depth loss ×2.5, WiSE-FT (α = 0.85) against the base weights, then Phase 3 DPO
on synthetic failure-mode preference pairs (LoRA r=16/32, β = 0.1; see the release notes). v2.0 was trained on
4× NVIDIA H100 80GB HBM3 (RunPod): CPT data-parallel on every GPU, DPO on one.
Code-switching example. English terms stay in English spelling; numbers and times must be written out (verbalized) before synthesis:
Saat 14:30'daki Sprint Planning toplantısına 10 dakika kaldı, GitHub üzerindeki pull request'i mergeledim.
→
Saat on dört otuzdaki Sprint Planning toplantısına on dakika kaldı, GitHub üzerindeki pull request'i mergeledim.
The evaluations below verbalized text with the author's normalize_turkish_for_tts (breeze_infer/tr_normalizer.py, bundled in this repository with train_tr/); neither is part of the public
breezeblue-ai/breeze-tts code, so with that code pass already-verbalized text.
Benchmarks
1. External Turkish benchmarks (Freya-TR-Eval, TurkASR-Bench-TTS protocol with KDHO, FLEURS tr_tr)
1.1. Freya-TR-Eval (freyavoice/freya-tr-eval, 495 conversational Turkish sentences)
Run on 1× NVIDIA H100 80GB HBM3 (RunPod, 2026-11-02) over all 495 sentences of
freyavoice/freya-tr-eval (revision 1c30761f):
406 everyday sentences generated by gemini-3.1-pro-preview and 89 short-native texts sampled from Common Voice 17
and CoVoST2. Table 2 of the FreyaTTS paper (arXiv:2607.09530) scores every system
with Whisper-large-v3 after 8 kHz band-matching, so both 8 kHz band-matched and full-band Whisper-large-v3
(faster-whisper) scores are reported, plus wav2vec2-xls-r-300m-cv7-turkish CTC CER (greedy, no LM), UTMOS22-strong
and WeSpeaker ResNet34 cosine to the conditioning reference (SIM ref). The card's primary metric, semantic WER with
an LLM judge, was not computed. Breeze rows: production breeze_infer.api (--fast-backbone-decode --fast-depth-decoder, server-side normalize_turkish_for_tts), cfg 1.0, seed 42; Base is conditioned on the 24 kHz
studio kahya_klasik reference, Gaddar Kerim on gk_clean_025.wav, a 5.8 s film clip from its LoRA training set.
Intelligibility (495 sentences). Clean = CER ≤ 2% or WER = 0; Fail = CER > 30%.
| Model | n | WER % (8 kHz) ↓ | CER % (8 kHz) ↓ | WER % (full) ↓ | CER % (full) ↓ | Median CER % ↓ | Clean % ↑ | Fail % ↓ | wav2vec2 CTC CER % ↓ |
|---|---|---|---|---|---|---|---|---|---|
Breeze-TTS-2-Turkish-Base v2.0 (breeze_v2_base) |
495 | 1.82 | 0.35 | 1.89 | 0.36 | 0.00 | 94.14 | 0.00 | 1.50 |
Breeze-TTS-2-Gaddar-Kerim v2.0 (breeze_v2_gk_w050) |
495 | 1.65 | 0.41 | 1.56 | 0.39 | 0.00 | 95.35 | 0.20 | 2.23 |
Breeze-TTS-2-Turkish-Base v3.0 (breeze_v3_base) |
495 | 2.20 | 0.41 | 1.86 | 0.39 | 0.00 | 93.74 | 0.00 | 1.56 |
Breeze-TTS-2-Gaddar-Kerim v3.0 (breeze_v3_gk_w050) |
495 | 1.74 | 0.31 | 1.72 | 0.33 | 0.00 | 94.55 | 0.00 | 2.15 |
Breeze-TTS-2-Turkish-Base v2.0, re-render ¹ (breeze_v2_base) |
495 | 1.98 | 0.42 | 2.07 | 0.48 | 0.00 | 92.93 | 0.20 | 1.49 |
Breeze-TTS-2-Gaddar-Kerim v2.0, re-render ¹ (breeze_v2_gk_w050) |
495 | 1.77 | 0.34 | 1.87 | 0.35 | 0.00 | 93.74 | 0.00 | 1.99 |
Microsoft Edge-TTS tr-TR-AhmetNeural (edge_tts_ahmet) |
495 | 1.93 | 0.41 | 1.79 | 0.38 | 0.00 | 94.14 | 0.00 | 1.63 |
Meta MMS-TTS facebook/mms-tts-tur (mms_tts_tur) |
495 | 7.17 | 1.59 | 6.45 | 1.51 | 0.00 | 77.58 | 0.20 | 4.49 |
| Piper (tr, dfki), 16M (published, Table 2) | 495 | 4.4 | 1.1 | — | — | — | — | — | — |
| Coqui GlowTTS (tr), 28M (published, Table 2) | 495 | 12.1 | 3.3 | — | — | — | — | — | — |
| MMS-TTS (tr), 36M (published, Table 2) | 495 | 6.8 | 1.7 | — | — | — | — | — | — |
| SpeechT5 (tr), 144M (published, Table 2) | 495 | 83.4 | 45.5 | — | — | — | — | — | — |
| FreyaTTS, 183.2M (published, Table 2) | 495 | 8.0 | 3.0 | — | — | — | — | — | — |
| F5-TTS (tr), 336M (published, Table 2) | 495 | 24.3 | 10.9 | — | — | — | — | — | — |
| XTTS-v2 (multi), 470M (published, Table 2) | 495 | 11.1 | 3.9 | — | — | — | — | — | — |
¹ The v3.0 rows and the rows marked ¹ come from one cloud run on 2026-11-03 (one NVIDIA H200, image runpod/pytorch:1.6.0-cu1281-torch291-ubuntu2204, torch 2.9.1+cu128) through the production API with fast_backbone_decode, fast_depth_decoder (codec eager). The re-render rows are the published v2.0 weights (digests a720ea7f and 6fd6c2f5) rendered again in that run, so compare v3.0 with them; the other rows are the 2026-11-02 measurements, copied unchanged. Paired against the v2.0 re-render on the same items (bootstrap 1,000 resamples, seed 42): Freya wer_8k Δ +0.21 pp [-0.25, +0.74] (n = 495), FLEURS wer Δ -0.50 pp [-5.35, +4.44] (n = 100).
Published rows are copied from Table 2 of arXiv:2607.09530 at its precision (the authors' pipeline and text normalization, not re-measured here); Table 2's listening-test MOS has no counterpart here. MMS-TTS appears in both: 6.8% WER / 1.7% CER published vs 7.17% / 1.59% measured here.
Naturalness, speaker similarity, stability and speed (495 sentences)
| Model | n | UTMOS (full) ↑ | UTMOS (8 kHz) ↑ | Blind SNR dB | SIM ref ↑ |
Prem. EOS % ↓ | Stutter % ↓ | Dead air % ↓ | RTF 1-stream ↓ | TTFA ms 1-stream ↓ |
|---|---|---|---|---|---|---|---|---|---|---|
Breeze-TTS-2-Turkish-Base v2.0 (breeze_v2_base) |
495 | 4.07 | 3.75 | 103.1 | 0.8035 | 0.40 | 0.00 | 0.00 | 0.343 | 186.5 |
Breeze-TTS-2-Gaddar-Kerim v2.0 (breeze_v2_gk_w050) |
495 | 3.50 | 3.33 | 46.9 | 0.7120 | 0.20 | 0.20 | 0.40 | 0.362 | 213.8 |
Breeze-TTS-2-Turkish-Base v3.0 (breeze_v3_base) |
495 | 4.07 | 3.75 | 103.2 | 0.8004 | 0.20 | 0.00 | 0.00 | 0.347 | 129.9 |
Breeze-TTS-2-Gaddar-Kerim v3.0 (breeze_v3_gk_w050) |
495 | 3.50 | 3.33 | 47.0 | 0.7117 | 0.00 | 0.00 | 0.61 | 0.317 | 123.9 |
Breeze-TTS-2-Turkish-Base v2.0, re-render ¹ (breeze_v2_base) |
495 | 4.07 | 3.75 | 102.7 | 0.8022 | 0.61 | 0.00 | 0.00 | 0.340 | 125.6 |
Breeze-TTS-2-Gaddar-Kerim v2.0, re-render ¹ (breeze_v2_gk_w050) |
495 | 3.51 | 3.33 | 47.2 | 0.7159 | 0.20 | 0.20 | 0.00 | 0.347 | 131.9 |
Microsoft Edge-TTS tr-TR-AhmetNeural (edge_tts_ahmet) |
495 | 3.84 | 3.55 | 105.9 | — | 0.20 | 0.00 | 0.00 | — | — |
Meta MMS-TTS facebook/mms-tts-tur (mms_tts_tur) |
495 | 3.79 | 3.55 | 77.7 | — | 1.01 | 0.40 | 0.20 | 0.022 | 104.4 |
¹ The 2026-11-03 cloud run: see the note under the Freya intelligibility table.
UTMOS22-strong runs on 16 kHz input, once on the full-band audio and once after 8 kHz band-matching. Blind SNR is the p90/p10 ratio of 20 ms frame power with a 1e-12 power floor, so digitally silent pauses inflate it. Premature EOS: the sentence's last word is missing from the last 3 heard words in both ASR transcripts; stutter: an extra repeated word or syllable heard by both; dead air: an internal silence ≥ 1.5 s. 1-stream timing: 25 Freya sentences with one worker alone on the GPU; TTFA = request start to first PCM bytes over localhost HTTP. Edge-TTS was timed only in the parallel pass, where its numbers are cloud round trips (RTF 0.244, TTFA 881 ms), so its 1-stream cells are empty.
By register. On the generated everyday register (n = 406), Base scores 1.29% WER / 0.25% CER at 8 kHz
(1.40% / 0.26% full band), UTMOS 4.08 and SIM ref 0.8179, with 0.00% premature EOS, stutter, dead air and failures.
On the 89 short-native texts it scores 4.27% WER / 0.82% CER at 8 kHz. Common Voice 17 tr, including 757
utterances of its test split, is in the v2.0 CPT data, so some short-native texts may have been seen in training.
1.2. TurkASR-Bench-TTS protocol with KDHO (150 prompts × 10 engines, measured locally)
yagmurtuncer/turkasr-bench-tts (card revision
04e45c28) scores synthetic Turkish speech with Whisper and KDHO, the root- and affix-aware error rate of
TurkASR-Bench. Its audio and sentence files are gated,
so this section replicates the card's protocol on our own prompt set; it is not a run on the card's sentences:
- 102 diagnostic sentences written for this benchmark in the card's 7 categories (
long_affix16,neg_imp14,neg_pair24,numbers16,proper_foreign12,questions10,voice_commands10; numbers written as words). - 48 mirror sentences: 16 FLEURS
tr_tr+ 16 Freya-TR-Evaleveryday+ 16 Freya-TR-Evalshort-native(3–30 words, ≤ 220 characters, no digits, seed 42). The card's 774 mirror sentences are TurkASR-Bench test transcripts.
Scoring: official kdho 0.1.1 (λ = 0.5: an affix-only substitution costs half a word error, a root or negation change a
full word), vendored from yagmurtuncer/turkish-asr-leaderboard-kdho
at 929384a4 (kdho is not on PyPI as of 2026-11-02). Main ear: faster-whisper large-v3; the card's QC ear: large-v3-turbo. Also
wav2vec2-xls-r-300m-cv7-turkish CTC CER, UTMOS22-strong (16 kHz input) and WeSpeaker ResNet34. One NVIDIA GeForce
RTX 4090 (torch memory fraction capped at 0.33); Piper ran on the CPU and Edge-TTS is a cloud service.
Breeze rows: production API in-process, cfg 1.0, seed 42; Base conditioned on kahya_klasik, Gaddar Kerim on
gk_clean_025.wav.
Overall (150 prompts × 10 engines = 1,500 clips). KDHO, CER and WER from Whisper large-v3; Clean = CER ≤ 2%, Catastrophic = CER > 30%; voice consistency = cosine to the leave-one-out centroid of the engine's own 150 clips.
| Model | Type | KDHO % ↓ | KDHO 95% CI | CER % ↓ | Median CER % ↓ | WER % ↓ | Clean % ↑ | Catastrophic % ↓ | CTC CER % ↓ | UTMOS ↑ | SIM ref ↑ |
Voice consistency ↑ | neg_pair acc % ↑ |
RTF (median) ↓ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
breeze_v2_gk_w050 |
ours, v2.0 + Gaddar Kerim LoRA (0.5×) | 3.13 | 1.67–4.83 | 0.92 | 0.00 | 3.46 | 90.7 | 0.0 | 2.93 | 3.48 | 0.692 | 0.799 | 100.0 | 0.871 |
breeze_v2_base |
ours, v2.0 | 3.22 | 1.68–5.33 | 0.87 | 0.00 | 3.66 | 90.7 | 0.0 | 2.09 | 4.03 | 0.773 | 0.864 | 100.0 | 0.893 |
breeze_v3_gk_w050 |
ours, v3.0 + Gaddar Kerim LoRA (0.5×) | 3.43 | 1.67–5.57 | 0.96 | 0.00 | 3.97 | 90.0 | 0.0 | 2.94 | 3.47 | 0.698 | 0.808 | 100.0 | 0.823 |
edge_tts_ahmet |
commercial cloud | 4.03 | 2.05–6.64 | 1.15 | 0.00 | 4.43 | 89.3 | 0.0 | 2.72 | 3.85 | — | 0.871 | 100.0 | 0.364 |
breeze_v3_base |
ours, v3.0 | 4.35 | 2.35–7.05 | 0.92 | 0.00 | 4.77 | 88.7 | 0.0 | 2.04 | 4.04 | 0.774 | 0.866 | 100.0 | 0.885 |
piper_tr_dfki |
open VITS (CPU) | 4.46 | 2.73–6.64 | 1.05 | 0.00 | 4.98 | 86.7 | 0.0 | 3.06 | 3.69 | — | 0.849 | 100.0 | 0.034 |
breeze_v1_base |
ours, v1.0 | 5.45 | 2.53–10.22 | 1.09 | 0.00 | 5.75 | 86.7 | 0.0 | 2.91 | 4.04 | 0.759 | 0.850 | 91.7 | 0.889 |
speecht5_tr |
open encoder-decoder | 6.96 | 4.63–9.92 | 1.82 | 0.00 | 7.35 | 78.7 | 0.0 | 5.36 | 3.54 | — | 0.878 | 100.0 | 0.501 |
vits_openbible_tr |
open VITS | 7.57 | 4.61–10.98 | 2.65 | 0.00 | 8.28 | 82.0 | 1.3 | 3.77 | 3.61 | — | 0.867 | 91.7 | 0.040 |
mms_tts_tur |
open VITS | 9.22 | 6.31–12.98 | 2.36 | 0.00 | 10.40 | 70.0 | 0.7 | 5.16 | 3.78 | — | 0.676 | 100.0 | 0.034 |
The two v2.0 models have the lowest mean KDHO here, but their 95% bootstrap intervals overlap every other engine's except MMS-TTS, so these intervals do not separate the top five engines.
The v3.0 rows (breeze_v3_base, breeze_v3_gk_w050) were rendered and scored on 2026-11-03 with the same prompts, references and referee code on the same local GPU; the other rows are the 2026-11-02 measurements, copied unchanged.
Drift control: the v2.0 base re-rendered on 2026-11-03
| Drift control | KDHO % ↓ | Corpus KDHO % ↓ | CER % ↓ | UTMOS ↑ | Prem. EOS % ↓ | neg_pair acc % ↑ |
neg_imp acc % ↑ |
|---|---|---|---|---|---|---|---|
published 2026-11-02 (breeze_v2_base) |
3.22 | 2.68 | 0.87 | 4.032 | 0.67 | 100.0 | 100.0 |
re-rendered 2026-11-03 † (breeze_v2_base_control) |
3.61 | 2.63 | 0.91 | 4.034 | 0.00 | 100.0 | 100.0 |
| Δ re-render − published | +0.39 | -0.05 | +0.04 | +0.002 | -0.67 | 0.0 | 0.0 |
† The same v2.0 checkpoint (a720ea7f) rendered and scored again with the v3.0 rows' code, reference, settings and referees. The Δ row is the drift of the whole render-and-score chain between the two days, so the v3.0 base row compares with the † row as well as with the published one.
By diagnostic category (KDHO % and negation polarity accuracy)
| Model | long_affix (16) ↓ |
neg_imp (14) ↓ |
neg_pair (24) ↓ |
numbers (16) ↓ |
proper_foreign (12) ↓ |
questions (10) ↓ |
voice_commands (10) ↓ |
neg_pair acc % ↑ |
neg_imp acc % ↑ |
|---|---|---|---|---|---|---|---|---|---|
breeze_v2_gk_w050 |
7.29 | 0.00 | 2.08 | 2.75 | 5.85 | 7.50 | 3.33 | 100.0 | 100.0 |
breeze_v2_base |
7.29 | 0.00 | 2.08 | 4.19 | 5.85 | 4.58 | 3.33 | 100.0 | 100.0 |
breeze_v3_gk_w050 |
10.42 | 0.00 | 2.34 | 2.75 | 5.85 | 2.50 | 4.17 | 100.0 | 100.0 |
edge_tts_ahmet |
13.29 | 1.79 | 0.00 | 5.25 | 7.52 | 1.88 | 6.67 | 100.0 | 85.7 |
breeze_v3_base |
14.58 | 1.79 | 2.08 | 4.68 | 5.85 | 4.38 | 3.33 | 100.0 | 85.7 |
piper_tr_dfki |
13.29 | 1.43 | 0.35 | 6.47 | 6.13 | 1.88 | 3.33 | 100.0 | 85.7 |
breeze_v1_base |
23.12 | 4.64 | 1.88 | 4.56 | 4.96 | 2.50 | 3.33 | 91.7 | 85.7 |
speecht5_tr |
11.88 | 1.43 | 4.17 | 6.51 | 11.61 | 6.88 | 6.67 | 100.0 | 85.7 |
vits_openbible_tr |
14.29 | 2.86 | 3.47 | 4.69 | 16.49 | 0.00 | 9.22 | 91.7 | 100.0 |
mms_tts_tur |
22.98 | 7.50 | 3.39 | 5.72 | 15.02 | 4.38 | 17.58 | 100.0 | 71.4 |
long_affix prompts are a few very long words each, so a single affix slip moves that category's mean a lot.
Calibration against the card's published QC table. The card reports, per engine, the mean KDHO heard by Whisper
large-v3-turbo over its 876 clips (774 mirror + 102 diagnostic). For a comparable column, our turbo-ear KDHO is
re-weighted to the card's mix, (102 × diagnostic + 774 × mirror) / 876. The four engines measured on both sides land
between −2.1 and +4.7 points from their published values (Δ column) because the texts differ, so gaps of that size
between our rows and the card's rows are not meaningful.
| Engine | Published QC KDHO % (card, 876 clips) | Card-mix QC KDHO % (here) | As-run QC KDHO % (here, 150) | large-v3 KDHO % (here) | Δ card-mix − published | Engine and voice |
|---|---|---|---|---|---|---|
edge_tts_ahmet |
— | 2.6 | 4.30 | 4.03 | — | Microsoft Edge-TTS tr-TR-AhmetNeural (cloud, not in the card) |
breeze_v2_base |
— | 4.6 | 4.52 | 3.22 | — | ours, v2.0 |
piper_tr_dfki (piper) |
6.3 | 4.9 | 6.05 | 4.46 | −1.4 | Piper tr_TR-dfki-medium |
breeze_v2_gk_w050 |
— | 5.5 | 5.76 | 3.13 | — | ours, v2.0 + Gaddar Kerim LoRA (0.5×) |
breeze_v1_base |
— | 6.3 | 6.75 | 5.45 | — | ours, v1.0 |
vits_openbible_tr (vits_ob) |
6.7 | 11.4 | 8.45 | 7.57 | +4.7 | VITS Open Bible Turkish, SPEAKER_00 |
speecht5_tr (speecht5) |
10.8 | 10.5 | 9.39 | 6.96 | −0.3 | SpeechT5 Turkish, bundled speaker embedding |
mms_tts_tur (mms) |
11.5 | 9.4 | 10.57 | 9.22 | −2.1 | Meta MMS-TTS (tur) |
xtts |
7.5 | — | — | — | — | Coqui XTTS-v2, 4 built-in voices in rotation |
glowtts |
14.9 | — | — | — | — | Coqui Glow-TTS tr/common-voice + HiFi-GAN |
f5_ob |
18.1 | — | — | — | — | F5-TTS Open Bible Turkish (132 of 876 clips bad) |
chatterbox |
19.4 | — | — | — | — | Chatterbox Multilingual (Resemble AI), default voice |
espeak |
46.7 | — | — | — | — | eSpeak NG (formant synthesis, robotic baseline) |
Within that calibration error, Breeze v2.0 Base (4.6) and Gaddar Kerim (5.5) fall in the same range as the card's best open engines (Piper 6.3, VITS Open Bible 6.7, XTTS-v2 7.5); this comparison does not rank them. Running the card's own sentences would need access to the gated dataset.
1.3. FLEURS tr_tr zero-shot cloning of unseen speakers (100 pairs)
100 reference → target pairs from the google/fleurs tr_tr test
split (revision 70bb2e84). Speakers were approximated by clustering WeSpeaker ResNet34 embeddings (average linkage,
cosine ≥ 0.5). Each target sentence is cloned from the most similar recording of another sentence of
the same gender, 3–8 s long, with pair cosine ≥ 0.72 (actual minimum 0.823, median 0.876): 4 clusters × 25 pairs,
37 distinct reference clips. Breeze requests send the reference clip with its FLEURS transcription as ref_text and the
instruction "Speak in a natural, clear and articulate Turkish voice matching the reference speaker's timbre and pacing."
Edge-TTS and MMS-TTS cannot clone (no-cloning floor); the human row scores the target recordings themselves (same-speaker
ceiling). Whisper-large-v3 full band; Clean = CER ≤ 2% or WER = 0; Fail = CER > 30%. FLEURS is not in our v1.0/v2.0
CPT, DPO or LoRA data; the upstream BreezeBlue pretraining data is not disclosed.
| Model | n | WER % ↓ | CER % ↓ | wav2vec2 CTC CER % ↓ |
Clean % ↑ | Fail % ↓ | Prem. EOS % ↓ | Stutter % ↓ | Dead air % ↓ |
|---|---|---|---|---|---|---|---|---|---|
FLEURS tr_tr human recordings (ground_truth_human) |
100 | 5.14 | 1.21 | 4.20 | 81.00 | 0.00 | 0.00 | 0.00 | 3.00 |
Breeze-TTS-2-Turkish-Base v2.0 (breeze_v2_base) |
100 | 6.26 | 2.41 | 3.66 | 83.00 | 1.00 | 3.00 | 0.00 | 7.00 |
Breeze-TTS-2-Gaddar-Kerim v2.0 (breeze_v2_gk_w050) |
100 | 9.57 | 5.62 | 7.29 | 83.00 | 5.00 | 5.00 | 1.00 | 5.00 |
Breeze-TTS-2-Turkish-Base v3.0 (breeze_v3_base) |
100 | 8.19 | 4.53 | 6.30 | 83.00 | 5.00 | 5.00 | 0.00 | 8.00 |
Breeze-TTS-2-Gaddar-Kerim v3.0 (breeze_v3_gk_w050) |
100 | 5.98 | 2.35 | 3.64 | 85.00 | 2.00 | 2.00 | 0.00 | 9.00 |
Breeze-TTS-2-Turkish-Base v2.0, re-render ¹ (breeze_v2_base) |
100 | 8.69 | 4.40 | 5.90 | 79.00 | 4.00 | 4.00 | 0.00 | 3.00 |
Breeze-TTS-2-Gaddar-Kerim v2.0, re-render ¹ (breeze_v2_gk_w050) |
100 | 11.22 | 7.46 | 9.10 | 78.00 | 7.00 | 7.00 | 1.00 | 9.00 |
BreezeBlue upstream BreezeBlue/breeze-tts-2 ¹ (upstream_breeze_tts_2) |
100 | 86.25 | 60.81 | 64.37 | 1.00 | 90.00 | 77.00 | 10.00 | 30.00 |
Microsoft Edge-TTS tr-TR-AhmetNeural, no cloning (edge_tts_ahmet) |
100 | 5.38 | 1.33 | 2.05 | 84.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Meta MMS-TTS facebook/mms-tts-tur, no cloning (mms_tts_tur) |
100 | 10.24 | 2.45 | 5.09 | 60.00 | 0.00 | 0.00 | 1.00 | 0.00 |
¹ The 2026-11-03 cloud run: see the note under the Freya intelligibility table.
| Model | SIM ref (to the reference clip) ↑ |
SIM gt (to the target recording) ↑ |
SIM GK (to gk_clean_025.wav) |
UTMOS ↑ |
|---|---|---|---|---|
FLEURS tr_tr human recordings (ground_truth_human) |
0.8751 | — | 0.0814 | 2.39 |
Breeze-TTS-2-Turkish-Base v2.0 (breeze_v2_base) |
0.6474 | 0.6533 | 0.0961 | 3.36 |
Breeze-TTS-2-Gaddar-Kerim v2.0 (breeze_v2_gk_w050) |
0.2021 | 0.2116 | 0.6131 | 3.56 |
Breeze-TTS-2-Turkish-Base v3.0 (breeze_v3_base) |
0.6427 | 0.6521 | 0.0976 | 3.34 |
Breeze-TTS-2-Gaddar-Kerim v3.0 (breeze_v3_gk_w050) |
0.2342 | 0.2470 | 0.6117 | 3.60 |
Breeze-TTS-2-Turkish-Base v2.0, re-render ¹ (breeze_v2_base) |
0.6414 | 0.6478 | 0.0974 | 3.33 |
Breeze-TTS-2-Gaddar-Kerim v2.0, re-render ¹ (breeze_v2_gk_w050) |
0.1993 | 0.2094 | 0.5983 | 3.52 |
BreezeBlue upstream BreezeBlue/breeze-tts-2 ¹ (upstream_breeze_tts_2) |
0.5194 | 0.5003 | 0.0801 | 2.52 |
Microsoft Edge-TTS tr-TR-AhmetNeural, no cloning (edge_tts_ahmet) |
0.1135 | 0.1247 | 0.2030 | 3.64 |
Meta MMS-TTS facebook/mms-tts-tur, no cloning (mms_tts_tur) |
0.0713 | 0.0837 | 0.2901 | 3.56 |
¹ The 2026-11-03 cloud run: see the note under the Freya intelligibility table.
2. Internal v1.0 vs v2.0 vs v3.0 Ablation & Character LoRA Benchmark (216 Renders)
Local head-to-head (2026-11-02, one NVIDIA GeForce RTX 4090): v1.0 (2366d6b7) vs v2.0 (87cec98d), each as the zero-shot base and with the same Gaddar Kerim character LoRA recipe (300 steps on 40 film clips) merged at 0.5× (WiSE-FT). 18 prompts × seeds 42 and 7 = 36 renders per model through the production streaming API (breeze_infer.api, --fast-backbone-decode --fast-depth-decoder, cfg 1.0). Prompts: Turkish watch assistant (5), long agglutinative words (4), TR/EN code-switching (5: loanwords sent raw and through the production normalizer), studio vs film reference (4). Reference: a 5.8 s Gaddar Kerim film clip (one of the LoRA's training clips), or the 24 kHz studio kahya_klasik reference in the studio rows.
Scoring: Whisper-large-v3 CER/WER and loanword accuracy (tr_normalizer.asr_compare_form on both sides), wav2vec2-xls-r-300m-cv7-turkish CTC CER (greedy, no LM), WeSpeaker ResNet34 cosine to the conditioning reference (SIM ref) and to the 40-clip Gaddar Kerim centroid (SIM GK), blind SNR, spectral roll-off, pace; premature EOS = the last word missing from both ASR transcripts, stutter = an extra repeated word or syllable in both, dead air = a silence of 1.5 s or more inside a render.
Overall (36 renders per model)
| Model | CER ↓ | Median CER ↓ | Failed (CER > 0.3) ↓ | WER ↓ | CTC CER ↓ | Loanword ↑ | Min word p ↑ | SIM ref ↑ | SIM GK ↑ | SNR dB | Syll/s | Premature EOS ↓ | Stutter ↓ | Dead air ↓ | RTF ↓ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
v1.0_base |
0.023 | 0.005 | 0.00 | 0.110 | 0.065 | 0.89 | 0.77 | 0.476 | 0.375 | 47.3 | 4.98 | 0.00 | 0.00 | 0.00 | 0.81 |
v2.0_base |
0.070 | 0.020 | 0.08 | 0.174 | 0.100 | 0.86 | 0.75 | 0.682 | 0.586 | 45.2 | 4.64 | 0.08 | 0.00 | 0.08 | 0.80 |
v3.0_base |
0.066 | 0.022 | 0.06 | 0.147 | 0.102 | 0.82 | 0.78 | 0.695 | 0.597 | 47.9 | 4.45 | 0.06 | 0.00 | 0.19 | 0.74 |
v1.0_gk_w050 |
0.088 | 0.023 | 0.08 | 0.193 | 0.135 | 0.87 | 0.72 | 0.706 | 0.666 | 44.1 | 4.57 | 0.08 | 0.00 | 0.06 | 0.81 |
v2.0_gk_w050 |
0.029 | 0.024 | 0.00 | 0.128 | 0.070 | 0.79 | 0.75 | 0.775 | 0.728 | 45.5 | 4.65 | 0.00 | 0.00 | 0.00 | 0.80 |
v3.0_gk_w050 |
0.036 | 0.010 | 0.03 | 0.111 | 0.081 | 0.86 | 0.76 | 0.766 | 0.723 | 46.2 | 4.54 | 0.03 | 0.00 | 0.06 | 0.75 |
The v3.0_base and v3.0_gk_w050 rows were rendered on 2026-11-03 with the same specs, seeds, references and judges on the same GPU; the v1.0 and v2.0 rows are the 2026-11-02 measurements, copied unchanged.
Failed = Whisper CER > 0.3: in this run, a stop after the first clause followed by seconds of silence, or babble that Whisper hallucinates over. These few renders drive the mean CER; see the median.
By category
| Category | Metric | v1.0_base |
v2.0_base |
v1.0_gk_w050 |
v2.0_gk_w050 |
v3.0_base |
v3.0_gk_w050 |
|---|---|---|---|---|---|---|---|
| tr_watch | CER ↓ | 0.015 | 0.081 | 0.146 | 0.014 | 0.144 | 0.017 |
| tr_watch | CTC CER ↓ | 0.041 | 0.081 | 0.191 | 0.035 | 0.166 | 0.046 |
| tr_watch | SIM ref ↑ | 0.431 | 0.655 | 0.670 | 0.768 | 0.662 | 0.759 |
| tr_watch | SIM GK ↑ | 0.404 | 0.635 | 0.695 | 0.797 | 0.647 | 0.789 |
| tr_watch | Premature EOS ↓ | 0.00 | 0.10 | 0.20 | 0.00 | 0.20 | 0.00 |
| tr_watch | Stutter ↓ | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| tr_watch | Dead air ↓ | 0.00 | 0.10 | 0.10 | 0.00 | 0.40 | 0.00 |
| tr_agglutinative | CER ↓ | 0.020 | 0.127 | 0.016 | 0.011 | 0.011 | 0.010 |
| tr_agglutinative | CTC CER ↓ | 0.029 | 0.135 | 0.036 | 0.022 | 0.023 | 0.024 |
| tr_agglutinative | SIM ref ↑ | 0.417 | 0.689 | 0.728 | 0.768 | 0.693 | 0.749 |
| tr_agglutinative | SIM GK ↑ | 0.386 | 0.672 | 0.762 | 0.793 | 0.672 | 0.785 |
| tr_agglutinative | Premature EOS ↓ | 0.00 | 0.25 | 0.00 | 0.00 | 0.00 | 0.00 |
| tr_agglutinative | Stutter ↓ | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| tr_agglutinative | Dead air ↓ | 0.00 | 0.25 | 0.12 | 0.00 | 0.00 | 0.12 |
| tr_en_codeswitch | CER ↓ | 0.039 | 0.054 | 0.058 | 0.063 | 0.064 | 0.051 |
| tr_en_codeswitch | CTC CER ↓ | 0.126 | 0.117 | 0.133 | 0.131 | 0.130 | 0.119 |
| tr_en_codeswitch | Loanword ↑ | 0.84 | 0.82 | 0.87 | 0.75 | 0.82 | 0.85 |
| tr_en_codeswitch | SIM ref ↑ | 0.485 | 0.662 | 0.741 | 0.775 | 0.683 | 0.764 |
| tr_en_codeswitch | SIM GK ↑ | 0.449 | 0.628 | 0.783 | 0.799 | 0.652 | 0.790 |
| tr_en_codeswitch | Premature EOS ↓ | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| tr_en_codeswitch | Stutter ↓ | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| tr_en_codeswitch | Dead air ↓ | 0.00 | 0.00 | 0.00 | 0.00 | 0.30 | 0.00 |
| studio_vs_vintage_ref | CER ↓ | 0.016 | 0.019 | 0.123 | 0.023 | 0.025 | 0.067 |
| studio_vs_vintage_ref | CTC CER ↓ | 0.056 | 0.069 | 0.168 | 0.085 | 0.069 | 0.133 |
| studio_vs_vintage_ref | Loanword ↑ | 0.96 | 0.92 | 0.88 | 0.83 | 0.83 | 0.88 |
| studio_vs_vintage_ref | SIM ref ↑ | 0.581 | 0.732 | 0.686 | 0.789 | 0.751 | 0.797 |
| studio_vs_vintage_ref | SIM GK ↑ | 0.233 | 0.384 | 0.388 | 0.487 | 0.390 | 0.495 |
| studio_vs_vintage_ref | Premature EOS ↓ | 0.00 | 0.00 | 0.12 | 0.00 | 0.00 | 0.12 |
| studio_vs_vintage_ref | Stutter ↓ | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| studio_vs_vintage_ref | Dead air ↓ | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.12 |
Two-sentence requests (A1, A3) vs single-sentence requests
| Requests | Metric | v1.0_base |
v2.0_base |
v1.0_gk_w050 |
v2.0_gk_w050 |
v3.0_base |
v3.0_gk_w050 |
|---|---|---|---|---|---|---|---|
| multi (4 renders) | CER ↓ | 0.037 | 0.057 | 0.259 | 0.034 | 0.212 | 0.043 |
| multi (4 renders) | Premature EOS ↓ | 0.00 | 0.00 | 0.25 | 0.00 | 0.25 | 0.00 |
| multi (4 renders) | Longest silence s ↓ | 0.64 | 0.71 | 0.71 | 0.73 | 2.26 | 0.80 |
| multi (4 renders) | Dead air ≥ 1.5 s ↓ | 0.00 | 0.00 | 0.00 | 0.00 | 0.25 | 0.00 |
| single (32 renders) | CER ↓ | 0.021 | 0.072 | 0.066 | 0.028 | 0.048 | 0.035 |
| single (32 renders) | Premature EOS ↓ | 0.00 | 0.09 | 0.06 | 0.00 | 0.03 | 0.03 |
| single (32 renders) | Longest silence s ↓ | 0.35 | 1.03 | 0.77 | 0.63 | 1.07 | 0.80 |
| single (32 renders) | Dead air ≥ 1.5 s ↓ | 0.00 | 0.09 | 0.06 | 0.00 | 0.19 | 0.06 |
Studio 24 kHz reference (kahya_klasik) vs vintage Yeşilçam film reference (Gaddar Kerim), same 2 sentences
| Model | Reference | Roll-off 85 % Hz | Roll-off 95 % Hz | SNR dB | CER ↓ | SIM ref ↑ | SIM GK ↑ |
|---|---|---|---|---|---|---|---|
v1.0_base |
studio | 472 | 920 | 51.9 | 0.023 | 0.808 | 0.152 |
v1.0_base |
vintage | 656 | 1236 | 51.1 | 0.009 | 0.354 | 0.314 |
v2.0_base |
studio | 439 | 885 | 50.5 | 0.032 | 0.836 | 0.163 |
v2.0_base |
vintage | 718 | 1230 | 45.2 | 0.006 | 0.628 | 0.605 |
v1.0_gk_w050 |
studio | 510 | 940 | 51.4 | 0.012 | 0.823 | 0.194 |
v1.0_gk_w050 |
vintage | 630 | 2323 | 32.1 | 0.235 | 0.550 | 0.583 |
v2.0_gk_w050 |
studio | 425 | 779 | 46.8 | 0.026 | 0.827 | 0.201 |
v2.0_gk_w050 |
vintage | 636 | 1213 | 42.6 | 0.020 | 0.752 | 0.773 |
v3.0_base |
studio | 451 | 911 | 64.2 | 0.034 | 0.829 | 0.143 |
v3.0_base |
vintage | 703 | 1104 | 47.9 | 0.016 | 0.674 | 0.637 |
v3.0_gk_w050 |
studio | 434 | 768 | 50.7 | 0.129 | 0.822 | 0.199 |
v3.0_gk_w050 |
vintage | 633 | 1362 | 46.7 | 0.006 | 0.773 | 0.792 |
Head-to-head, v2.0 − v1.0 (negative Δ CER / EOS / stutter / RTF and positive Δ SIM favour v2.0)
| Pair | Scope | Δ CER | Δ CTC CER | Δ Loanword | Δ SIM ref | Δ SIM GK | Δ Premature EOS | Δ Stutter | Δ Dead air | Δ RTF |
|---|---|---|---|---|---|---|---|---|---|---|
v2.0_base − v1.0_base |
overall | +0.047 | +0.035 | -0.03 | +0.205 | +0.211 | +0.08 | +0.00 | +0.08 | -0.00 |
v2.0_base − v1.0_base |
tr_watch | +0.067 | +0.040 | n/a | +0.224 | +0.231 | +0.10 | +0.00 | +0.10 | +0.00 |
v2.0_base − v1.0_base |
tr_agglutinative | +0.107 | +0.106 | n/a | +0.272 | +0.286 | +0.25 | +0.00 | +0.25 | -0.00 |
v2.0_base − v1.0_base |
tr_en_codeswitch | +0.015 | -0.009 | -0.03 | +0.177 | +0.179 | +0.00 | +0.00 | +0.00 | -0.00 |
v2.0_base − v1.0_base |
studio_vs_vintage_ref | +0.003 | +0.013 | -0.04 | +0.151 | +0.151 | +0.00 | +0.00 | +0.00 | -0.01 |
v2.0_base vs v1.0_base |
per-prompt CER: v2 better 3, tie 7, v1 better 8 | |||||||||
v2.0_gk_w050 − v1.0_gk_w050 |
overall | -0.059 | -0.065 | -0.08 | +0.068 | +0.062 | -0.08 | +0.00 | -0.06 | -0.01 |
v2.0_gk_w050 − v1.0_gk_w050 |
tr_watch | -0.132 | -0.156 | n/a | +0.097 | +0.102 | -0.20 | +0.00 | -0.10 | -0.01 |
v2.0_gk_w050 − v1.0_gk_w050 |
tr_agglutinative | -0.005 | -0.014 | n/a | +0.041 | +0.032 | +0.00 | +0.00 | -0.12 | -0.01 |
v2.0_gk_w050 − v1.0_gk_w050 |
tr_en_codeswitch | +0.005 | -0.002 | -0.12 | +0.034 | +0.016 | +0.00 | +0.00 | +0.00 | -0.02 |
v2.0_gk_w050 − v1.0_gk_w050 |
studio_vs_vintage_ref | -0.101 | -0.083 | -0.04 | +0.103 | +0.099 | -0.12 | +0.00 | +0.00 | -0.01 |
v2.0_gk_w050 vs v1.0_gk_w050 |
per-prompt CER: v2 better 9, tie 3, v1 better 6 |
Head-to-head, v3.0 − v2.0 (negative Δ CER / EOS / stutter / RTF and positive Δ SIM favour v3.0)
| Pair | Scope | Δ CER | Δ CTC CER | Δ Loanword | Δ SIM ref | Δ SIM GK | Δ Premature EOS | Δ Stutter | Δ Dead air | Δ RTF |
|---|---|---|---|---|---|---|---|---|---|---|
v3.0_base − v2.0_base |
overall | -0.004 | +0.002 | -0.04 | +0.013 | +0.011 | -0.03 | +0.00 | +0.11 | -0.06 |
v3.0_base − v2.0_base |
tr_watch | +0.062 | +0.084 | n/a | +0.007 | +0.012 | +0.10 | +0.00 | +0.30 | -0.06 |
v3.0_base − v2.0_base |
tr_agglutinative | -0.116 | -0.112 | n/a | +0.004 | -0.001 | -0.25 | +0.00 | -0.25 | -0.05 |
v3.0_base − v2.0_base |
tr_en_codeswitch | +0.011 | +0.013 | +0.00 | +0.021 | +0.025 | +0.00 | +0.00 | +0.30 | -0.07 |
v3.0_base − v2.0_base |
studio_vs_vintage_ref | +0.006 | -0.000 | -0.08 | +0.019 | +0.006 | +0.00 | +0.00 | +0.00 | -0.07 |
v3.0_base vs v2.0_base |
per-prompt CER: v3 better 5, tie 6, v2 better 7 | |||||||||
v3.0_gk_w050 − v2.0_gk_w050 |
overall | +0.007 | +0.011 | +0.07 | -0.008 | -0.005 | +0.03 | +0.00 | +0.06 | -0.05 |
v3.0_gk_w050 − v2.0_gk_w050 |
tr_watch | +0.003 | +0.010 | n/a | -0.009 | -0.008 | +0.00 | +0.00 | +0.00 | -0.05 |
v3.0_gk_w050 − v2.0_gk_w050 |
tr_agglutinative | -0.002 | +0.003 | n/a | -0.020 | -0.009 | +0.00 | +0.00 | +0.12 | -0.05 |
v3.0_gk_w050 − v2.0_gk_w050 |
tr_en_codeswitch | -0.012 | -0.012 | +0.10 | -0.011 | -0.009 | +0.00 | +0.00 | +0.00 | -0.04 |
v3.0_gk_w050 − v2.0_gk_w050 |
studio_vs_vintage_ref | +0.044 | +0.048 | +0.04 | +0.008 | +0.009 | +0.12 | +0.00 | +0.12 | -0.05 |
v3.0_gk_w050 vs v2.0_gk_w050 |
per-prompt CER: v3 better 4, tie 10, v2 better 4 |
v3.0 GK does not match or beat v2.0 GK under the rule fixed on 2026-11-02 (new_matches_or_beats_old: false): CER 0.0361 against 0.029, SIM GK 0.7231 against 0.7278, over 36 renders each. One v3.0 GK render stops early (premature EOS) and drives the mean; the median CER and WER favour v3.0 GK.
v3.0 Architecture & Post-Training Upgrades
v3.0 keeps the v2.0 architecture (the BreezeBlue/breeze-tts-2 Dual-AR backbone and depth decoder, the frozen codec)
and changes the training data and the post-training: the CPT corpus gains a stress drop-in and style captions, the
merge is selected by a grid on held-out items, and on-policy DPO is trained on rollouts of the merged checkpoint.
Recipe as run
CPT. The v2.0 schedule (1,045 optimizer steps, 156 in Phase 1, global batch 64) re-run on the v3.0 corpus (40.0 h, 33,444 utterances, 4,352 speakers, 17 shards) on 2× NVIDIA H200, with the stress drop-in (--p-stress-all 0.2, --p-stress-ambiguous 0.5) and the style captions (--p-caption 0.3) applied on the fly; the CPT export keeps α = 1.0 (the WiSE-FT blend is the merge step's).
The merge grid (grid_search_report.json) evaluated 7 configurations on a 50-item held-out set (25 hard sentences + 25 FLEURS tr_tr pairs disjoint from the benchmark pairs): the CPT checkpoint, uniform WiSE-FT 0.85, the v2.0 recipe (WiSE-FT 0.85 on backbone + depth decoder, text encoder trained) and component-wise SLERP at α_fast 0.45 / 0.55 / 0.65 / 0.75 (text 0.95, slow_mid 0.85, slow_top 0.75). No SLERP point met the CER constraint (CER ≤ CPT CER + 0.2 pp = 1.91%); the selected configuration is the v2.0 recipe anchor (v2recipe_0.85; selected_from: anchor, constraint_met: false). The component-wise SLERP merge was evaluated and rejected by its own grid; v3.0 is not a SLERP merge.
| Merge configuration | Interpolation | CER % ↓ | WER % ↓ | SIM ref ↑ |
UTMOS ↑ | Prem. EOS % ↓ |
|---|---|---|---|---|---|---|
trained (CPT checkpoint) |
lerp α 1.0 |
1.71 | 4.52 | 0.6376 | 3.82 | 2.0 |
uniform_0.85 |
lerp α 0.85 on every blended group |
2.41 | 4.22 | 0.6827 | 3.84 | 6.0 |
v2recipe_0.85 (selected) |
lerp α 0.85 on backbone + depth decoder, 1.0 elsewhere |
1.46 | 3.57 | 0.6734 | 3.84 | 4.0 |
alpha_fast_0.45 |
slerp fast 0.45, text 0.95, slow_mid 0.85, slow_top 0.75 |
10.33 | 12.27 | 0.6620 | 3.25 | 18.0 |
alpha_fast_0.55 |
slerp fast 0.55, text 0.95, slow_mid 0.85, slow_top 0.75 |
5.35 | 7.16 | 0.6794 | 3.40 | 10.0 |
alpha_fast_0.65 |
slerp fast 0.65, text 0.95, slow_mid 0.85, slow_top 0.75 |
4.11 | 6.01 | 0.6765 | 3.65 | 14.0 |
alpha_fast_0.75 |
slerp fast 0.75, text 0.95, slow_mid 0.85, slow_top 0.75 |
3.05 | 5.41 | 0.6726 | 3.81 | 10.0 |
The merge written (merge_report.json): lerp α 0.85 on the 421 wise_ft tensors (backbone + depth decoder, 1,843.7 M parameters), α 1.0 (the CPT weights) on the other 344 blended tensors, the frozen codec_model tensors copied unchanged.
On-policy rollouts. 360 prompts × 8 rollouts (2,880 in total) sampled from the merged checkpoint at 8 temperatures from 0.7 to 1.0; pair gates: winner CER ≤ 2%, winner SIM ref ≥ 0.6, reward margin ≥ 0.2; 170 accepted pairs (0.47 per prompt).
On-policy DPO. 170 accepted pairs, β = 0.1, NLL weight 0.1, LoRA r = 16/32, 42 optimizer steps on the merged checkpoint (LoRA ranks: backbone / depth decoder; dpo_training_summary.json); the LoRA weights are folded into a standalone export without a further WiSE-FT, and that export is v3.0.
Phase B ran on 5 RunPod pods for USD 51.98 (account balance USD 100.54 → USD 48.56); the first 4 stopped before a v3.0 checkpoint existed.
Gaddar Kerim character LoRA v3. The v2.0 character recipe (300 steps on 40 film clips) re-run on the v3.0 base and merged into it at 0.5× (WiSE-FT, 281 LoRA modules folded in): breeze_v3_gk_w050 in the benchmark tables above.
Stress set: lexical-stress accuracy, plain vs stress-marked input (296 items)
| Stress set model | n paired | Accuracy plain ↑ | Accuracy marked ↑ | Δ accuracy (95% CI) | z gain (95% CI) | Pair contrast plain ↑ | Alignment failures % ↓ |
|---|---|---|---|---|---|---|---|
v3_base |
296 | 0.4730 | 0.4764 | +0.0034 [-0.0439, +0.0507] | +0.0194 [-0.0811, +0.1136] | 0.2500 | 0.0 |
v3_gk_w050 |
277 | 0.4113 | 0.4722 | +0.0650 [+0.0072, +0.1264] | +0.2115 [+0.0984, +0.3253] | 0.2353 | 4.7 |
v2_base |
295 | 0.4358 | 0.4373 | +0.0000 [-0.0508, +0.0542] | -0.0104 [-0.1101, +0.0868] | 0.2027 | 0.0 |
upstream |
225 | 0.4064 | 0.4862 | +0.0889 [+0.0222, +0.1556] | +0.1706 [+0.0083, +0.3346] | 0.1947 | 15.2 |
Each row is one model's renders of the set. Δ and z gain are stress-marked − plain input within one model (the effect of the stress marks), with bootstrap intervals.
For v3_gk_w050 the TurkASR premature-EOS rule flags 20 of its 592 stress renders (3.38 %), against 0 of 592 for v3_base and 0 of 592 for v2_base. All 20 are silent (peak below 0.01), as are 2 more that the rule misses; those 22 clips fail alignment, so the row pairs 277 of the 296 items. Rendered again on the 17 flagged items (34 clips, same reference, seed and flags), the v3.0 GK blend is silent in 18 and the v2.0 GK blend in 0. Every stress row uses the studio kahya_klasik reference; the TurkASR-Bench-TTS rows condition both GK blends on gk_clean_025.wav, and there the premature-EOS rate is 0.67 % for v3.0 GK against 1.33 % for v2.0 GK.
Usage: with the v3.0 GK blend, clone from GK's own reference (gk_clean_025.wav); the studio reference produced 3.7 % silent clips in the stress set.
Speed (production fast path)
| Speed run | n | RTF median ↓ | RTF p90 ↓ | TTFA ms median ↓ | TTFA ms p90 ↓ | VRAM GiB ↓ | CER % ↓ | UTMOS median ↑ |
|---|---|---|---|---|---|---|---|---|
prod_default_v3 (v3.0 weights) |
36 | 0.389 | 0.443 | 283 | 405 | 10.05 | 4.18 | 4.17 |
prod_default_v2_rerun (v2.0 weights) |
36 | 0.387 | 0.436 | 299 | 390 | 10.05 | 5.05 | 4.18 |
prod_v3 (v3.0 weights) |
36 | 0.780 | 0.884 | 378 | 494 | 7.75 | 4.20 | 4.17 |
prod_v2_rerun (v2.0 weights) |
36 | 0.767 | 0.852 | 364 | 463 | 7.75 | 5.12 | 4.17 |
prod_default_final (T5, v2.0 weights, earlier session) |
36 | 0.409 | 0.482 | 327 | 513 | 10.05 | 5.07 | 4.18 |
The C3 rows (prod_default_v3, prod_default_v2_rerun, prod_v3, prod_v2_rerun) ran back to back in one session on 2026-11-03 with the same code, configs/fast.json, sentences, seeds and VRAM cap (11.0 GiB) on the shared local NVIDIA GeForce RTX 4090: the live TTS server :7860 stopped, the llama-server :8080 and the kahya bridge :8765 resident. prod runs the launcher's fast path (fast_backbone_decode, fast_depth_decoder) and prod_default the v3.0 default start, which adds fast_codec. prod_default_final is T5's headline measurement of the v3.0 code (an earlier session, on the v2.0 checkpoint).
Release gates
v3.0 fails the TurkASR-Bench-TTS KDHO, neg_imp, FLEURS SIM ref (against the published v2.0 value) and Freya/FLEURS premature-EOS release gates against v2.0. It is published on main by the author's decision after review
of the full results above (Freya-TR-Eval and FLEURS, TurkASR-Bench-TTS, the stress set and speed), with v2.0 preserved
at the tag v2.0 (commit b57cc736) and the same release also on the branch
v3.0-rc. TurkASR-Bench-TTS KDHO is 4.35 % for v3.0 against 3.22 % for v2.0 (gate: ≤ v2.0) and 3.61 % for the v2.0 checkpoint re-rendered on the same day (†); neg_imp polarity accuracy is 85.71 % against 100.0 % (gate: 100 %), from one misheard imperative verb, not a negation flip. The TurkASR UTMOS (4.040 against 4.032, gate: within 0.05) and premature-EOS (0.00 % against 0.67 %, gate: ≤ v2.0) gates pass.
Against the v2.0 re-render of the same cloud run, the Freya wer_8k gate passes (paired Δ +0.21 pp [-0.25, +0.74]; gate: the interval does not lie above 0), the FLEURS SIM ref gate passes against the re-render and fails against the published v2.0 value (0.6427 against 0.6414 and 0.6474; gate: ≥ v2.0), the UTMOS gate passes (Freya 4.0730 against 4.0745, Freya utmos_8k 3.7519 against 3.7473, FLEURS 3.3402 against 3.3279; gate: within 0.05) and the premature-EOS gate fails (Freya 0.20 % against 0.61 %, FLEURS 5.00 % against 4.00 %; gate: ≤ v2.0).
Bundled code
This release bundles the code it was published from, so the downloaded folder carries its own inference code:
infer.py, breeze_infer/, models/ and configs/fast.json (forked from
breezeblue-ai/breeze-tts commit 6eba901 and changed since; Apache-2.0,
whose licence text is kept as LICENSE-CODE; LICENSE is the model licence), requirements.txt, and the train_tr/
scripts of the v2.0 and v3.0 pipelines. Stress marks (normalize_turkish_for_tts(text, annotate_stress=True)) need two
things that are not bundled: the zeyrek package and the KDHO scorer's _zeyrek wrapper, vendored from
yagmurtuncer/turkish-asr-leaderboard-kdho under
train_tr/literature_benchmark_local/vendor/kdho_src/kdho/; the production API never sets annotate_stress.
Quickstart
This repository bundles both the model weights (model-*.safetensors, audio_tokenizer/) and the full Python inference and training codebase (infer.py, breeze_infer/ with the Turkish normalizer tr_normalizer.py, models/, configs/fast.json and train_tr/).
hf download ersanbil/Breeze-TTS-2-Turkish-Base --local-dir Breeze-TTS-2-Turkish-Base
# previous release v2.0: hf download ersanbil/Breeze-TTS-2-Turkish-Base --revision v2.0 --local-dir Breeze-TTS-2-Turkish-Base-v2.0
cd Breeze-TTS-2-Turkish-Base
python -m pip install -r requirements.txt
# Voice clone (reference audio + its exact transcript)
python infer.py . --ref-audio reference_tr.wav --ref-text "Referans kaydın birebir metni." \
--text "Saat on dört otuzdaki Sprint Planning toplantısına on dakika kaldı, GitHub üzerindeki pull request'i mergeledim." --output clone.wav
# Voice design (natural-language description, no reference)
python infer.py . --instruction "Sıcak, sakin ve net konuşan genç bir kadın sesi." --cfg-scale 4 \
--text "Merhaba, bugün size yeni projemizden bahsedeceğim." --output design.wav
# Voice direction (keep the reference identity, direct tone and pace)
python infer.py . --ref-audio reference_tr.wav --ref-text "Referans kaydın birebir metni." \
--instruction "Yavaş, ciddi ve ölçülü bir tonla konuş." --cfg-scale 4 --text "Toplantı ertelendi." --output direction.wav
Streaming server (24 kHz mono s16le PCM over HTTP):
python -m breeze_infer.api . --host 0.0.0.0 --port 7860
# Clone
curl -X POST http://127.0.0.1:7860/v1/audio/speech -F "text=Toplantıya on dakika kaldı." \
-F "ref_audio=@reference_tr.wav" -F "ref_text=Referans kaydın birebir metni." --output clone.pcm
# Design
curl -X POST http://127.0.0.1:7860/v1/audio/speech -F "text=Hoş geldiniz." -F "cfg_scale=4" \
-F "instruction=Tok, sakin ve güven veren bir erkek sesi." --output design.pcm
# Direction (reference identity + instruction)
curl -X POST http://127.0.0.1:7860/v1/audio/speech -F "text=Kapıyı yavaşça kapat." -F "cfg_scale=4" \
-F "instruction=Fısıltıyla ve gergin bir tonla konuş." \
-F "ref_audio=@reference_tr.wav" -F "ref_text=Referans kaydın birebir metni." --output direction.pcm
Community guide: training a character voice LoRA
A character adapter (backbone r=16 + depth decoder r=32 + codebooks_head r=16 LoRA, the script defaults) trains on one
RTX 4090 with the bundled train_tr/ suite included in this repository (train_tr/train_yesilcam_character_lora.py,
train_tr/train_breeze_tr_fsdp.py, train_tr/train_breeze_tr_dpo.py, train_tr/verify_and_wiseft_stage_bc.py).
T5Gemma 2, the projector and the audio embeddings stay frozen, so pronunciation and code-switching are kept. The Gaddar
Kerim adapter took 29.7 min for 300 steps on 40 clips; the script's default is 400 steps.
- Collect a few minutes of clean single-speaker speech (Gaddar Kerim: 40 clips, 2.8 min in total, 1.7–12.3 s each; no music, one sentence per clip, exact verbalized transcripts).
- Encode the clips with the bundled
audio_tokenizer/into[T, 16]codes: either a shard directory withmanifest.jsonl(utt_key,speaker_id,shard_file, ...) or a.ptfile holding lists of{id, text, instruction, audio_codes, speaker_id, wav_path}records. - Train (writes
adapter_model.safetensors+adapter_config.jsontocheckpoints/character_loras/<name>;--save-mergedalso writes a merged checkpoint):
python train_tr/train_yesilcam_character_lora.py --base-tr-model Breeze-TTS-2-Turkish-Base \
--data my_character.pt --speaker-id my_character --character-name my_character --max-steps 300
- Load it into the runtime.
merge=Truefolds the adapter into the base weights;breeze_inferneeds that when the adapter has acodebooks_headLoRA (the default), because its CUDA-graph depth decoder readscodebooks_head.weightdirectly.merge=Falseattaches or hot-swaps it as separate LoRA layers.
from pathlib import Path
from breeze_infer.runtime import load_runtime
from train_tr.train_yesilcam_character_lora import load_character_lora_adapter
tokenizer, model, audio_tokenizer = load_runtime(Path("Breeze-TTS-2-Turkish-Base"), device="cuda", attn_implementation="eager")
config = load_character_lora_adapter(model, "checkpoints/character_loras/my_character", merge=True)
print(config["reference_audio"], config["reference_text"]) # default reference clip for cloning
Then synthesize exactly as infer.py does (FastBreezeStreamingRuntime(model, audio_tokenizer, ...)).
License and responsible use
Derived from BreezeBlue/breeze-tts-2 and released under the BreezeBlue Research and Non-Commercial License
(see LICENSE): research and non-commercial use only, and the same terms apply to fine-tunes and character adapters.
Only clone or imitate voices you have the rights and consent to use, never to deceive or impersonate real people, and
disclose synthetic speech.
v3.0 Release Notes (2026-11-03)
- Release. v3.0 is published on
mainand on the branchv3.0-rcby the author's decision: it fails the TurkASR-Bench-TTS KDHO,neg_imp, FLEURSSIM ref(against the published v2.0 value) and Freya/FLEURS premature-EOS release gates (see Release gates above). v2.0 stays reachable at the tagv2.0. - Recipe. The CPT re-run with the stress drop-in and style captions, the v2.0-recipe WiSE-FT merge selected by the merge grid (the component-wise SLERP candidates were rejected by the same grid), and on-policy DPO on rollouts of the merge; the numbers are in v3.0 Architecture & Post-Training Upgrades.
- Compute. Phase B ran on RunPod (
4x NVIDIA H100 80GB HBM3 (ALL)and2x NVIDIA H200 (SECURE)pods; the cost is in the recipe section). Of the four earlier pods, two failed during setup on dependency checks, one was stopped when the caption calibration hung, and one failed in the merge grid after training the CPT, which the fifth pod restored instead of retraining. The Freya-TR-Eval and FLEURS benchmark (the rows marked ¹) ran on 4 more RunPod pods for USD 11.32 (verified account balance after each teardown: USD 48.56 → 47.90 → 47.41 → 46.29 → 37.24); the last one ran the full benchmark on oneNVIDIA H200.
v2.0 Continual Pretraining & Phase 3 Dual-AR DPO Release Notes
Corpus. 40.00 h, 33,445 utterances, 4,352 speakers in 17 shards. The v1.0 shards (7,481 utterances, 8.11 h) are reused byte-for-byte; v2.0 adds 25,964 utterances (31.89 h, 3,599 speakers), streamed on the pod: YODAS2-Sidon tr000 (sarulab-speech/yodas2_sidon, a Sidon-restored 24 kHz copy of espnet/yodas2, CC-BY-3.0; 22,617 utterances), Common Voice 17.0 tr (Hub mirror fsicoli/common_voice_17_0, CC0-1.0; 497 train, 1,645 dev and 757 test utterances), plus 448 edge-tts studio utterances: TR-EN code-switching (8 domains) and EN/ZH replay. audit_cpt_shards.py: PASSED, 30/30 checks.
| Subset | Utterances | Speakers | Hours |
|---|---|---|---|
| en_replay | 321 | 14 | 0.36 |
| natural_tr | 32,484 | 4,322 | 38.91 |
| tr_en_codeswitch | 640 | 16 | 0.72 |
CPT (Phase 1 + 2). 4 GPU(s), ddp, 1,045 optimizer steps (156 in Phase 1), global batch 64, 33,445 training utterances, 0.47 h. Loss 14.4084 (step 1) → 10.5154 (step 1045; c0 0.9753, weighted c1..c15 3.8160).
WiSE-FT. α = 0.85 (W = 0.85 · W_trained + 0.15 · W_base): 421 backbone / depth-decoder tensors interpolated toward BreezeBlue/breeze-tts-2; 78 LoRA modules merged first.
Phase 3 Dual-AR DPO. 480 synthetic preference pairs: chosen = the ground-truth codes of a training utterance, rejected = the same codes with one injected failure (160 premature_eos: truncated to 60–75% of the frames; 160 stutter: 2–3 spans of 3–6 frames repeated; 160 formant_drift: codebooks 1–3 shifted on 35–50% of voiced frames), 320 pairs from natural_tr and 160 from tr_en_codeswitch. β = 0.1, LoRA r = 16/32, 200 steps, 8.5 min on one GPU. Mean of the last 5 logged steps: loss 0.6485, reward margin +0.0935, preference accuracy 100.0%.
These are training-time numbers. The measured v1.0 vs v2.0 evaluation is under Benchmarks above.
Model Card Metadata & Citation (Künye ve Atıf)
| Field / Alan | Details / Açıklama |
|---|---|
| Model Name | ersanbil/Breeze-TTS-2-Turkish-Base (v3.0, also on branch v3.0-rc; v2.0 at tag v2.0) |
| Author / Geliştirici | Ersan Bilik (@ersanbil) |
| Release Date / Tarih | November 2026 |
| Base Architecture | BreezeBlue/breeze-tts-2 (Dual-AR, about 3.5 B parameters: T5Gemma 2 text encoder + Qwen3 slow-AR backbone + fast-AR depth decoder with 12 layers + Qwen3-TTS audio tokenizer with 16 codebooks at 12.5 Hz, 24 kHz) |
| Training Method | Continual Pre-Training re-run on the v3.0 corpus (40.0 h, 33,444 utterances, 4,352 speakers) with the stress drop-in and style captions + Weight-Space Ensembling (WiSE-FT, α = 0.85 on backbone + depth decoder) + on-policy Dual-AR Direct Preference Optimization (DPO, 170 on-policy pairs, β = 0.1) |
| Supported Capabilities | Turkish prosody and agglutinative morphology, TR-EN code-switching, zero-shot voice cloning (evaluated with 3–8 s references), natural-language voice design, voice direction, character LoRA adaptation (Gaddar Kerim: 300 steps, 29.7 min on 1× RTX 4090) |
| License | BreezeBlue Research and Non-Commercial License |
BibTeX (Model Citation / Model Atıf Künyesi)
If you use Breeze-TTS-2-Turkish-Base or our two-phase continual pre-training + WiSE-FT + Dual-AR DPO methodology in your research or evaluation benchmarks, please cite:
@misc{bilik2026breezetts2trv3,
title = {Breeze-TTS-2-Turkish-Base v3.0: Continual Pre-Training with a Stress Drop-In and Style Captions, Weight-Space Ensembling, and On-Policy Dual-AR Direct Preference Optimization for Turkish Speech Synthesis},
author = {Bilik, Ersan},
year = {2026},
month = {November},
publisher = {Hugging Face},
version = {v3.0},
howpublished = {\url{https://huggingface.co/ersanbil/Breeze-TTS-2-Turkish-Base}},
note = {Hub tag v3.0 marks the release commit. Derived from BreezeBlue/breeze-tts-2 (Dual-AR TTS, about 3.5B parameters)}
}
@misc{bilik2026breezetts2tr,
title = {Breeze-TTS-2-Turkish-Base v2.0: Continual Pre-Training, Weight-Space Ensembling, and Dual-AR Direct Preference Optimization for Morphologically Rich Turkish Speech Synthesis},
author = {Bilik, Ersan},
year = {2026},
month = {November},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/ersanbil/Breeze-TTS-2-Turkish-Base}},
note = {Derived from BreezeBlue/breeze-tts-2 (Dual-AR TTS, about 3.5B parameters)}
}
Literature & Benchmark References (Literatür ve Benchmark Kaynakçası)
The evaluations, metrics, and comparative baselines reported in this model card build upon the following open-source benchmarks, toolkits, and foundational papers. Author lists, titles and years follow the arXiv record; the published version is given after it.
- Base model: Breeze TTS 2:
- BreezeBlue (2026). Breeze TTS 2. Model:
BreezeBlue/breeze-tts-2; code:breezeblue-ai/breeze-tts; blog: breezeblue.ai/breeze-tts-2. Weights released 2026-08-25; no paper.
- BreezeBlue (2026). Breeze TTS 2. Model:
FreyaTTS&Freya-TR-Eval:- Pamuk, A. E., Yentür, Ö., Bayrak, A. T., Öztürk, Y. A. S., & Yavuz, M. (2026). FreyaTTS: A Compact Tokenizer-Free Flow-Matching Transformer for Turkish-First Speech Synthesis. arXiv:2607.09530. Dataset:
freyavoice/freya-tr-eval.
- Pamuk, A. E., Yentür, Ö., Bayrak, A. T., Öztürk, Y. A. S., & Yavuz, M. (2026). FreyaTTS: A Compact Tokenizer-Free Flow-Matching Transformer for Turkish-First Speech Synthesis. arXiv:2607.09530. Dataset:
TurkASR-Bench,TurkASR-Bench-TTS&KDHO(Turkish Root- and Affix-Aware Error Rate):- Tuncer, N. Y. (2026). TurkASR-Bench and KDHO: A Balanced Turkish ASR Benchmark with a Root- and Affix-Aware Error Rate. Datasets:
yagmurtuncer/turkasr-bench&yagmurtuncer/turkasr-bench-tts; KDHO code:yagmurtuncer/turkish-asr-leaderboard-kdho(kdho/, v0.1.1).
- Tuncer, N. Y. (2026). TurkASR-Bench and KDHO: A Balanced Turkish ASR Benchmark with a Root- and Affix-Aware Error Rate. Datasets:
Google FLEURS(tr_tr):- Conneau, A., Ma, M., Khanuja, S., Zhang, Y., Axelrod, V., Dalmia, S., Riesa, J., Rivera, C., & Bapna, A. (2022). FLEURS: Few-shot Learning Evaluation of Universal Representations of Speech. arXiv:2205.12446. Published in 2022 IEEE Spoken Language Technology Workshop (SLT), pp. 798–805, doi:10.1109/SLT54892.2023.10023141.
Coqui XTTS-v2(Multilingual Zero-Shot Baseline):- Casanova, E., Davis, K., Gölge, E., Göknar, G., Gulea, I., Hart, L., Aljafari, A., Meyer, J., Morais, R., Olayemi, S., & Weber, J. (2024). XTTS: a Massively Multilingual Zero-Shot Text-to-Speech Model. arXiv:2406.04904. Published in Interspeech 2024, pp. 4978–4982, doi:10.21437/Interspeech.2024-2016.
Meta MMS-TTS(facebook/mms-tts-tur):- Pratap, V., Tjandra, A., Shi, B., Tomasello, P., Babu, A., Kundu, S., Elkahky, A., Ni, Z., Vyas, A., Fazel-Zarandi, M., Baevski, A., Adi, Y., Zhang, X., Hsu, W.-N., Conneau, A., & Auli, M. (2023). Scaling Speech Technology to 1,000+ Languages. arXiv:2305.13516. Published in Journal of Machine Learning Research 25(97):1–52, 2024, jmlr.org/papers/v25/23-1318.
F5-TTS(Flow-Matching Baseline):- Chen, Y., Niu, Z., Ma, Z., Deng, K., Wang, C., Zhao, J., Yu, K., & Chen, X. (2024). F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching. arXiv:2410.06885. Published in Proceedings of the 63rd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), 2025, pp. 6255–6271, doi:10.18653/v1/2025.acl-long.313.
WiSE-FT(Weight-Space Ensembles for Fine-Tuning):- Wortsman, M., Ilharco, G., Kim, J. W., Li, M., Kornblith, S., Roelofs, R., Gontijo-Lopes, R., Hajishirzi, H., Farhadi, A., Namkoong, H., & Schmidt, L. (2021). Robust fine-tuning of zero-shot models. arXiv:2109.01903. Published in Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2022, pp. 7959–7971 (CVF open access).
DPO(Direct Preference Optimization):- Rafailov, R., Sharma, A., Mitchell, E., Ermon, S., Manning, C. D., & Finn, C. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290. Published in Advances in Neural Information Processing Systems 36 (NeurIPS 2023), pp. 53728–53741, doi:10.52202/075280-2338 (the proceedings list Manning before Ermon).
UTMOS(Automatic Neural MOS Naturalness Predictor):- Saeki, T., Xin, D., Nakata, W., Koriyama, T., Takamichi, S., & Saruwatari, H. (2022). UTMOS: UTokyo-SaruLab System for VoiceMOS Challenge 2022. arXiv:2204.02152. Published in Interspeech 2022, pp. 4521–4525, doi:10.21437/Interspeech.2022-439.
WeSpeaker(Speaker Verification & Embedding Toolkit):- Wang, H., Liang, C., Wang, S., Chen, Z., Zhang, B., Xiang, X., Deng, Y., & Qian, Y. (2022). Wespeaker: A Research and Production oriented Speaker Embedding Learning Toolkit. arXiv:2210.17016. Published in ICASSP 2023, pp. 1–5, doi:10.1109/ICASSP49357.2023.10096626.
Mozilla Common VoiceCorpus:- Ardila, R., Branson, M., Davis, K., Henretty, M., Kohler, M., Meyer, J., Morais, R., Saunders, L., Tyers, F. M., & Weber, G. (2019). Common Voice: A Massively-Multilingual Speech Corpus. arXiv:1912.06670. Published in Proceedings of the Twelfth Language Resources and Evaluation Conference (LREC 2020), pp. 4218–4222, ACL Anthology 2020.lrec-1.520.
@misc{turkasrbench2026,
title = {TurkASR-Bench and KDHO: A Balanced Turkish ASR Benchmark with a Root- and Affix-Aware Error Rate},
author = {Tuncer, Nur Yağmur},
year = {2026},
url = {https://huggingface.co/datasets/yagmurtuncer/turkasr-bench}
}
@misc{pamuk2026freyattscompacttokenizerfreeflowmatching,
title={FreyaTTS: A Compact Tokenizer-Free Flow-Matching Transformer for Turkish-First Speech Synthesis},
author={Ahmet Erdem Pamuk and Ömer Yentür and Ahmet Tunga Bayrak and Yavuz Alp Sencer Öztürk and Mustafa Yavuz},
year={2026},
eprint={2607.09530},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2607.09530},
}
@inproceedings{conneau2022fleurs,
title = {FLEURS: Few-shot Learning Evaluation of Universal Representations of Speech},
author = {Conneau, Alexis and Ma, Min and Khanuja, Simran and Zhang, Yu and Axelrod, Vera and Dalmia, Siddharth and Riesa, Jason and Rivera, Clara and Bapna, Ankur},
booktitle = {2022 IEEE Spoken Language Technology Workshop (SLT)},
pages = {798--805},
year = {2022},
doi = {10.1109/SLT54892.2023.10023141},
eprint = {2205.12446},
archivePrefix = {arXiv}
}
@inproceedings{casanova2024xtts,
title = {XTTS: a Massively Multilingual Zero-Shot Text-to-Speech Model},
author = {Casanova, Edresson and Davis, Kelly and G{\"o}lge, Eren and G{\"o}knar, G{\"o}rkem and Gulea, Iulian and Hart, Logan and Aljafari, Aya and Meyer, Joshua and Morais, Reuben and Olayemi, Samuel and Weber, Julian},
booktitle = {Interspeech 2024},
pages = {4978--4982},
year = {2024},
doi = {10.21437/Interspeech.2024-2016},
eprint = {2406.04904},
archivePrefix = {arXiv}
}
@article{pratap2024scaling,
title = {Scaling Speech Technology to 1,000+ Languages},
author = {Pratap, Vineel and Tjandra, Andros and Shi, Bowen and Tomasello, Paden and Babu, Arun and Kundu, Sayani and Elkahky, Ali and Ni, Zhaoheng and Vyas, Apoorv and Fazel-Zarandi, Maryam and Baevski, Alexei and Adi, Yossi and Zhang, Xiaohui and Hsu, Wei-Ning and Conneau, Alexis and Auli, Michael},
journal = {Journal of Machine Learning Research},
volume = {25},
number = {97},
pages = {1--52},
year = {2024},
url = {https://jmlr.org/papers/v25/23-1318.html},
eprint = {2305.13516},
archivePrefix = {arXiv}
}
- Downloads last month
- 84
Datasets used to train ersanbil/Breeze-TTS-2-Turkish-Base
sarulab-speech/yodas2_sidon
Papers for ersanbil/Breeze-TTS-2-Turkish-Base
FreyaTTS Technical Report
F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching
XTTS: a Massively Multilingual Zero-Shot Text-to-Speech Model
Direct Preference Optimization: Your Language Model is Secretly a Reward Model
Scaling Speech Technology to 1,000+ Languages
Evaluation results
- WER (%, Whisper-large-v3, 8 kHz band-matched) on Freya-TR-Eval (495 sentences)test set self-reported2.200
- CER (%, Whisper-large-v3, 8 kHz band-matched) on Freya-TR-Eval (495 sentences)test set self-reported0.410
- WER (%, Whisper-large-v3, full band) on Freya-TR-Eval (495 sentences)test set self-reported1.860
- CER (%, Whisper-large-v3, full band) on Freya-TR-Eval (495 sentences)test set self-reported0.390
- UTMOS22-strong (full band) on Freya-TR-Eval (495 sentences)test set self-reported4.070
- WeSpeaker ResNet34 cosine to the conditioning reference on Freya-TR-Eval (495 sentences)test set self-reported0.800
- WER (%, Whisper-large-v3) on FLEURS tr_tr test (100 unseen-speaker clone pairs)test set self-reported8.190
- CER (%, Whisper-large-v3) on FLEURS tr_tr test (100 unseen-speaker clone pairs)test set self-reported4.530