Skip to content

shichaog/MeloVC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 

Hugging Face License Python

介绍

MeloVC 是一个修改自 MeloTTS 的文本转语音(TTS)项目,专注于高质量的中英双语语音合成,并通过 Speaker Embedding 技术实现了零样本(Zero-Shot)声音克隆。

与原始 MeloTTS 不同,本项目不再使用 speaker_id,而是通过提取任意一段参考音频的声纹(Speaker Embedding)来控制生成语音的音色和风格。

English Version

[v3] - 2026-01-15

增加

  • 🆕 Mamba 文本编码器版本(实验性更新) 本项目新增了一个 基于 Mamba(State Space Model)的文本编码器变体,用于替换原有的 Transformer Text Encoder。 该版本在保持整体声学架构不变的前提下,引入 线性复杂度序列建模能力,以提升长文本与中英混合文本场景下的推理效率与稳定性。

  • ⚠️ 当前版本为 实验性(Experimental),在韵律和表达力上可能与 Transformer 版本存在差异。

  • 🔬 设计动机(Why Mamba) 原始 Transformer 文本编码器在 TTS 场景中存在以下局限:

  • 序列长度平方复杂度(O(n²))
  • 长文本或中英混合输入时显存占用较高
  • 推理阶段延迟不稳定
  • Mamba 的优势:
  • 线性时间复杂度(O(n))
  • 更适合长序列建模
  • 推理显存占用更低

对中英混合文本更加友好 因此,本项目引入 Mamba 作为一种 可选的文本编码器实现。

  • 📦 Mamba 版本模型文件 以下文件为 Mamba 文本编码器版本 所对应的配置与模型权重:

模块 文件名 配置文件 config_Mamba.json Generator G_Mamba_30000.pth Discriminator D_Mamba_30000.pth Duration Predictor DUR_Mamba_30000.pth

注意:Mamba 版本与 Transformer 版本 checkpoint 不可混用。

[v2] - 2025-08-15

增加

  • 基频包络控制 增加了harvest基频提取方法
  • HiFi-GAN升级成了NSF-HIFIGAN
  • 预训练的模型V2开源到了 HuggingFace

✨ 主要特性

  • 高质量语音合成:所有模型均在 44.1kHz 采样率下训练,提供清晰、自然的听感,以追求更高的音质。
  • 语言支持:本项目专注于中英文,移除了对其他语言的支持,简化了模型结构。
  • 零样本声音克隆 (Zero-Shot Voice Cloning):基于 speechbrain/spkrec-ecapa-voxceleb 提取的 192 维 Speaker Embedding。仅需一段3秒的参考音频,这使得模型具备了强大的零样本声音克隆能力。同时支持无参考文本生成。
  • 中英双语支持:深度优化了中英文混合文本的处理,发音更准确、流畅。
  • 易于使用的推理接口:输入 文本 + 参考音频预提取的 Speaker Embedding 即可进行推理。
  • 开源预训练多说话人模型:V100 单核,训练24*3小时,见 HuggingFace
  • 数据集:使用了不同的数据集组合进行训练,以优化特定场景下的表现。
    • 基于 200+ 小时 VoxBox 开源数据集和 16 小时私有数据混合训练,泛化能力和音色多样性更强。由于数据量有限,克隆不同音色效果存在差异
      • Ai-shell3 85小时
      • hifi_tts 90小时
      • ravdess 1小时
      • vctk 41小时
      • 私有数据 16小时

🚀 快速开始

1. 环境安装

首先,克隆本仓库并安装所需的依赖。

git clone https://github.com/shichaog/MeloVC.git
cd MeloVC
pip install -e .
python -m unidic download

2. 推理示例

命令行

克隆

python infer.py --text "我最近在学习machine learning,希望能够在未来的artificial intelligence领域有所建树。"  -m /path/to/G_XXXX.pth -o ./

非克隆

python infer.py --text "我最近在学习machine learning,希望能够在未来的artificial intelligence领域有所建树。" --ref_audio_path XXXX.wav -m /path/to/G_XXX.pth -o ./

🔧 训练自己的模型

如果你想使用自己的数据集训练模型,或者微调模型请遵循以下步骤:

1. 安装环境

在训练前请先安装MeloVC到开发模式,然后到melovc目录下

pip install -e .
cd melovc

2. 数据准备

准备你的数据集,并创建一个 `metadata.list 文件,格式如下:

path/to/audio1.wav|LANGUAGE-CODE|这是第一段文本。
path/to/audio2.wav|LANGUAGE-CODE|This is the second text.
...
  • 语言
    • 仅中文,LANGUAGE-CODE:ZH
    • 仅英文,LANGUAGE-CODE:EN
    • 中英文混合,LANGUAGE-CODE:ZH_MIX_EN
  • 音频格式:推荐使用 44.1kHz 采样率的 WAV 文件。
  • 文本:确保文本与音频内容对应,并已进行清洗,比如用ASR模型如(whisper)检验文本。
  • 为了效果,建议如下:
    • 单人训练,建议高质量总时长在10小时以上
    • 大规模人数,由于不方便统计单人时长,以数据量越多越好

data/example/metadata.list目录下有一个例子可以参考。

在上述准备妥当之后,可以使用如下预处理命令代码:

python preprocess_text.py --metadata path/to/metadata.list --config_path path/to/config.json

这会提前计算训练时用到的bert、spectral、speaker Embedding信息,以加速训练的过程。在处理完成之后会在metadata.list同名目录下生成config.jsontrain.listval.list文件,这里包括模型、训练以及数据相关信息。

3. 修改配置文件

复制并修改 configs/config.json 文件,主要关注以下部分:

  • data -> training_files: 指向你的 filelist.txt
  • data -> embedding_dir: 指向你保存 Speaker Embedding 的目录(如果预计算了)。
  • train: 调整 batch_size, epochs 等训练参数。

4. 开始训练

bash train.sh <path/to/config.json> <num_of_gpus>
如:bash train.sh path/to/your/config.json 1

这会在执行该命令的目录下生成logs目录,该目录中包含了训练的log以及checkpoint,可以使用tensorboard查看结果。在训练的时候会从Huggingface上下载模型文件 HuggingFace

作者

如果你发现这个有用,请参与后续的迭代。

📜 许可证

本项目采用 Apache 2.0 License。

🙏 特别感谢

About

Chinese and English text to speech model

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors