netease-youdao/Confucius4-TTS

Model

Confucius4-TTS is an advanced LLM-based text-to-speech (TTS) system designed for multilingual and cross-lingual speech synthesis. Built on a speech encoder + large language model (LLM) architecture, Confucius4-TTS enables high-quality speech generation while preserving speaker identity across languages. You can try our online demo at https://confucius4-tts.youdao.com/gradio.

40

15 commits

6 linked in READMEs

updated Sep 21, 2026

See the code

README

Confucius4-TTS

Confucius4-TTS: a Multilingual and Cross-Lingual Zero-Shot TTS Engine

One voice. Any language.

                         GitHub Code               

Confucius4-TTS is an advanced LLM-based text-to-speech (TTS) system designed for multilingual and cross-lingual speech synthesis. Built on a speech encoder + large language model (LLM) architecture, Confucius4-TTS enables high-quality speech generation while preserving speaker identity across languages. You can try our online demo at https://confucius4-tts.youdao.com/gradio.

✨ Key Features

  • 14 Languages Supported: Chinese, English, Japanese, Korean, German, French, Spanish, Indonesian, Italian, Thai, Portuguese, Russian, Malay and Vietnamese (more coming soon)
  • Unconstrained Voice Cloning: No reference transcript required
  • Cross-Lingual Voice Transfer: Unaccented speech synthesis across 14 languages
  • Zero-Shot Voice Transfer: Clone voices without additional training
  • Seamless Emotion Transfer: Clone the feeling, not just the voice
  • Robust Generalization: Stable performance in real-world multilingual scenarios

With strong cross-lingual generalization, Confucius4-TTS allows users to seamlessly switch languages while keeping the same voice, delivering fluent, natural, and expressive speech.

Contents

🛠 Installation

Requirements

  • Python 3.10
  • CUDA 12.6

Setup

  1. Clone the repository:
git clone https://github.com/netease-youdao/Confucius4-TTS.git
cd Confucius4-TTS
  1. Create and activate a conda environment:
conda create -n confuciustts python=3.10 -y
conda activate confuciustts
  1. Install dependencies:
pip install -r requirements.txt

🚀 Inference

Use the provided example.py script for zero-shot TTS synthesis:

python example.py \
    --prompt_wav path/to/reference.wav \
    --text "Your text to synthesize" \
    --lang en \
    --out output.wav \
    --config config/inference_config.yaml

You can also use the Python API directly:

import torch
import torchaudio
from confuciustts.cli.inference import ConfuciusTTS

model = ConfuciusTTS(
    config_path="config/inference_config.yaml",
    device="cuda" if torch.cuda.is_available() else "cpu",
)

audio = model.generate(
    text="Hello, welcome to Confucius4-TTS.",
    lang="en",
    prompt_wav="path/to/reference.wav",
    verbose=True,
)

torchaudio.save("output.wav", audio.cpu(), model.sample_rate)

🚀 Fine-Tuning

Confucius4-TTS follows a "speech encoder + LLM" architecture. The training pipeline covers two modules:

  • Text2Semantic (T2S): generates semantic token sequences from text and speaker conditioning.
  • Semantic2Acoustic (S2A): a flow-matching model that converts semantic tokens into mel spectrograms.

1. Prepare Pretrained Models

Download the two external models:

# Wav2Vec2-BERT (speaker conditioning & semantic feature extraction)
huggingface-cli download facebook/w2v-bert-2.0 \
    --local-dir pretrained/w2v-bert-2.0

# Amphion MaskGCT (semantic codec implementation)
git clone https://github.com/open-mmlab/Amphion.git external/Amphion

After downloading, your directory should look like:

checkpoints/
├── t2s_model.safetensors        # pretrained T2S weights
├── s2a_model.pt                 # pretrained S2A weights
├── wav2vec2bert_stats.pt        # semantic feature normalization statistics
├── special_tokens_map.json      # tokenizer files
├── tokenizer.json
├── tokenizer.model
└── tokenizer_config.json
pretrained/
├── w2v-bert-2.0/                # Wav2Vec2-BERT model
└── campplus/
    └── campplus_cn_common.bin   # CAMPPlus speaker encoder checkpoint
external/
└── Amphion/                     # MaskGCT semantic codec implementation

2. Prepare Training Data

Training data is provided as TSV files (tab-separated, no header) with the following 5 columns:

