PaddleSpeech tts语音合成模型训练

1周前 (09-04)学习58

语音合成是指在基础模型上训练自己独有的文本朗读语音。我是在paddlespeech的fastspeech2_aishell3的基础上进行训练。

git地址

paddlespeech的安装及使用请看我之前的文章

ubuntu下安装paddlespeech

通过paddlespeech和ollama搭建本地语音问答助手

以下是具体的训练步骤

一、准备预训练模型

进入到tt3目录,在源码梗目录操作

cd examples/other/tts_finetune/tts3

创建模型存放目录

mkdir -p pretrained_models && cd pretrained_models

我训练的中文语音,需要下载基于AISHELL-3的Fastspeech2预训练模型文件

# pretrained fastspeech2 model
wget https://paddlespeech.cdn.bcebos.com/Parakeet/released_models/fastspeech2/fastspeech2_aishell3_ckpt_1.1.0.zip 
unzip fastspeech2_aishell3_ckpt_1.1.0.zip

# pretrained hifigan model
wget https://paddlespeech.cdn.bcebos.com/Parakeet/released_models/hifigan/hifigan_aishell3_ckpt_0.2.0.zip
unzip hifigan_aishell3_ckpt_0.2.0.zip

执行完后回到上级目录

cd ..

 

二、安装MFA 工具及相关模型

MFA 是一款开源的语音对齐工具,在 TTS 训练中主要用于获取音素与语音的时间对齐关系,具体作用包括:

音素级时间对齐:将语音波形(音频)与对应的文本音素序列进行精确匹配,确定每个音素在音频中开始和结束的时间戳。例如,将 “你好” 的拼音 “nǐ hǎo” 对应的音素,与实际发音的音频片段精确对齐。
生成对齐标注文件:通过 MFA 处理后,会生成包含音素、时长等信息的标注文件(如.TextGrid格式),这些信息是 TTS 模型(尤其是基于隐马尔可夫模型 HMM 或端到端模型如 Tacotron)训练的核心输入之一。
提升合成自然度:准确的音素时长信息能帮助模型学习到更自然的韵律(如停顿、语速变化),避免合成语音出现节奏生硬或音素拼接不连贯的问题。

创建目录

mkdir -p tools && cd tools

下载并解压模型

wget https://github.com/MontrealCorpusTools/Montreal-Forced-Aligner/releases/download/v1.0.1/montreal-forced-aligner_linux.tar.gz
tar xvf montreal-forced-aligner_linux.tar.gz

复制库文件

cp montreal-forced-aligner/lib/libpython3.6m.so.1.0 montreal-forced-aligner/lib/libpython3.6m.so

创建模型目录

mkdir -p aligner && cd aligner

下载解压带有aishell3的预训练MFA模型

wget https://paddlespeech.cdn.bcebos.com/MFA/ernie_sat/aishell3_model.zip
unzip aishell3_model.zip
wget https://paddlespeech.cdn.bcebos.com/MFA/AISHELL-3/with_tone/simple.lexicon

回答tt3目录

cd ../../

 

三、准备数据

数据存放到input 目录下

mkdir -p input && cd input

需要用到两类数据,一个是音频wav文件,一个是带声调的拼音txt文件,数据文件夹结构如下

labels.txt内容如下

前面是音频文件的文件名,|分隔后面的是音频对应的朗读拼音

以下是官方提供的测试数据,下载并解压

wget https://paddlespeech.cdn.bcebos.com/datasets/csmsc_mini.zip
unzip csmsc_mini.zip

可以在模搭社区或者其他网站找自己喜欢的语音数据进行训练

回到tt3目录

cd ../

以上三步完成后在tt3目录下可以看到以下目录结构

├── input
│   ├── csmsc_mini
│   │   ├── 000001.wav
│   │   ├── 000002.wav
│   │   ├── 000003.wav
│   │   ├── ...
│   │   ├── 000200.wav
│   │   ├── labels.txt
│   └── csmsc_mini.zip
├── pretrained_models
│   ├── fastspeech2_aishell3_ckpt_1.1.0
│   │   ├── default.yaml
│   │   ├── energy_stats.npy
│   │   ├── phone_id_map.txt
│   │   ├── pitch_stats.npy
│   │   ├── snapshot_iter_96400.pdz
│   │   ├── speaker_id_map.txt
│   │   └── speech_stats.npy
│   ├── fastspeech2_aishell3_ckpt_1.1.0.zip
│   ├── hifigan_aishell3_ckpt_0.2.0    
│   │   ├── default.yaml
│   │   ├── feats_stats.npy
│   │   └── snapshot_iter_2500000.pdz
│   └── hifigan_aishell3_ckpt_0.2.0.zip
└── tools
    ├── aligner
    │   ├── aishell3_model
    │   ├── aishell3_model.zip
    │   └── simple.lexicon
    ├── montreal-forced-aligner
    │   ├── bin
    │   ├── lib
    │   └── pretrained_models
    └── montreal-forced-aligner_linux.tar.gz
    ...

 

四、修改配置文件

配置文件主要有两个

一个是conf下的finetune.yaml,主要用于修改训练数据的配置

另一个是 run.sh 脚本文件,用于配置训练每个阶段的参数

 

五、开始训练

在tt3目录下运行以下命令

./run.sh

如果没报错的话可以看到以下训练日志

等待训练完就可以使用了。

扫描二维码推送至手机访问。

版权声明:本文由星光下的赶路人发布,如需转载请注明出处。

本文链接:https://forstyle.cc/zblog/post/91.html

分享给朋友: