Plachtaa / FAcodec

Training code for FAcodec presented in NaturalSpeech3
169 stars 19 forks source link

模型问题咨询 #1

Closed zjc6666 closed 5 months ago

zjc6666 commented 5 months ago

想请教下,您是否已经跑通了代码,并且验证了效果呢? 因为看到好多权重设置跟论文中不一致

Plachtaa commented 5 months ago

是的,已经证明可以实现reconstruction以及voice conversion,和论文中的期望一致

zjc6666 commented 5 months ago

非常感谢您的回复,麻烦请问下您在训练时候batch和句长是设置的多少吗?是您配置文件中10080帧吗,那就是一个batch大概是80s左右是吗?我在复线他们的结果时候,发现我在22g的显存上,只能跑到8 1.5s这样的配置,但实际上,他的论文中说的更加上,一个batch说是可以跑到200s,这个方面有做特殊的优化吗? 方便加个微信吗, 谢谢回复:Zh-JiCheng

Plachtaa commented 5 months ago

image 请参照原文,并没有一个batch200s的说法

zjc6666 commented 5 months ago

16000帧,他的窗长应该是12.5ms, 所以1s应该是80帧,那一个gpu上的长度 16000 * 0.0125ms = 200s 是我理解的有误嘛?

Plachtaa commented 5 months ago

16000frame这里指的是1s,一个GPU是32个1s的clip

zjc6666 commented 5 months ago

好的,非常感谢,我也复线了他的这个论文中的facodec,loss函数配置上可能跟你的略微不同,但是vq loss的值跟你的相差的不较大,我的commit loss 和coodbook loss加一块大概跟下图相似,我是用的是aishell3的数据进行的复线,但是我发现demonstrated的集内效果挺好的,但是集外上的效果就会略差(音色上又一些差距)。在VC方面,感觉content, timbre & prosody能够很好的解偶,vc效果很差 image

Plachtaa commented 5 months ago

我复现的模型vc效果也很差,不过事实上codec只要能做到timbre的解耦就足够了,解耦之后使用content来训练其它vc模型效果也会更好。vc应该只是用来证明解耦是成功的

wwfcnu commented 5 months ago

amphion不是说开源了facodec吗

Plachtaa commented 5 months ago

amphion不是说开源了facodec吗

没有开源训练code

wwfcnu commented 5 months ago

你们觉得这种facodec分解的方法可以往asr模型中接入吗

zjc6666 commented 5 months ago

接入肯定是可以的,facodec分解的目的是为了更好的控制合成,但是asr本身就是一个比较复杂的任务,asr识别肯定不需要耦合朵句话的不同部分,肯定是单句话的,具体怎样迁移到asr上,还是需要进一步想想的

zjc6666 commented 5 months ago

@Plachtaa 顺便请教一下,我看你的模型里,更改了他激活函数的部分,变成了Snake1d(dim), 这样做的目的是啥呢?因为我发现他原先激活函数的很消耗显存,你也是这个目的吗? 还有就是为啥下面部分用到detach的目的你知道吗? image

Plachtaa commented 5 months ago

encoder和decoder我照搬的descript audio codec 如果不detach的话timbre会解耦不出来

zjc6666 commented 5 months ago

非常感谢!!

ruaruaruabick commented 5 months ago

@zjc6666 你训练一个step(G+D)大概要多久, 我现在差不多1s-1.5s,不知道是不是正常的

zjc6666 commented 5 months ago

咱俩的模型结构略有不同,我跟他公开的更像一些,目前一个step大概1.5s-1.7s左右,顺便请教两个问题 1)看你的代码中使用了multi-scale-stft loss, 但是在好像并没有加入到g或者d loss中,仅仅只是计算了,并没有实际使用 2)你有使用较多说话人的数据进行训练吗,比如说十几万或更多说话人,vc效果怎么样呢?我使用了较多说话人训练后,发现spk的loss就比较难以收敛了,并且res coodbook好像还是会包含比较多的source说话人信息,不知道你那边实验情况怎么样?

ruaruaruabick commented 5 months ago

@zjc6666 我是自己复现的,没有使用这个repo的代码 1) 我的ms stft loss是放在了g中 2) 我是在开源v2模型上做的ft,因为我用开源模型测试过vc的效果,除了音色解耦是比较好的,我个人认为prosody content 和res在code层面并没有特别好的解耦开.我现在用了几百个说话人,目前还没完全收敛.

zjc6666 commented 5 months ago

明白了,非常感谢!!

ruaruaruabick commented 5 months ago

@Plachtaa 顺便请教一下,我看你的模型里,更改了他激活函数的部分,变成了Snake1d(dim), 这样做的目的是啥呢?因为我发现他原先激活函数的很消耗显存,你也是这个目的吗? 还有就是为啥下面部分用到detach的目的你知道吗? image

@Plachtaa @zjc6666 再次请教一下关于detach的理解,在训练时这里detach后z_p和z_c就不通过最终的音频重建任务来学习了,zp通过f0和grl phone任务来学习,z_c通过phone和grl f0任务来学习,此外z_d通过grl phone、grl f0和音频重建任务学习,音色通过说话人分类和音频重建任务来学习.不知这么理解是否正确?

zjc6666 commented 5 months ago

是的,我觉得也是这样的,我认为这样能够使的前面prosody和content能够解偶的效果更好,因为原论文中下一步会利用prosody、content、res的coodbook结果作为groundtruth训练diffusion model,推理时,将diffusion model的结果直接送到decoder中,就不会在经过前面的fcodec了