Tacotron2(NVIDIA版)中文训练笔记
Tacotron2项目地址:https://github.com/NVIDIA/tacotron2
Tacotron2英文训练笔记:https://blog.csdn.net/qq_44951010/article/details/124828260
从科大讯飞爬取音频数据:https://blog.csdn.net/qq_44951010/article/details/124829630
步骤
-
下载项目或通过
git clone https://github.com/NVIDIA/tacotron2.git
拉取项目 -
准备数据,可以用开源的中文数据集,也可以自己制造,自己制造过程如下:
-
准备中文文本(我直接提取了标贝数据集的中文),放在一个txt文件中,格式如下:
卡尔普陪外孙玩滑梯 假语村言别再拥抱我 宝马配挂跛骡鞍貂蝉怨枕董翁榻 邓小平与撒切尔会晤 老虎幼崽与宠物犬玩耍 身长约五尺二寸五分或以上 ...
-
通过爬虫从科大讯飞爬取文本对应的音频,详见从科大讯飞爬取音频数据
-
将音频转换为.wav格式,需要安装ffmpeg并添加到环境变量,代码参考:
# -*- coding: utf-8 -*- from ffmpy import FFmpeg as mpy import os def trans(mp3_file, wav_folder): # 创建 wav 文件路径 wav_file = os.path.join(wav_folder) wav_file = os.path.join(wav_file, '{}.wav'.format(os.path.basename(mp3_file).strip().split('.')[0])) # 创建转换时的命令行参数字符串 cmder = '-f wav -ac 1 -ar 16000' # 创建转换器对象 mpy_obj = mpy( inputs = { mp3_file: None }, outputs = { wav_file: cmder } ) print('执行cmder命令: {}'.format(mpy_obj.cmd)) # 执行转换 mpy_obj.run() def mp3_to_wav(mp3_folder, wav_folder): for mp3_file in os.listdir(mp3_folder): mp3_file = os.path.join(mp3_folder, mp3_file) trans(mp3_file, wav_folder) if __name__ == '__main__': mp3_to_wav('mp3文件夹', 'wav文件夹')
-
通过lazy_pinyin模块生成中文文本对应的拼音,代码示例:
from pypinyin import lazy_pinyin, Style text = "我好菜啊" text = " ".join(lazy_pinyin(text, style=Style.TONE3)) print(text)
-
-
得到中文文本的应的音频和拼音后,建它们的关系,即需要生成filelists目录下的三个文件,格式如下:
-
打开hparams.py文件,将samling_rate(采样率)改为16000,然后就可以开始训练了