目前在深度学习中生成模型最火的莫非就是扩散模型(Diffusion),其风头更是盖过了前几年最火的GAN,那么两者的结合则是很容易想到的一个创新点,在图像领域首先被提出,这不语音就拿来直接用了,扩散模型融合了GAN的思想,同时采用浅扩散机制加速,直接来看一下架构。
论文:https://arxiv.org/pdf/2201.11972.pdf
代码:https://github.com/keonlee9420/DiffGAN-TTS
代码bug很多,踩坑记录
环境:torch 1.12 数据集:LJSpeech
1 首先在request安装包时,numba版本为0.56,librosa版本为0.80以上,否则会报错
2 在config中配置数据集所在路径
3 以参数–dataset LJSpeech运行 prepare_alien.py
4 以参数 --dataset LJSpeech 运行 preprocess.py 预处理文件,这里大概率会有个报错:
nboundLocalError: local variable ‘f0’ referenced before assignment,但有的环境没这个报错,
重新跑一遍prepare_alien,若还没用直接下载作者提供数据集的TextGrid就好了
5 以参数 --model naive --dataset LJSpeech 就可以开始训练了,这里model分为两种训练模式,
详细说明在代码的readme中有。大概200k次训练后就有一个好的结果了,在训练时同样会有个报错:
AttributeError: ‘GaussianDiffusion’ object has no attribute ‘cond’
在原始的batchsize下两种训练模式都遇到了,问题代码出在validation的阶段,一个简单的办法就是直接
跳过该阶段,但调小batchsize后竟然没遇到这个报错。
这里拿笔记本简单跑了一下结果: