小白能看懂等Tacotron 中文语音合成实践

简介

参考博客1: 基于Tacotron汉语语音合成的开源实践

参考博客2:Tacotron中文语音合成

通过调研发现,针对TTS的开源项目主要是针对英文的。而中文方面资料相对较少。上面两个为本项目的主要参考,已有的信息就不进行重复了,同时感谢乐于分享的两位博主。

使用谷歌提出的Tacotron模型,进行真正端到端的TTS系统。以下是从头实现的步骤以及踩过的坑,正所谓前人栽树后人乘凉。

操作步骤

step1 源码下载

下载源码 https://github.com/begeekmyfriend/tacotron/tree/mandarin

注意分支选择,选择mandarin分支,而不是默认的master分支。

命令行

git clone https://github.com/begeekmyfriend/tacotron.git

该分支下datasets 目录中有对清华数据集thchs30.py的处理

step2 下载数据集

数据集下载链接https://blog.ailemon.me/2018/11/21/free-open-source-chinese-speech-datasets/

下载 THCHS30 数据集(6.4G)

数据集结构如下 

data/A2_0.wav 是音频文件

data/A2_0.wav.trn是音频文件对应的文本和拼音,如下图所示:

将数据集解压至项目的根目录下,如有不理解可参考最上面的博客。

step3 代码修改

tacotron/datasets/thchs30.py 第29行 biaobei_48000 改data 第34行 wav_file = trn[:-4] + '.wav' 把+ '.wav'注释掉

同样是参考博客中的评论。

step4 环境部署,软硬件

需要tensorflow >1.3 , 个人实验要tensorflow1.9。tensorflow2.0跑不起来

python3.6

推荐使用anaconda安装https://www.jianshu.com/p/e298b9d3afae

显存8G是足够的,如果不够可以参考https://github.com/keithito/tacotron/issues/270解决办法

将banch_size 改成16

数据和模型存储共需要150G。

step5 代码运行

1. 数据预处理

python3 preprocess.py --dataset thchs30

2.数据集训练

nohup python3 -u train.py --name thchs30 > output.out &

 

由于训练时间较长nohup保证进程不终止

output.out  表示输出重定向到output.out 

&表示程序后台运行

-u 表示输出不经过缓存直接保存在output.out中

然后输入exit退出终端,程序后台运行

后续

当loss在0.69时,loss不再下降,估计是batchsize小了,设置的是16,由于数据集影响,最好的音质也有瓶颈,因此放弃了训练。可以参考以下链接的项目,真的很赞。


使用清华数据集训练的模型终究有效果瓶颈,因为数据集本身就有噪声。因此需要更加干净的数据集进行训练。

Tacotron2的中文语音合成项目https://github.com/JasonWei512/Tacotron-2-Chinese采用的是标贝科技的数据集训练的,试听效果理想很多。

 

 

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值