本文作者:23568Noct-Cp
本文分类:软件安装 浏览:2354
阅读时间:2444字, 约2.5-4分钟
相信不少人都看了上一次的入门级教程
然后发现:这克隆出来的还不如直接拿微软语音合成呢
那么,个性化语音教程来咯
今天着重讲的是如何训练特定人的合成器
这个有点复杂
我呢就给大家讲讲怎么克隆老师的声音
1、下载软件
就直接下载代即可
还需要一个字母生成软件
如果您有阿里云的话可以videosrt(github/gitee开源)
没有的话剪映或者网易见外都可以
2、制作数据集
首先您需要有特定人的录音(录在少量大文件里方便识别字幕,wav格式,最好有500+句长句)
然后使用字母识别软件(videosrt/网易见外/剪映)识别字幕,导出为srt
下载sound_file_processing,直接下载源码解压
进入sound_file_processing的文件夹,将wav拷进wav/input,将srt拷进srt文件夹(注意把原来的示例文件删掉)
在地址栏(或者使用cmd进入)中输入python long_file_cut_by_srt.py,回车
在询问短音频处理方式时输入2
如果报错,可能是哪个文件没有新建成功,像我就在transcript文件夹中手动新建了一个transcript_short.txt
请注意:
如果你的录音时长单文件大于1个小时,请先用格式工厂之类的分割一下(一个文件至少小于1个小时),不然会分割出一些44字节的东西,然后报错
然后就是比较无聊的一步:
打开transcript/transcript.txt
核对字幕,将所有字幕使用汉字或者拼音(比如“Snow”就可以叫做si5 nou4,5表示轻声)
(有出现英语单词的就放弃了吧,还有别想打transcript_short的主意,预处理的时候会被过滤掉的)
然后进入数据集的文件夹
还记得上次建的aidatatang_200zh文件夹吗?
进入,新建(或打开)corpus,新建train,把sound_file_processing中的wav/output文件夹整个拷进来,随便改个名字(比如改成演讲者的名字)
回到aidatatang_200zh的文件夹,新建文件夹transcript,在当中新建aidatatang_200_zh_transcript.txt,把修改过的transcript.txt的内容复制进来
3、预处理
然后,进入mockingbird的目录,在地址栏输入:python pre.py <datasets_root> -n <numbers>
注:datasets_root指aidatatang_200zh所在的目录,如我的就是D:\dataset\Snow
<numbers>指CPU并行数,实测没啥用
然后我们进入datasets_root,可以看见出现了一个SV2TTS文件夹
里面有一个synthesizer文件夹
4、改代码
首先打开synthesizer_train.py
有这样一行:
parser.add_argument("-s", "--save_every", type=int, default=1000, help= \
这是表示训练多少步保存一次,可以改小一点,像我改成了60
打开synthesizer/hparams.py
有这样一段:
tts_schedule = [(2, 1e-3, 10_000, 12), # Progressive training schedule
(2, 5e-4, 15_000, 12), # (r, lr, step, batch_size)
(2, 2e-4, 20_000, 12), # (r, lr, step, batch_size)
(2, 1e-4, 30_000, 12), #
(2, 5e-5, 40_000, 12), #
(2, 1e-5, 60_000, 12), #
(2, 5e-6, 160_000, 12), # r = reduction factor (# of mel frames
(2, 3e-6, 320_000, 12), # synthesized for each decoder iteration)
(2, 1e-6, 640_000, 12)], # lr = learning rate
解释一下:
第一个我也不太清楚,但改了会报错
第二个是learning_rate,有什么算法,我不太清楚,总之基本不动
第三个是指步数,相当于定义域
第四个是指batch_size,即训练一步所抓取的示例数量,可以改大一点(每个都要改),我改成了24(有GPU加速的48乃至96都行)
5、训练模型
注:我发现在wsl里面练得比较快……不知为何
进入文件夹,在cmd中输入python synthesizer_train.py <name> <datasets_root>/SV2TTS/synthesizer
比如我的是python synthesizer_train.py Snow D:\dataset\Snow\SV2TTS\synthesizer
回车开练
6、按照作者进度进行训练(可选)
当你数据集较小,可选择按照作者进度训练
在运行一段时间,看到开始训练(即跳出来一行{Steps:|loss:| steps/s|}时)
进入synthesizer/saved_models/<name>中,把那个<name>.pt删了
把之前下好的pretrained-11-7-21_75k.pt拷进来,改名字,改成<name>.pt(如我的Snow.pt)
再次执行python synthesizer_train.py <name> <datasets_root>/SV2TTS/synthesizer
第一次可能报错,再次运行
7、停止训练
每500下会生成attention和loss图像,在synthesizer/saved_models/<name>/plots里面
attention如图,要是对角线走向
loss在0.4一下就基本可以用了
需要注意,并不是练得越久越好,如果loss反升,很可能已经过拟合,请立刻停止!
项目作者的知乎专栏,不定期收录炼丹心得:点我进入
就这些,大家谨慎使用~
关于作者23568Noct-Cp
- 一个当之无愧的菜鸡
- Email: syc071122@163.com
- 注册于: 2020-04-17 07:22:11
0.019 step/s,我没救了
@23 786 您batchsize多少啊
@23 786 建议是买张卡捏 mac能接显卡坞的