krafton-ai/Raon-OpenTTS

Open-source text-to-speech model from KRAFTON trained exclusively on public speech data, with curated datasets and reproducible training support.

100

stars

8

commits

Python

primary language

May 21, 2026

updated

README

Raon-OpenTTS

Raon-OpenTTS

Open Models and Data for Robust Text-to-Speech

arXiv HuggingFace Model 0.3B Model 1B Dataset Eval

Technical Report | Raon-OpenTTS-1B

Highlights

  • Fully open: both model weights and training data are publicly available.
  • Large-scale training: 510.1K hours of quality-filtered speech (Raon-OpenTTS-Core), drawn from a 615K-hour open pool (Raon-OpenTTS-Pool) comprising 11 English datasets.
  • Competitive with closed-data SOTA: matches or outperforms MaskGCT, VoxCPM, CosyVoice 3, and Qwen3-TTS on standard benchmarks while being the first system that is simultaneously open-weight and open-data at this scale.
  • Two model sizes: 0.3B and 1B parameters, both based on the F5-TTS DiT architecture.

Model Zoo

ModelParamsArchitectureTraining DataDownload
Raon-OpenTTS-0.3B336MDiT (dim=1024, depth=22, heads=16, ff_mult=2)Raon-OpenTTS-Core (510.1K hrs)HuggingFace
Raon-OpenTTS-1B1048MDiT (dim=1408, depth=28, heads=24, ff_mult=4)Raon-OpenTTS-Core (510.1K hrs)HuggingFace

Both models use character-level tokenization (vocab size 5,512) with text_dim=512, and are trained on 80-channel log mel-spectrograms at 16 kHz (hop=256). A pretrained HiFi-GAN vocoder (16 kHz, LibriTTS) is used for waveform synthesis.

Benchmark Results

Bold marks the best result and the Raon-OpenTTS rows. All numbers are from the paper (arXiv:2605.20830).

Seed-TTS-Eval (English)

WER measured via Whisper-large-v3; speaker similarity (SIM) via WavLM-large.

ModelParamsTraining DataOpen-WeightOpen-DataWER (%) ↓SIM ↑
Human----2.140.734
Seed-TTS--2.250.762
CosyVoice 31.5B~1M hrs2.210.720
Index-TTS 21.5B55K hrsYes2.180.709
Llasa8B250K hrsYes3.630.581
VoxCPM0.5B1.8M hrsYes1.980.730
CosyVoice 20.5B170K hrsYes2.610.659
CosyVoice 30.5B~1M hrsYes2.500.698
Qwen3-TTS1.7B~5M hrsYes1.460.715
Voxtral TTS4B-Yes2.190.663
MaskGCT0.6B100K hrsYesYes2.570.713
F5-TTS0.3B100K hrsYesYes2.040.671
Raon-OpenTTS-0.3B0.3B510K hrsYesYes1.950.687
Raon-OpenTTS-1B1.0B510K hrsYesYes1.780.749

CV3-Eval

WER on CV3-EN and CV3-Hard-EN; SIM via ERes2Net, DNSMOS for perceptual quality (CV3-Hard-EN).

ModelCV3-EN WER (%) ↓CV3-Hard-EN WER (%) ↓CV3-Hard-EN SIM ↑CV3-Hard-EN DNSMOS ↑
F5-TTS8.54---
MaskGCT7.7341.090.6243.48
CosyVoice 26.2710.280.7103.95
CosyVoice 34.9610.770.7403.98
VoxCPM5.246.440.6703.78
Qwen3-TTS4.527.890.6663.87
Raon-OpenTTS-0.3B4.627.310.7303.77
Raon-OpenTTS-1B3.926.150.7753.85

Raon-OpenTTS-Eval

Covers 4 acoustic regimes (Clean, Noisy, Wild, Expressive) across 12 datasets with 6K prompt-text pairs. Overall is computed over all evaluation samples.

ModelClean WER ↓Clean SIM ↑Noisy WER ↓Noisy SIM ↑Wild WER ↓Wild SIM ↑Expr. WER ↓Expr. SIM ↑Overall WER ↓Overall SIM ↑
F5-TTS2.170.6133.820.640136.030.3243.460.50325.080.542
MaskGCT3.390.6725.560.72728.000.5816.440.5468.610.635
CosyVoice 22.590.6424.390.67549.730.5353.660.53611.020.603
CosyVoice 32.530.6783.690.7208.310.6185.490.5674.430.647
VoxCPM2.240.6863.420.73843.830.5532.660.5659.480.642
Qwen3-TTS3.380.6844.600.72679.140.5285.810.52717.590.626
Raon-OpenTTS-0.3B1.570.6454.030.7005.830.5712.530.5702.930.623
Raon-OpenTTS-1B1.440.7183.510.7695.610.6562.770.6332.810.695

