1206工作进度:
- 很多论文 ——看了
- 很多代码 ——看了、改了、写了
- 很多想法 ——可行与否缺乏交流
- 🌟没有机器 ——用单位机器被 Kill 被批评
- 初步想法——在stargan-vc2基础上改进,侧重点还是 少数据量 && 快速
- 用 PGAN + Mel 处理,Embedding 部分调用 AiShell (还是得咱们自己重训,特征处理方式和PGAN不一样)(Mel 归一化方式不同)
- 另外引入 “ Speaker Embedding”循环损失,提升说话人相似度
- 最后再引入 洪丰 的“相对损失”来替代MSE,看效果提升度
- Speaker Embedding 尺寸 256
- PGAN 尺寸 80 mel
- StarGAN 网络结构也得跟着改动了,为了迎合 两者输入特征尺寸
PPG 路线:没有机器训,就在 Deep_voice_conversion 基础上改
但是不知是论文读的少还是什么原因:
所有 PPG –> Mel 环节,都是用的自身转自身(就是只能单一目标人转换)
🌟如果加 speaker embedding 的思路来做多目标人,那是不是就只能用 GAN 来做?
(这条路线真的好复杂,想训 Kaldi-librispeech 来学做 ppg 提取,完全训不起来,cpu占用太高了)
(有 fac-via-ppg 项目,做的口音转换,用的pykaldi,但是没法引入 VC)
guanlongzhao/fac-via-ppg
- 这个任务,实现了用PyKaldi提取PPGs信息(可套来用)、PPGs 转 Mel(咱们做的是口音转换,看怎么通过改 Loss 成语音转换)、WavaGlow后端(有预训练的模型,256维度?)
- 这个的训练需要自己手动整理 file list,等我整理一下,自己训一下看成不成功,应该问题好解决
- 准备用aishell3 数据集试试中文提取ppg效果
sos1sos2Sixteen/aishell-3-baseline-fc
从❤️ 这里 抄的,原本是做的英文,改成中文
这个AiShell3 的多说话人合成任务,实质是 Fork 自另一份caizexin/tf_multispeakerTTS_fc
不得不说,文档真的很差,看不清,折腾好几天起不来
🌟问题:
- 数据的放置位置,处理顺序全都没讲
- 给的预训练模型都是另一份英文的,并没有任何体现中文aishell3的存在感的地方
- 尝试直接跑 预训练模型,起不来,代码有问题!真的是代码有问题,传参时缺参数,一时半会不知怎么加上去,改了N多代码还是不行
- 不得不说,Tensorflow 问题真的比Torch多多了!
🌟最新进展:demo .ipynb 跑通了!:
将 wavernn 代码 vocoder/models/fatchord_version.py 中所有 .cuda() 注释掉
将三个 ckpt 文件放入对应文件夹:
- pertained/tacotron_ckpt
- tf_multispeaker/vocoder/saved_models/aishell/aishell_ssb.pt
- ❤️这里的aishell/aishell_ssb.pt手动改名就行
注释掉【51】:
1
2# def mel2audio(mel) :
# return np.random.randn(14000)[None]display 函数是jupter notebook环境下的一个函数接口:
-
文本送进去的是音素,所以生成语音需要的是音素信息,这个转换不用管,【可以用声韵母训练,用pypinyin做标注,或者找对应的音素字典就好】
说话人 embedding 这里aishell3 采用的是 ,先用预训练的 speaker encoder 提前提取所有语音embeddinmg,然后碎每个人的embedding做一个均值处理;而且这里demo提供的 embedding提取,是已经准备好的;
在原版的代码中,这里是需要手工提取的,这个回头是我钻研的重点,看怎么准备数据和文本,然后训起来再说;
fatchord/WaveRNN
- 这个非常清楚,代码写的很工整
- 主要特色就是他的 WaveRNN声码器 + tacotron 前端(更改了 attention 部分机制)
- 目前在训练 taco前段部分,用的是 LjSpeech
CorentinJ/Real-Time-Voice-Cloning
- 这份是比较经典的多说话人合成任务,里面有 Speaker Encoder,还没跑,有参考价值