ColumnDescription
langLanguage code (e.g. zh, en, ja)
wav_pathPath to the target audio
norm_textNormalized text
semantic_ids_pathPre-extracted semantic tokens (.npy file path)
ref_audio_pathsReference audio path(s), comma-separated for multiple

Configure the train/validation paths in config/train_t2s.yaml:

data:
  train_data_path:
    - data/train.tsv
  val_data_path:
    - data/val.tsv

3. Launch T2S Training

Set the pretrained T2S checkpoint path in config/train_t2s.yaml:

paths:
  t2s_checkpoint: checkpoints/t2s_model.safetensors

Single-node training:

python -m confuciustts.cli.train_t2s -c config/train_t2s.yaml

4. Launch S2A Training

Set the checkpoint paths in config/train_s2a.yaml. t2s_checkpoint points to the frozen T2S backbone; s2a_checkpoint is optional and can be used to resume from a pretrained S2A model:

paths:
  t2s_checkpoint: checkpoints/t2s_model.safetensors
  s2a_checkpoint: checkpoints/s2a_model.pt   # optional: resume from pretrained S2A

Single-node training:

python -m confuciustts.cli.train_s2a -c config/train_s2a.yaml

During S2A training, the T2S model, speaker encoder (Wav2Vec2-BERT), and style encoder (CAMPPlus) are all frozen. Only the flow-matching S2A model is trained.

📊 Performance

Confucius4-TTS achieves competitive results on multilingual and cross-lingual zero-shot TTS benchmarks, with strong intelligibility and speaker similarity across multiple languages.

Lower is better for WER/CER (↓), and higher is better for SIM (↑).

CV3-eval Cross-lingual

CV3-eval Cross-lingual Results (click to expand)
DirectionMetricConfucius4-TTSCosyVoice2†CosyVoice3-0.5B†CosyVoice3-1.5B†OmniVoice†VoxCPM2
en→zhCER↓6.1613.508.488.016.536.29
ja→zhCER↓4.8748.106.866.7852.644.20
ko→zhCER↓1.287.705.243.301.711.20
zh→enWER↓3.1917.106.835.393.723.84
ja→enWER↓3.4411.205.865.945.254.10
ko→enWER↓3.4213.1018.3013.703.915.69

† Requires reference text.

X-Voice Benchmark

X-Voice Cross-lingual Results (click to expand)
DirectionMetricConfucius4-TTSX-VoiceIndexTTS2OmniVoice†VoxCPM2
de→zhCER↓2.863.073.467.793.62
en→zhCER↓3.213.063.783.303.35
fr→zhCER↓2.703.013.538.163.75
ja→zhCER↓3.503.394.1160.884.53
ko→zhCER↓2.863.132.907.356.33
th→zhCER↓2.822.793.082.855.96
vi→zhCER↓2.752.782.986.593.65

† Requires reference text.

Seed-TTS-eval

Seed-TTS-eval English & Chinese Zero-shot Results (click to expand)
SystemEnglish WER↓English SIM↑Chinese CER↓Chinese SIM↑
Confucius4-TTS1.490.7000.940.765
Confucius4-TTS (Continuation)†1.680.7151.150.766
Seed-TTS†2.250.7621.120.796
Qwen3-TTS†1.240.7140.770.770
FishAudio S2†1.790.6430.980.737
OmniVoice†1.620.7400.870.777
VoxCPM2†1.700.7520.970.793
X-Voice1.910.6271.470.746

† Requires reference text.

MiniMax-MLS-Test

MiniMax-MLS-Test Results (click to expand)
LanguageMetricConfucius4-TTSConfucius4-TTS (Continuation)†MiniMax-SpeechElevenLabsQwen3-TTS†FishAudio S2†OmniVoice†VoxCPM2†
GermanWER↓0.470.681.910.571.240.550.801.12
SIM↑0.7750.7770.7330.6140.7680.7060.8040.805
FrenchWER↓3.664.874.105.222.863.903.583.42
SIM↑0.7230.7550.6280.5350.7160.6580.7760.738
IndonesianWER↓1.121.411.241.062.931.341.17
SIM↑0.7650.7670.7290.6600.7360.7770.795
KoreanCER↓1.842.501.751.871.761.622.663.34
SIM↑0.8120.8240.7760.7000.7900.7420.8310.837
ThaiWER↓1.562.472.7073.946.662.932.19
SIM↑0.7730.8070.8000.5880.7490.8470.841
JapaneseCER↓4.144.053.5210.653.823.523.593.51
SIM↑0.7880.8060.7760.7380.7710.7530.8210.825
VietnameseWER↓1.611.590.8873.4214.110.954.19
SIM↑0.7510.7530.7430.3690.6930.7750.793
ItalianWER↓1.303.261.541.740.951.491.201.34
SIM↑0.7870.7910.6990.5790.7520.7640.8130.779
PortugueseWER↓2.483.911.881.331.531.571.831.71
SIM↑0.7960.8010.8050.7110.8050.7770.8660.842
SpanishWER↓1.021.651.031.081.130.950.811.32
SIM↑0.7780.7940.7620.6150.8140.7340.8140.829
RussianWER↓4.645.424.283.883.214.244.634.53
SIM↑0.7870.7960.7610.6750.7840.7680.7840.807

