基于Sambert+HiFi-GAN的语音合成项目部署

1、项目下载地址

modelscope/KAN-TTS: KAN-TTS is a speech-synthesis training framework, please try the demos we have posted at https://modelscope.cn/models?page=1&tasks=text-to-speech (github.com)

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.结束

希望可以帮到大家一点!

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值