Back to Pyvideotrans

README.Zh

videotrans/confuciustts/README.zh.md

4.0614.9 KB
Original Source
<div align="center">
<h1>Confucius4-TTS: 多语种跨语种零样本TTS</h1>
<p><b>一种音色,任意语言。</b></p>
</div> <div align="center"> <a href="./README.md"></a> &nbsp;&nbsp;&nbsp;&nbsp; <a href="./LICENSE"></a> &nbsp;&nbsp;&nbsp;&nbsp; <a href="https://confucius4-tts.youdao.com/gradio"></a> &nbsp;&nbsp;&nbsp;&nbsp; <a href="https://2901733926.github.io/Confucius4-TTS/"></a> &nbsp;&nbsp;&nbsp;&nbsp; <a href="https://huggingface.co/netease-youdao/Confucius4-TTS"></a> &nbsp;&nbsp;&nbsp;&nbsp; <a href="https://modelscope.cn/models/netease-youdao/Confucius4-TTS"></a> &nbsp;&nbsp;&nbsp;&nbsp; </div>

Confucius4-TTS 是一款基于大语言模型(LLM)的先进文本转语音(TTS)系统,专为多语种和跨语种语音合成而设计。基于语音编码器 + 大语言模型(LLM)架构构建,能够在保持说话人音色一致的同时,实现跨语种的高质量语音生成。 在线 Demo 页面体验:[https://confucius4-tts.youdao.com/gradio]

✨ 核心特性

  • 支持 14 种语言:中文、英文、日语、韩语、德语、法语、西班牙语、印尼语、意大利语、泰语、葡萄牙语、俄语、马来语、越南语 (更多语言即将推出)
  • 无约束声音克隆:无需参考文本
  • 跨语种声音迁移:跨 14 种语言的无口音语音合成
  • 零样本声音迁移:无需额外训练即可克隆声音
  • 无缝情感迁移:克隆情感,而非仅仅是声音
  • 强泛化能力:在真实多语种场景中表现稳定

凭借强大的跨语种泛化能力,Confucius4-TTS 允许用户在保持相同音色的同时无缝切换语言,提供流畅、自然且富有表现力的语音。

Contents

🛠 环境安装

环境要求

  • Python 3.10
  • CUDA 12.6

安装步骤

  1. 克隆仓库:
bash
git clone https://github.com/netease-youdao/Confucius4-TTS.git
cd Confucius4-TTS
  1. 创建并激活 conda 环境:
bash
conda create -n confuciustts python=3.10 -y
conda activate confuciustts
  1. 安装依赖:
bash
pip install -r requirements.txt

🚀 推理

对于访问 HuggingFace 受限的环境,运行前可设置镜像端点:

bash
export HF_ENDPOINT=https://hf-mirror.com

基础用法

使用提供的 example.py 脚本进行 zero-shot TTS 合成:

bash
python example.py \
    --prompt_wav path/to/reference.wav \
    --text "要合成的文本" \
    --lang zh \
    --out output.wav \
    --config config/inference_config.yaml

也可以直接使用 Python API:

python
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="你好,欢迎使用 Confucius4-TTS。",
    lang="zh",
    prompt_wav="path/to/reference.wav",
    verbose=True,
)

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

vLLM 用法

上面的基础路径使用 HuggingFace Transformers 运行 Text2Semantic(T2S)自回归阶段。如需更快的 T2S 生成,可切换到 vLLM 后端(example_vllm.py),通过 PagedAttention 加速 LLM 阶段。

当前支持 vLLM 0.16.0(V1 engine)。更早的 vLLM 版本未经过测试,可能无法运行,因为模型注册和 GPUModelRunner 的 monkey-patch 针对的是 v1 engine 内部实现。

⚠️ vllm 对 GPU 架构 / 驱动 / CUDA 有特定要求,可能无法在你的硬件上运行;直接装进基础环境可能破坏其它依赖。建议从基础环境克隆一个独立的 conda 环境,只安装 vLLM 的附加依赖。

bash
# 1. 从基础环境克隆一个专用环境(继承 confuciustts 的依赖)
conda create -n confuciustts_vllm --clone confuciustts
conda activate confuciustts_vllm

# 2. 安装 vLLM 附加依赖
pip install -r requirements_vllm_add.txt

# 3. 运行 vLLM 示例(模型在首次运行时自动下载)
python example_vllm.py \
    --prompt_wav path/to/reference.wav \
    --text "要合成的文本" \
    --lang zh \
    --out output_vllm.wav

通过 --stream 参数同时支持非流式与流式生成:

bash
# 非流式:合成整段语音并保存为一个 .wav
python example_vllm.py \
    --prompt_wav path/to/reference.wav \
    --text "要合成的文本" \
    --lang zh \
    --out output_vllm.wav