Installation

git clone https://github.com/krafton-ai/Raon-OpenTTS.git
cd Raon-OpenTTS
pip install -e .

# With evaluation dependencies (WER, SIM, DNSMOS)
pip install -e ".[eval]"

Vocoder

We use a HiFi-GAN vocoder fine-tuned on LibriTTS at 16 kHz (originally from speechbrain/tts-hifigan-libritts-16kHz). Our standalone loader requires no speechbrain dependency.

mkdir -p pretrained_models
huggingface-cli download speechbrain/tts-hifigan-libritts-16kHz generator.ckpt --local-dir pretrained_models

Quick Start: Inference

python -m f5_tts.infer.infer_cli \
    --config src/f5_tts/configs/03b.yaml \
    --ckpt_dir checkpoints/Raon-OpenTTS-0.3B \
    --ckpt_name model_last.pt \
    --lst_path data/librispeech_pc_test_clean_cross_sentence.lst \
    --audio_root data/librispeech/test-clean \
    --output_dir output/inference

VAD-based Duration Estimation

The inference pipeline uses VAD-trimmed reference length for generation-length estimation, while the original (non-trimmed) audio is used as the conditioning signal. A dynamic silence threshold adapts to the speaker's volume, and a minimum speech rate (12 chars/sec) is enforced to prevent excessively long generations.

from f5_tts.infer.utils_infer import infer_process

audio, sr, _ = infer_process(ref_audio, ref_text, gen_text, model, vocoder)

Training

Both models are trained from the Raon-OpenTTS-Pool HuggingFace dataset using the core split (quality-filtered).

Launch training

# 0.3B model (1 nodes x 8 GPUs)
accelerate launch --multi_gpu --mixed_precision bf16 \
    --num_processes 8 --num_machines 1 \
    -m f5_tts.train.train --config-name=03b

# 1B model (1 nodes x 8 GPUs)
accelerate launch --multi_gpu --mixed_precision bf16 \
    --num_processes 8 --num_machines 1 \
    -m f5_tts.train.train --config-name=1b

Adapting to different hardware

If you use a different number of GPUs or batch size, recompute total_updates_per_epoch with a dry run:

# Run one step and check log output for "TOTAL UPDATES <N>"
accelerate launch --multi_gpu --mixed_precision bf16 \
    --num_processes <num_gpus> \
    -m f5_tts.train.train --config-name=03b
# Then set: total_updates_per_epoch = TOTAL_UPDATES / (epochs x num_gpus)

Evaluation

We evaluate on 3 benchmarks measuring intelligibility (WER) and speaker similarity (SIM):

BenchmarkMetricsDescription
Seed-TTS-Eval (EN)WER (Whisper-large-v3), SIM (WavLM-large)Standard zero-shot TTS evaluation with cross-sentence prompts
CV3-EvalWER, SIM (ERes2Net), DNSMOSCV3-EN and CV3-Hard-EN subsets with diverse speakers
Raon-OpenTTS-EvalWER, SIM4 acoustic regimes (Clean, Noisy, Wild, Expressive), 12 datasets, 6K prompt-text pairs
# Run evaluation across all benchmarks
bash src/f5_tts/eval/run_infer_eval.sh

Data

Raon-OpenTTS-Pool (615K hours, 11 English speech datasets) is publicly available on HuggingFace

Raon-OpenTTS-Core (510.1K hours, 194.5M segments) is the quality-filtered subset used for training. It is obtained by applying a combined filter based on DNSMOS, WER, and VAD rank scores, removing the bottom 15% of Raon-OpenTTS-Pool. The core split in the HuggingFace dataset corresponds to Raon-OpenTTS-Core.

Acknowledgement

This project is built upon F5-TTS by SWivid. We thank the authors for their excellent open-source work.

License

This project is licensed under Apache 2.0.

Citation

@article{kim2026raonopentts,
    title={Raon-OpenTTS: Open Models and Data for Robust Text-to-Speech},
    author={Kim, Semin and Chung, Seungjun and Moon, Taehong and Lee, Sangheon and Ahn, Minyoung and Lee, Keon and Kim, Nam Soo and Cho, Jaewoong and Schmidt, Ludwig and Lee, Kangwook and Park, Dongmin},
    journal={arXiv preprint arXiv:2605.20830},
    year={2026}
}

Contributors

ddwkim

6 commits

s-j-chung

1 commits

yevvonlim

1 commits

krafton-ai/Raon-OpenTTS

