0. 说明
不同于speaker encoder的版本, 这个是one-hot版本
特性有
- 好训练
- 作者也推荐
1. 思路
为了和speaker encoder版本对应上, 只使用VCTK切分的seen的speaker训练
测试的时候, 只能够seen的speaker转seen-speaker
具体小方案为:
- 输出改为0, 1, 2, 3,4, 5....
- 使用seen_unseen.txt的行数-1来当作字典的值
代码, 略
2. 实验设置
2.1. 论文参数-版
默认版本, 名字叫AutoVC_one_hot, 严格按照论文参数
- dataloader随机取192, 3s
- 32降采样, 192 -> 6
- lstm 32 + 32
- 说话人 256
- 没有norm speaker, norm lstm, one-hot向量没有经过能量限制
- 剩下的都是512, 固定
- bs=64, 我自己定的
2.2. mywide-版
- dataloader随机取192, 3s
- 8降采样, 192 -> 24(论文的wide)
- lstm 256 + 256
- 说话人 256
- 没有norm speaker, norm lstm, one-hot向量没有经过能量限制
- 剩下的都是512, 固定
- λ保留=1
- bs=64, 随便定的
2.3. mywide_nolamda-版
目前还不懂lamda的具体影响
- dataloader随机取192, 3s
- 8降采样, 192 -> 24(论文的wide)
- lstm 256 + 256
- 说话人 256
- 没有norm speaker, norm lstm, one-hot向量没有经过能量限制
- 剩下的都是512, 固定
- λ=0
- bs=64, 我自己定的
2.4. ls-版
同事能跑出来声音的版本
- 声学参数不同
- dataloader随机取192, 3s 不同
- 16降采样
- lstm 16 + 16
- 说话人 128
- 没有norm speaker, norm lstm, one-hot向量没有经过能量限制
- 剩下的都是512, 固定
- λ保留=1
- bs=64, 我自己定的
3. 实验结果
音频 |source speaker |target speaker
p227/p227_009.npy|p227|p227
p227/p227_009.npy|p227|p228
p227/p227_013.npy|p227|p227
p227/p227_013.npy|p227|p228
p228/p228_077.npy|p228|p228
p228/p228_077.npy|p228|p227
p228/p228_091.npy|p228|p228
p228/p228_091.npy|p228|p227
p312/p312_106.npy|p312|p339
p339/p339_421.npy|p339|p312
p345/p345_062.npy|p345|p335
p288/p288_268.npy|p288|p282
3.1. 论文参数-版
3.1.1. 训练loss
总结:
- loss_id代表rec_mel, 0.03误差, 太大
- 训练过程抖动严重, 尤其是loss_cd, 代表着content
3.1.2. 音频
总结
- 重构音频啥也听不出来
- 转换音频啥也听不出来
- 所有stop点的ckpt都没效果
3.2. mywide-版
3.2.1. 训练loss
总结:
- loss_id代表rec_mel, 0.001作者说是0.0001, 差一点点
- 训练过程比较稳定
- content的loss非常小, 4e-5级别
3.2.2. 音频
略
总结:
- 有的人好, 有的人不好
- 能转还是很神奇的, bottleneck+λ就可以VC
- 只保留λ, 看看能不能VC
3.3. mywide_nolamda-版
TODO...
3.4. ls-版
TODO...
3.5. 只λ版
4. 对比别人复现
https://speech-ai.github.io/gazev/