# 流式:逐块生成(model.generate_stream),此处拼接为一个 .wav
python example_vllm.py \
    --prompt_wav path/to/reference.wav \
    --text "要合成的文本" \
    --lang zh \
    --out output_vllm_stream.wav \
    --stream

Web Demo

提供了一个 Gradio 网页界面,可在浏览器中进行交互式 zero-shot 声音克隆:上传参考音频、输入文本、选择语言并点击生成。

bash
python webui.py --port 7860

然后在浏览器打开 http://<服务器IP>:7860。参考音频通过 HTTP 上传到服务器,因此客户端浏览器无需与服务器共享文件系统。

在线服务

如需程序化调用(例如从另一台服务/机器调用 TTS),可使用 FastAPI 服务。它同时提供非流式与流式接口,并以 HTTP 文件上传方式接收参考音频,因此客户端与服务器无需在同一台机器上。

bash
python server.py --port 8000
接口方法说明
/api/ttsPOST(multipart)非流式:返回完整的 .wav(PCM 16-bit)
/api/tts/streamPOST(multipart)流式:原始 int16-LE PCM 分块(采样率见 X-Sample-Rate 头)

请求表单字段:textlang(如 zhenja)、reference(音频文件上传)。

bash
# 非流式 → out.wav
curl -F "text=要合成的文本" -F "lang=zh" -F "reference=@path/to/reference.wav" \
     http://localhost:8000/api/tts -o out.wav

# 流式 → 原始 int16 PCM(22050 Hz,单声道),按 X-Sample-Rate 头播放
curl -F "text=要合成的文本" -F "lang=zh" -F "reference=@path/to/reference.wav" \
     http://localhost:8000/api/tts/stream -o out.pcm

🚀 微调

Confucius4-TTS 采用「语音编码器 + LLM」架构,训练流程涵盖以下两个模块:

  • Text2Semantic(T2S):根据文本与说话人条件生成语义 token 序列。
  • Semantic2Acoustic(S2A):流匹配模型,将语义 token 转换为梅尔频谱图。

1. 准备预训练模型

下载两个外部模型:

bash
# Wav2Vec2-BERT(说话人条件化 & 语义特征提取)
huggingface-cli download facebook/w2v-bert-2.0 \
    --local-dir pretrained/w2v-bert-2.0

# Amphion MaskGCT(语义编解码器实现)
git clone https://github.com/open-mmlab/Amphion.git external/Amphion

下载完成后,目录结构如下:

checkpoints/
├── t2s_model.safetensors        # T2S 预训练权重
├── s2a_model.pt                 # S2A 预训练权重
├── wav2vec2bert_stats.pt        # 语义特征归一化统计量
├── special_tokens_map.json      # 分词器文件
├── tokenizer.json
├── tokenizer.model
└── tokenizer_config.json
pretrained/
├── w2v-bert-2.0/                # Wav2Vec2-BERT 模型
└── campplus/
    └── campplus_cn_common.bin   # CAMPPlus 说话人编码器权重
external/
└── Amphion/                     # MaskGCT 语义编解码器实现

2. 准备训练数据

训练数据为 TSV 文件(制表符分隔),不含表头,包含以下 5 列:

