1、项目下载地址
2、创建该项目运行的虚拟环境、安装所需库和包
conda env create -f environment.yaml
3、激活虚拟环境
conda activate maas
4、部署与实现
(1)准备训练数据
录制5-10分钟语音作为训练数据
(2)处理训练数据
运行该命令,便可得到训练的特征数据
python kantts/preprocess/data_process.py --voice_input_dir YOUR_DATA_PATH --voice_output_dir OUTPUT_DATA_FEATURE_PATH --audio_config AUDIO_CONFIG_PATH --speaker YOUR_SPEKER_NAME
处理成功,把便可得到如下目录:
# mit-style data, training stage
.
├── Script.xml
├── am_train.lst
├── am_valid.lst
├── badlist.txt
├── duration/
├── energy/
├── f0/
├── mel/
├── raw_duration/
├── raw_metafile.txt
├── trim_mel/
├── trim_wav/
└── wav/
(3)Sambert
1)训练前准备
此项目训练方式是通过配置驱动,我们只需在默认Sambert模型配置kantts/configs/sambert_24k.yaml,可对该配置中的一些参数尽心进行修改,创建自己的Sambert模型。
必须注意的是,需要将kantts/configs/sambert_24k.yaml
或者kantts/configs/sambert_16k_MAS.yaml 字段的speaker_list修改为数据集的说话人名称具体如下:
linguistic_unit:
cleaners: english_cleaners
lfeat_type_list: sy,tone,syllable_flag,word_segment,emo_category,speaker_category
speaker_list: YOUR_SPEAKER_NAME #说话人的名称
上述准备工作完成,就可以开始分训练了
2)Sambert开始训练
1.如果GPU设备足够,便可以进行分布式训练,CUDA_VISIBLE_DEVICES系统变量分配索引,具体有:
CUDA_VISIBLE_DEVICES=0,1,2,4 ;
--nproc_per_node
表示 GPU 设备的计数;
--resume_path
可用于使用预训练模型恢复训练,或从以前的检查点继续训练;
--resume_bert_path
可用于使用预训练的 BERT 模型恢复训练;
# The --root_dir can be multiple args for universal vococer training
CUDA_VISIBLE_DEVICES=0 python kantts/bin/train_sambert.py --model_config YOUR_MODEL_CONFIG --root_dir OUTPUT_DATA_FEATURE_PATH --stage_dir TRAINING_STAGE_PATH
3).训练完成后,TRAIING_STAGE_PATH的样子如下:
.
├── ckpt/
├── config.yaml
├── log/
└── stdout.log
4)模型检查点存储在目录中的ckpt文件夹下,具体如下:
./ckpt
├── checkpoint_10000.pth
├── checkpoint_12000.pth
├── checkpoint_14000.pth
├── checkpoint_16000.pth
├── checkpoint_18000.pth
├── checkpoint_2000.pth
├── checkpoint_4000.pth
├── checkpoint_6000.pth
└── checkpoint_8000.pth
(4)HiFi-GAN
1)训练前准备
修改音频配置以适合您的数据,演示配置文件: kantts/configs/hifigan_v1_24k.yaml,对配置修改,创建自己的HiFi-GAN模型
2)开始训练
# The --root_dir can be multiple args for universal vococer training
CUDA_VISIBLE_DEVICES=0 python kantts/bin/train_hifigan.py --model_config YOUR_MODEL_CONFIG --root_dir OUTPUT_DATA_FEATURE_PATH --stage_dir TRAINING_STAGE_PATH
2)训练完成
训练完成后,TRAINING_STAGE_PATH 的具体样子如下:
.
├── ckpt/
│ ├── checkpoint_120000.pth
│ ├── checkpoint_130000.pth
│ ├── ...
│ └── checkpoint_200000.pth <---- this is the latest checkpoint
├── config.yaml
├── log/
└── stdout.log
(5)Inference推理
1)Sambert的推理
从验证数据集中随机挑选 10 个序列,并使用它们来生成 melspec。
cat OUTPUT_DATA_FEATURE_PATH/am_valid.lst | shuf -n 10 > OUTPUT_DATA_FEATURE_PATH/test_sequence.lst
然后运行以下命令来推断 sambert。
CUDA_VISIBLE_DEVICES=0 python kantts/bin/infer_sambert.py --sentence OUTPUT_DATA_FEATURE_PATH/test_sequence.lst --ckpt YOUR_MODEL_CKPT --output_dir OUTPUT_PATH_TO_STORE_MEL
最后,将在 OUTPUT_PATH_TO_STORE_MEL
下获得预测的 melspec 文件。
2)HiFi-GAN的推理
测试训练好的模型,准备一个验证 mel 文件,然后运行下面的命令,其中:
--input_mel
可以是有效数据集中的 MEL,也可以是 Sambert
python kantts/bin/infer_hifigan.py --ckpt YOUR_CKPT_FILE --input_mel YOUR_TEST_MEL --output_dir OUTPUT_PATH_TO_STORE_WAV
(6)Text to wav 文本转 wav
1)首先,确保拥有训练好的 AM&Voc 模型和配置文件
2)其次,有输入文本的文件。
雅恩雷根斯堡足球俱乐部()是一家位于德国雷根斯堡的足球俱乐部,处于德国足球丙级联赛。
亚历山大·格罗滕迪克于1957年证明了一个深远的推广,现在叫做格罗滕迪克–黎曼–罗赫定理。
...
3)运行以下命令以生成 wav 文件
CUDA_VISIBLE_DEVICES=0 python kantts/bin/text_to_wav.py --txt TEXT_FILE_PATH --output_dir OUTPUT_DIR --res_zip RESOURCE_ZIPFILE_PATH --am_ckpt AM_CKPT_PATH --voc_ckpt VOC_CKPT_PATH --speaker YOUR_SPEAKER_NAME
5.结束
希望可以帮到大家一点!