† Requires reference text.


Acknowledgements

Confucius4-TTS builds on the following open-source projects:

  • Qwen3-TTS — Speaker encoder (ECAPA-TDNN) and text embedding projector architectures
  • CosyVoice — Text normalization pipeline
  • Amphion / MaskGCT — Semantic codec implementation
  • w2v-BERT 2.0 — Semantic feature extraction and speaker conditioning
  • Seed-VC — Flow matching architecture reference
  • BigVGAN — High-fidelity neural vocoder for mel-spectrogram to waveform synthesis

Citation

If you find Confucius4-TTS useful in your research or project, please consider citing:

@misc{wang2026confucius4tts,
  title         = {Confucius4-TTS: Transcript-Free Cross-Lingual Zero-Shot TTS with a Learnable Speaker Encoder},
  author        = {Huaxuan Wang and Huimin Wang and Ruiyu Zhang and Yingjie Li and Yitao Duan},
  year          = {2026},
  eprint        = {2608.11650},
  archivePrefix = {arXiv},
  primaryClass  = {cs.SD},
  url           = {https://arxiv.org/abs/2608.11650}
}
confucius4
cross-lingual
multilingual
safetensors
speech-synthesis
text-to-speech
voice-cloning
zero-shot

Contributors

CharlesW

14 commits

nielsr

1 commits

netease-youdao/Confucius4-TTS

Model

Confucius4-TTS is an advanced LLM-based text-to-speech (TTS) system designed for multilingual and cross-lingual speech synthesis. Built on a speech encoder + large language model (LLM) architecture, Confucius4-TTS enables high-quality speech generation while preserving speaker identity across languages. You can try our online demo at https://confucius4-tts.youdao.com/gradio.

40

15 commits

6 linked in READMEs

updated Sep 21, 2026

See the code

README

Confucius4-TTS

Confucius4-TTS: a Multilingual and Cross-Lingual Zero-Shot TTS Engine

One voice. Any language.

                         GitHub Code               

Confucius4-TTS is an advanced LLM-based text-to-speech (TTS) system designed for multilingual and cross-lingual speech synthesis. Built on a speech encoder + large language model (LLM) architecture, Confucius4-TTS enables high-quality speech generation while preserving speaker identity across languages. You can try our online demo at https://confucius4-tts.youdao.com/gradio.

✨ Key Features

  • 14 Languages Supported: Chinese, English, Japanese, Korean, German, French, Spanish, Indonesian, Italian, Thai, Portuguese, Russian, Malay and Vietnamese (more coming soon)
  • Unconstrained Voice Cloning: No reference transcript required
  • Cross-Lingual Voice Transfer: Unaccented speech synthesis across 14 languages
  • Zero-Shot Voice Transfer: Clone voices without additional training
  • Seamless Emotion Transfer: Clone the feeling, not just the voice
  • Robust Generalization: Stable performance in real-world multilingual scenarios

With strong cross-lingual generalization, Confucius4-TTS allows users to seamlessly switch languages while keeping the same voice, delivering fluent, natural, and expressive speech.

Contents

🛠 Installation

Requirements

  • Python 3.10
  • CUDA 12.6

Setup

  1. Clone the repository:
git clone https://github.com/netease-youdao/Confucius4-TTS.git
cd Confucius4-TTS
  1. Create and activate a conda environment:
conda create -n confuciustts python=3.10 -y
conda activate confuciustts
  1. Install dependencies:
pip install -r requirements.txt

🚀 Inference

Use the provided example.py script for zero-shot TTS synthesis:

python example.py \
    --prompt_wav path/to/reference.wav \
    --text "Your text to synthesize" \
    --lang en \
    --out output.wav \
    --config config/inference_config.yaml

You can also use the Python API directly:

import torch
import torchaudio
from confuciustts.cli.inference import ConfuciusTTS

model = ConfuciusTTS(
    config_path="config/inference_config.yaml",
    device="cuda" if torch.cuda.is_available() else "cpu",
)

audio = model.generate(
    text="Hello, welcome to Confucius4-TTS.",
    lang="en",
    prompt_wav="path/to/reference.wav",
    verbose=True,
)

torchaudio.save("output.wav", audio.cpu(), model.sample_rate)

🚀 Fine-Tuning

Confucius4-TTS follows a "speech encoder + LLM" architecture. The training pipeline covers two modules:

  • Text2Semantic (T2S): generates semantic token sequences from text and speaker conditioning.
  • Semantic2Acoustic (S2A): a flow-matching model that converts semantic tokens into mel spectrograms.

1. Prepare Pretrained Models

Download the two external models:

# Wav2Vec2-BERT (speaker conditioning & semantic feature extraction)
huggingface-cli download facebook/w2v-bert-2.0 \
    --local-dir pretrained/w2v-bert-2.0

# Amphion MaskGCT (semantic codec implementation)
git clone https://github.com/open-mmlab/Amphion.git external/Amphion

After downloading, your directory should look like:

checkpoints/
├── t2s_model.safetensors        # pretrained T2S weights
├── s2a_model.pt                 # pretrained S2A weights
├── wav2vec2bert_stats.pt        # semantic feature normalization statistics
├── special_tokens_map.json      # tokenizer files
├── tokenizer.json
├── tokenizer.model
└── tokenizer_config.json
pretrained/
├── w2v-bert-2.0/                # Wav2Vec2-BERT model
└── campplus/
    └── campplus_cn_common.bin   # CAMPPlus speaker encoder checkpoint
external/
└── Amphion/                     # MaskGCT semantic codec implementation

2. Prepare Training Data

Training data is provided as TSV files (tab-separated, no header) with the following 5 columns:

ColumnDescription
langLanguage code (e.g. zh, en, ja)
wav_pathPath to the target audio
norm_textNormalized text
semantic_ids_pathPre-extracted semantic tokens (.npy file path)
ref_audio_pathsReference audio path(s), comma-separated for multiple

Configure the train/validation paths in config/train_t2s.yaml:

data:
  train_data_path:
    - data/train.tsv
  val_data_path:
    - data/val.tsv

3. Launch T2S Training

Set the pretrained T2S checkpoint path in config/train_t2s.yaml:

paths:
  t2s_checkpoint: checkpoints/t2s_model.safetensors

Single-node training:

python -m confuciustts.cli.train_t2s -c config/train_t2s.yaml

4. Launch S2A Training

Set the checkpoint paths in config/train_s2a.yaml. t2s_checkpoint points to the frozen T2S backbone; s2a_checkpoint is optional and can be used to resume from a pretrained S2A model:

paths:
  t2s_checkpoint: checkpoints/t2s_model.safetensors
  s2a_checkpoint: checkpoints/s2a_model.pt   # optional: resume from pretrained S2A

Single-node training:

python -m confuciustts.cli.train_s2a -c config/train_s2a.yaml

During S2A training, the T2S model, speaker encoder (Wav2Vec2-BERT), and style encoder (CAMPPlus) are all frozen. Only the flow-matching S2A model is trained.

📊 Performance

Confucius4-TTS achieves competitive results on multilingual and cross-lingual zero-shot TTS benchmarks, with strong intelligibility and speaker similarity across multiple languages.

Lower is better for WER/CER (↓), and higher is better for SIM (↑).

CV3-eval Cross-lingual

CV3-eval Cross-lingual Results (click to expand)
DirectionMetricConfucius4-TTSCosyVoice2†CosyVoice3-0.5B†CosyVoice3-1.5B†OmniVoice†VoxCPM2
en→zhCER↓6.1613.508.488.016.536.29
ja→zhCER↓4.8748.106.866.7852.644.20
ko→zhCER↓1.287.705.243.301.711.20
zh→enWER↓3.1917.106.835.393.723.84
ja→enWER↓3.4411.205.865.945.254.10
ko→enWER↓3.4213.1018.3013.703.915.69

† Requires reference text.

X-Voice Benchmark

X-Voice Cross-lingual Results (click to expand)
DirectionMetricConfucius4-TTSX-VoiceIndexTTS2OmniVoice†VoxCPM2
de→zhCER↓2.863.073.467.793.62
en→zhCER↓3.213.063.783.303.35
fr→zhCER↓2.703.013.538.163.75
ja→zhCER↓3.503.394.1160.884.53
ko→zhCER↓2.863.132.907.356.33
th→zhCER↓2.822.793.082.855.96
vi→zhCER↓2.752.782.986.593.65

† Requires reference text.

Seed-TTS-eval

Seed-TTS-eval English & Chinese Zero-shot Results (click to expand)
SystemEnglish WER↓English SIM↑Chinese CER↓Chinese SIM↑
Confucius4-TTS1.490.7000.940.765
Confucius4-TTS (Continuation)†1.680.7151.150.766
Seed-TTS†2.250.7621.120.796
Qwen3-TTS†1.240.7140.770.770
FishAudio S2†1.790.6430.980.737
OmniVoice†1.620.7400.870.777
VoxCPM2†1.700.7520.970.793
X-Voice1.910.6271.470.746

† Requires reference text.

MiniMax-MLS-Test

MiniMax-MLS-Test Results (click to expand)
LanguageMetricConfucius4-TTSConfucius4-TTS (Continuation)†MiniMax-SpeechElevenLabsQwen3-TTS†FishAudio S2†OmniVoice†VoxCPM2†
GermanWER↓0.470.681.910.571.240.550.801.12
SIM↑0.7750.7770.7330.6140.7680.7060.8040.805
FrenchWER↓3.664.874.105.222.863.903.583.42
SIM↑0.7230.7550.6280.5350.7160.6580.7760.738
IndonesianWER↓1.121.411.241.062.931.341.17
SIM↑0.7650.7670.7290.6600.7360.7770.795
KoreanCER↓1.842.501.751.871.761.622.663.34
SIM↑0.8120.8240.7760.7000.7900.7420.8310.837
ThaiWER↓1.562.472.7073.946.662.932.19
SIM↑0.7730.8070.8000.5880.7490.8470.841
JapaneseCER↓4.144.053.5210.653.823.523.593.51
SIM↑0.7880.8060.7760.7380.7710.7530.8210.825
VietnameseWER↓1.611.590.8873.4214.110.954.19
SIM↑0.7510.7530.7430.3690.6930.7750.793
ItalianWER↓1.303.261.541.740.951.491.201.34
SIM↑0.7870.7910.6990.5790.7520.7640.8130.779
PortugueseWER↓2.483.911.881.331.531.571.831.71
SIM↑0.7960.8010.8050.7110.8050.7770.8660.842
SpanishWER↓1.021.651.031.081.130.950.811.32
SIM↑0.7780.7940.7620.6150.8140.7340.8140.829
RussianWER↓4.645.424.283.883.214.244.634.53
SIM↑0.7870.7960.7610.6750.7840.7680.7840.807

† Requires reference text.


Acknowledgements

Confucius4-TTS builds on the following open-source projects:

  • Qwen3-TTS — Speaker encoder (ECAPA-TDNN) and text embedding projector architectures
  • CosyVoice — Text normalization pipeline
  • Amphion / MaskGCT — Semantic codec implementation
  • w2v-BERT 2.0 — Semantic feature extraction and speaker conditioning
  • Seed-VC — Flow matching architecture reference
  • BigVGAN — High-fidelity neural vocoder for mel-spectrogram to waveform synthesis

Citation

If you find Confucius4-TTS useful in your research or project, please consider citing:

@misc{wang2026confucius4tts,
  title         = {Confucius4-TTS: Transcript-Free Cross-Lingual Zero-Shot TTS with a Learnable Speaker Encoder},
  author        = {Huaxuan Wang and Huimin Wang and Ruiyu Zhang and Yingjie Li and Yitao Duan},
  year          = {2026},
  eprint        = {2608.11650},
  archivePrefix = {arXiv},
  primaryClass  = {cs.SD},
  url           = {https://arxiv.org/abs/2608.11650}
}
confucius4
cross-lingual
multilingual
safetensors
speech-synthesis
text-to-speech
voice-cloning
zero-shot

Contributors

CharlesW

14 commits

nielsr

1 commits