列名说明
lang语言代码(如 zhenja
wav_path目标音频路径
norm_text归一化后的文本
semantic_ids_path预提取的语义 token(.npy 文件路径)
ref_audio_paths参考音频路径,支持多个用逗号分隔

config/train_t2s.yaml 中配置训练/验证集路径:

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

3. 启动 T2S 训练

config/train_t2s.yaml 中设置预训练 T2S 权重路径:

yaml
paths:
  t2s_checkpoint: checkpoints/t2s_model.safetensors

单机训练:

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

4. 启动 S2A 训练

config/train_s2a.yaml 中设置权重路径。t2s_checkpoint 指向冻结的 T2S 骨干网络;s2a_checkpoint 为可选项,用于从预训练 S2A 模型继续训练:

yaml
paths:
  t2s_checkpoint: checkpoints/t2s_model.safetensors
  s2a_checkpoint: checkpoints/s2a_model.pt   # 可选:从预训练 S2A 权重继续训练

单机训练:

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

S2A 训练过程中,T2S 模型、说话人编码器(Wav2Vec2-BERT)和风格编码器(CAMPPlus)均处于冻结状态,只有流匹配 S2A 模型参与训练。

📊 性能

Confucius4-TTS 在多语种及跨语种零样本 TTS 基准测试中表现优异,兼具高可懂度与说话人相似度。

WER/CER 越低越好(↓),SIM 越高越好(↑)。

CV3-eval 跨语种

<details> <summary><b>CV3-eval 跨语种结果(点击展开)</b></summary>
DirectionMetricConfucius4-TTSF5-TTS†Spark-TTSCosyVoice2†CosyVoice3-0.5B†CosyVoice3-0.5B + DiffRO†CosyVoice3-1.5B†CosyVoice3-1.5B + DiffRO†
en→zhWER↓6.7111.6012.4013.508.485.168.015.09
ja→zhWER↓4.9348.106.863.226.783.05
ko→zhWER↓1.467.705.241.033.301.06
zh→enWER↓3.195.577.3617.106.834.415.394.20
ja→enWER↓3.4411.205.864.785.944.19
ko→enWER↓3.4213.1018.307.9113.707.08

† 需要参考文本。

</details>

X-Voice Benchmark

<details> <summary><b>X-Voice 跨语种结果(点击展开)</b></summary>
DirectionMetricConfucius4-TTSX-VoiceOmniVoice†IndexTTS2
de→zhWER↓2.863.0713.103.46
SIM↑0.5690.5160.6910.544
en→zhWER↓3.273.064.033.78
SIM↑0.5040.4430.5440.485
fr→zhWER↓2.743.0118.103.53
SIM↑0.5500.5180.6860.543
ja→zhWER↓3.503.3979.104.11
SIM↑0.6370.6290.7090.650
ko→zhWER↓2.863.1311.882.90
SIM↑0.6490.6550.7180.650
th→zhWER↓2.872.793.303.08
SIM↑0.6230.6140.6610.622
vi→zhWER↓2.752.7810.512.98
SIM↑0.6400.6410.7010.641

† 需要参考文本。

</details>

Seed-TTS-eval

<details> <summary><b>Seed-TTS-eval 中英文测试集结果(点击展开)</b></summary>
LanguageMetricConfucius4-TTSQwen3-TTSFishAudio S2†OmniVoice†VoxCPM2†X-Voice
EnglishWER↓1.491.240.991.601.841.91
SIM↑0.700.7140.7410.7530.627
ChineseCER↓0.940.770.540.840.971.47
SIM↑0.7650.7700.7770.7950.746

† 需要参考文本。

</details>

MiniMax-Multilingual-Test

<details> <summary><b>MiniMax-Multilingual-Test 结果(点击展开)</b></summary>
LanguageMetricConfucius4-TTSElevenLabQwen3-TTSFishAudio S2†OmniVoice†VoxCPM2†X-Voice
GermanWER↓0.470.571.240.550.960.682.00
SIM↑0.7750.6140.7680.7670.8120.8030.763
FrenchWER↓3.665.222.863.053.354.534.73
SIM↑0.7230.5350.7160.6980.8010.7350.746
IndonesianWER↓1.121.061.461.971.081.47
SIM↑0.7650.6600.7630.8050.8000.725
KoreanWER↓1.841.871.761.182.651.962.27
SIM↑0.8120.7000.7900.8170.8280.8330.788
ThaiWER↓1.5673.944.233.982.964.71
SIM↑0.7730.5880.7860.8410.8400.791
JapaneseWER↓4.1410.653.822.764.034.637.13
SIM↑0.7880.7380.7710.7960.8280.8280.765
VietnameseWER↓1.6173.427.411.373.311.40
SIM↑0.7510.3690.7400.8050.8060.672
ItalianWER↓1.301.740.951.272.071.562.27
SIM↑0.7870.5790.7520.7470.8120.7800.780
PortugueseWER↓2.481.331.531.142.511.942.61
SIM↑0.7960.7110.8050.7810.8590.8370.794
SpanishWER↓1.021.081.130.911.031.442.91
SIM↑0.7780.6150.8140.7760.8040.8310.747
RussianWER↓4.643.883.212.402.233.636.49
SIM↑0.7870.6750.7840.7900.7830.8110.799

† 需要参考文本。

</details>

致谢

Confucius4-TTS 基于以下开源项目构建:

  • Qwen3-TTS — 说话人编码器(ECAPA-TDNN)及文本嵌入投影层架构
  • CosyVoice — 文本归一化流程
  • Amphion / MaskGCT — 语义编解码器实现
  • w2v-BERT 2.0 — 语义特征提取与说话人条件化
  • Seed-VC — Flow matching 架构参考
  • BigVGAN — 高保真神经声码器,用于梅尔频谱图到波形的合成

引用

如果您在研究或项目中使用了 Confucius4-TTS,请考虑引用:

bibtex
@misc{confucius4tts_2026,
  title        = {Confucius4-TTS: A Multilingual and Cross-Lingual Zero-Shot TTS Engine},
  author       = {{NetEase Youdao}},
  year         = {2026},
  howpublished = {\url{https://github.com/netease-youdao/Confucius4-TTS}},
  note         = {GitHub repository}
}