越南语文本转语音系统
🔔 注意:本项目已停止更新。请参考新项目 LightSpeed,其中包含一个新的男声。
越南语文本转语音应用的持续时间模型 + 声学模型 + HiFiGAN声码器。
在线演示:https://huggingface.co/spaces/ntt123/vietTTS
合成音频片段:clip.wav。Colab笔记本:notebook。
查看实验性的multi-speaker
分支(git checkout multi-speaker
)以获得多说话人支持。
安装
git clone https://github.com/NTT123/vietTTS.git
cd vietTTS
pip3 install -e .
使用预训练模型快速开始
bash ./scripts/quick_start.sh
下载InfoRe数据集
python ./scripts/download_aligned_infore_dataset.py
注意:这是原始数据集的降噪和对齐版本,原始数据集由InfoRe Technology公司捐赠(参见此处)。您可以在这里下载原始数据集(InfoRe Technology 1)。
有关如何对数据集进行降噪的说明,请参见notebooks/denoise_infore_dataset.ipynb
。我们使用Montreal Forced Aligner (MFA)来对齐文本和语音(textgrid文件)。
有关如何创建textgrid文件的说明,请参见notebooks/align_text_audio_infore_mfa.ipynb
。
训练持续时间模型
python -m vietTTS.nat.duration_trainer
训练声学模型
python -m vietTTS.nat.acoustic_trainer
训练HiFiGAN声码器
我们使用HiFiGAN作者的原始实现,地址为https://github.com/jik876/hifi-gan。使用`assets/hifigan/config.json`中的配置文件来训练您的模型。
git clone https://github.com/jik876/hifi-gan.git
# 创建hifi-gan格式的数据集
ln -sf `pwd`/train_data hifi-gan/data
cd hifi-gan/data
ls -1 *.TextGrid | sed -e 's/\.TextGrid$//' > files.txt
cd ..
head -n 100 data/files.txt > val_files.txt
tail -n +101 data/files.txt > train_files.txt
rm data/files.txt
# 训练
python train.py \
--config ../assets/hifigan/config.json \
--input_wavs_dir=data \
--input_training_file=train_files.txt \
--input_validation_file=val_files.txt
在真实对齐的梅尔频谱图上微调:
cd /path/to/vietTTS # 进入vietTTS目录
python -m vietTTS.nat.zero_silence_segments -o train_data # 将所有[sil, sp, spn]段置零
python -m vietTTS.nat.gta -o /path/to/hifi-gan/ft_dataset # 在hifi-gan/ft_dataset目录创建gta梅尔频谱图
# 开始微调
cd /path/to/hifi-gan
python train.py \
--fine_tuning True \
--config ../assets/hifigan/config.json \
--input_wavs_dir=data \
--input_training_file=train_files.txt \
--input_validation_file=val_files.txt
然后,使用以下命令将PyTorch模型转换为Haiku格式:
cd ..
python -m vietTTS.hifigan.convert_torch_model_to_haiku \
--config-file=assets/hifigan/config.json \
--checkpoint-file=hifi-gan/cp_hifigan/g_[latest_checkpoint]
合成语音
python -m vietTTS.synthesizer \
--lexicon-file=train_data/lexicon.txt \
--text="hôm qua em tới trường" \
--output=clip.wav