Open-source text-to-speech model from KRAFTON trained exclusively on public speech data, with curated datasets and reproducible training support.

100

stars

8

commits

Python

primary language

May 21, 2026

updated

README

Raon-OpenTTS

Raon-OpenTTS

Open Models and Data for Robust Text-to-Speech

arXiv HuggingFace Model 0.3B Model 1B Dataset Eval

Technical Report | Raon-OpenTTS-1B

Highlights

  • Fully open: both model weights and training data are publicly available.
  • Large-scale training: 510.1K hours of quality-filtered speech (Raon-OpenTTS-Core), drawn from a 615K-hour open pool (Raon-OpenTTS-Pool) comprising 11 English datasets.
  • Competitive with closed-data SOTA: matches or outperforms MaskGCT, VoxCPM, CosyVoice 3, and Qwen3-TTS on standard benchmarks while being the first system that is simultaneously open-weight and open-data at this scale.
  • Two model sizes: 0.3B and 1B parameters, both based on the F5-TTS DiT architecture.

Model Zoo

ModelParamsArchitectureTraining DataDownload
Raon-OpenTTS-0.3B336MDiT (dim=1024, depth=22, heads=16, ff_mult=2)Raon-OpenTTS-Core (510.1K hrs)HuggingFace
Raon-OpenTTS-1B1048MDiT (dim=1408, depth=28, heads=24, ff_mult=4)Raon-OpenTTS-Core (510.1K hrs)HuggingFace

Both models use character-level tokenization (vocab size 5,512) with text_dim=512, and are trained on 80-channel log mel-spectrograms at 16 kHz (hop=256). A pretrained HiFi-GAN vocoder (16 kHz, LibriTTS) is used for waveform synthesis.

Benchmark Results

Bold marks the best result and the Raon-OpenTTS rows. All numbers are from the paper (arXiv:2605.20830).

Seed-TTS-Eval (English)

WER measured via Whisper-large-v3; speaker similarity (SIM) via WavLM-large.

ModelParamsTraining DataOpen-WeightOpen-DataWER (%) ↓SIM ↑
Human----2.140.734
Seed-TTS--2.250.762
CosyVoice 31.5B~1M hrs2.210.720
Index-TTS 21.5B55K hrsYes2.180.709
Llasa8B250K hrsYes3.630.581
VoxCPM0.5B1.8M hrsYes1.980.730
CosyVoice 20.5B170K hrsYes2.610.659
CosyVoice 30.5B~1M hrsYes2.500.698
Qwen3-TTS1.7B~5M hrsYes1.460.715
Voxtral TTS4B-Yes2.190.663
MaskGCT0.6B100K hrsYesYes2.570.713
F5-TTS0.3B100K hrsYesYes2.040.671
Raon-OpenTTS-0.3B0.3B510K hrsYesYes1.950.687
Raon-OpenTTS-1B1.0B510K hrsYesYes1.780.749

CV3-Eval

WER on CV3-EN and CV3-Hard-EN; SIM via ERes2Net, DNSMOS for perceptual quality (CV3-Hard-EN).

ModelCV3-EN WER (%) ↓CV3-Hard-EN WER (%) ↓CV3-Hard-EN SIM ↑CV3-Hard-EN DNSMOS ↑
F5-TTS8.54---
MaskGCT7.7341.090.6243.48
CosyVoice 26.2710.280.7103.95
CosyVoice 34.9610.770.7403.98
VoxCPM5.246.440.6703.78
Qwen3-TTS4.527.890.6663.87
Raon-OpenTTS-0.3B4.627.310.7303.77
Raon-OpenTTS-1B3.926.150.7753.85

Raon-OpenTTS-Eval

Covers 4 acoustic regimes (Clean, Noisy, Wild, Expressive) across 12 datasets with 6K prompt-text pairs. Overall is computed over all evaluation samples.

ModelClean WER ↓Clean SIM ↑Noisy WER ↓Noisy SIM ↑Wild WER ↓Wild SIM ↑Expr. WER ↓Expr. SIM ↑Overall WER ↓Overall SIM ↑
F5-TTS2.170.6133.820.640136.030.3243.460.50325.080.542
MaskGCT3.390.6725.560.72728.000.5816.440.5468.610.635
CosyVoice 22.590.6424.390.67549.730.5353.660.53611.020.603
CosyVoice 32.530.6783.690.7208.310.6185.490.5674.430.647
VoxCPM2.240.6863.420.73843.830.5532.660.5659.480.642
Qwen3-TTS3.380.6844.600.72679.140.5285.810.52717.590.626
Raon-OpenTTS-0.3B1.570.6454.030.7005.830.5712.530.5702.930.623
Raon-OpenTTS-1B1.440.7183.510.7695.610.6562.770.6332.810.695

Installation

git clone https://github.com/krafton-ai/Raon-OpenTTS.git
cd Raon-OpenTTS
pip install -e .

# With evaluation dependencies (WER, SIM, DNSMOS)
pip install -e ".[eval]"

Vocoder

We use a HiFi-GAN vocoder fine-tuned on LibriTTS at 16 kHz (originally from speechbrain/tts-hifigan-libritts-16kHz). Our standalone loader requires no speechbrain dependency.

mkdir -p pretrained_models
huggingface-cli download speechbrain/tts-hifigan-libritts-16kHz generator.ckpt --local-dir pretrained_models

Quick Start: Inference

python -m f5_tts.infer.infer_cli \
    --config src/f5_tts/configs/03b.yaml \
    --ckpt_dir checkpoints/Raon-OpenTTS-0.3B \
    --ckpt_name model_last.pt \
    --lst_path data/librispeech_pc_test_clean_cross_sentence.lst \
    --audio_root data/librispeech/test-clean \
    --output_dir output/inference

VAD-based Duration Estimation

The inference pipeline uses VAD-trimmed reference length for generation-length estimation, while the original (non-trimmed) audio is used as the conditioning signal. A dynamic silence threshold adapts to the speaker's volume, and a minimum speech rate (12 chars/sec) is enforced to prevent excessively long generations.

from f5_tts.infer.utils_infer import infer_process

audio, sr, _ = infer_process(ref_audio, ref_text, gen_text, model, vocoder)

Training

Both models are trained from the Raon-OpenTTS-Pool HuggingFace dataset using the core split (quality-filtered).

Launch training

# 0.3B model (1 nodes x 8 GPUs)
accelerate launch --multi_gpu --mixed_precision bf16 \
    --num_processes 8 --num_machines 1 \
    -m f5_tts.train.train --config-name=03b

# 1B model (1 nodes x 8 GPUs)
accelerate launch --multi_gpu --mixed_precision bf16 \
    --num_processes 8 --num_machines 1 \
    -m f5_tts.train.train --config-name=1b

Adapting to different hardware

If you use a different number of GPUs or batch size, recompute total_updates_per_epoch with a dry run:

# Run one step and check log output for "TOTAL UPDATES <N>"
accelerate launch --multi_gpu --mixed_precision bf16 \
    --num_processes <num_gpus> \
    -m f5_tts.train.train --config-name=03b
# Then set: total_updates_per_epoch = TOTAL_UPDATES / (epochs x num_gpus)

Evaluation

We evaluate on 3 benchmarks measuring intelligibility (WER) and speaker similarity (SIM):

BenchmarkMetricsDescription
Seed-TTS-Eval (EN)WER (Whisper-large-v3), SIM (WavLM-large)Standard zero-shot TTS evaluation with cross-sentence prompts
CV3-EvalWER, SIM (ERes2Net), DNSMOSCV3-EN and CV3-Hard-EN subsets with diverse speakers
Raon-OpenTTS-EvalWER, SIM4 acoustic regimes (Clean, Noisy, Wild, Expressive), 12 datasets, 6K prompt-text pairs
# Run evaluation across all benchmarks
bash src/f5_tts/eval/run_infer_eval.sh

Data

Raon-OpenTTS-Pool (615K hours, 11 English speech datasets) is publicly available on HuggingFace

Raon-OpenTTS-Core (510.1K hours, 194.5M segments) is the quality-filtered subset used for training. It is obtained by applying a combined filter based on DNSMOS, WER, and VAD rank scores, removing the bottom 15% of Raon-OpenTTS-Pool. The core split in the HuggingFace dataset corresponds to Raon-OpenTTS-Core.

Acknowledgement

This project is built upon F5-TTS by SWivid. We thank the authors for their excellent open-source work.

License

This project is licensed under Apache 2.0.

Citation

@article{kim2026raonopentts,
    title={Raon-OpenTTS: Open Models and Data for Robust Text-to-Speech},
    author={Kim, Semin and Chung, Seungjun and Moon, Taehong and Lee, Sangheon and Ahn, Minyoung and Lee, Keon and Kim, Nam Soo and Cho, Jaewoong and Schmidt, Ludwig and Lee, Kangwook and Park, Dongmin},
    journal={arXiv preprint arXiv:2605.20830},
    year={2026}
}

Contributors

ddwkim

6 commits

s-j-chung

1 commits

yevvonlim

1 commits

Languages

Python

97.0%

Shell

3.0%