-
Notifications
You must be signed in to change notification settings - Fork 632
Voice Cloning with your personal data.zh
为了响应社区需求,我们很开心地发布了声音克隆功能,并提供了两个教程示例!
- 该功能至少需要一张 Nvidia GPU 显卡 。
- 目标声音的数据至关重要!详细要求将在下一节中提供。
- 目前,该功能仅支持中文和英文,这意味着你可以使用中文数据或英文数据进行训练,从而得到一个能够说两种语言的音色模型。
- 尽管EmotiVoice支持情感控制,但如果想要你的声音传达情感,训练数据也需要富有情感。
- 在仅使用你的数据进行训练后,来自EmotiVoice的原始声音将被改变。这意味着新的模型将完全根据你的数据进行定制。如果想使用EmotiVoice的2000+个原始声音,建议使用原始的预训练模型。
- 音频数据应该有较高质量,需要清晰无失真的单个人语音。时长或句数暂时不做强制要求,几句话也行,不过推荐在100句话以上。
- 与每个音频对应的文本应该与语音的内容严格相符。在进行训练之前,原始文本会使用G2P转换为音素。需要注意停顿(sp*)和多音字的转换结果,它们对训练质量影响很大。
- 如果希望你的声音传达情感,训练数据也需要富有情感。此外,**标签'prompt'**的内容应该根据每个音频进行修改。提示词的内容可以包括情感、语速以及说话风格等任何形式的文本描述。
- 然后,你会得到一个名为
data directory
的目录,包含两个子目录,分别是train
和valid
。每个子目录都有一个datalist.jsonl
文件,且每行的格式为:{"key": "LJ002-0020", "wav_path": "data/LJspeech/wavs/LJ002-0020.wav", "speaker": "LJ", "text": ["<sos/eos>", "[IH0]", "[N]", "engsp1", "[EY0]", "[T]", "[IY1]", "[N]", "engsp1", "[TH]", "[ER1]", "[T]", "[IY1]", "[N]", ".", "<sos/eos>"], "original_text": "In 1813", "prompt": "common"}
。
中文请参考 DataBaker Recipe,英文请参考:LJSpeech Recipe。以下是概要:
-
准备训练环境——只需要配置一次。
# create conda enviroment conda create -n EmotiVoice python=3.8 -y conda activate EmotiVoice # then run: pip install EmotiVoice[train] # or git clone https://github.com/netease-youdao/EmotiVoice pip install -e .[train]
-
参考 Detailed requirements for training data 进行数据准备,推荐参考示例DataBaker Recipe 和 LJSpeech Recipe中的方法和脚本。
-
接下来,运行以下命令创建一个用于训练的目录:
python prepare_for_training.py --data_dir <data directory> --exp_dir <experiment directory>
。替换
<data directory>
为准备好的数据目录的实际路径,<experiment directory>
为实验目录的期望路径。 -
可以根据服务器配置和数据的情况修改
<experiment directory>/config/config.py
。完成修改后,通过运行以下命令启动训练过程torchrun --nproc_per_node=1 --master_port 8018 train_am_vocoder_joint.py --config_folder <experiment directory>/config --load_pretrained_model True
。这个命令将使用指定的配置文件夹启动训练过程,并加载任何指定的预训练模型)。目前该方法适用于Linux,Windows可能会遇到问题! -
在完成一些训练步骤后,选择某个checkpoint,运行以下命令确认效果是否符合预期:
python inference_am_vocoder_exp.py --config_folder exp/DataBaker/config --checkpoint g_00010000 --test_file data/inference/text
。别忘了修改data/inference/text
中speaker字段的内容。如果结果满意,就可以随意使用了!我们提供了一个修改版的demo page:demo_page_databaker.py
来体验用DataBaker克隆后的音色效果。 -
如果结果不尽人意,可以继续训练,或者检查你的数据和环境。当然,欢迎在社区讨论,或者提交issue!
我们提供如下运行时间信息和硬件配置信息,供大家参考:
- Pip包的版本:Python 3.8.18, torch 1.13.1, cuda 11.7
- GPU卡型号:NVIDIA GeForce RTX 3090, NVIDIA A40
- 训练耗时:训练一万步,大概需要1-2个小时。
它甚至可以不用GPU显卡,只用CPU来训练。请静候佳音!