liusongxiang / StarGAN-Voice-Conversion

This is a pytorch implementation of the paper: StarGAN-VC: Non-parallel many-to-many voice conversion with star generative adversarial networks
https://arxiv.org/abs/1806.02169
513 stars 93 forks source link

model is not stargan-vc #2

Closed hujinsen closed 5 years ago

hujinsen commented 6 years ago

hi, (中文熟悉些😆)貌似模型是cyclegan-vc改的,并不是stargan-vc的模型,不知转换结果怎么样呢?

liusongxiang commented 5 years ago

你好,stargan跟cyclegan的整体框架是差不多的,但是这份代码里确实用的是stargan,而且代码很多参考了stargan原始论文放出的代码。我没有仔细调参,初步试验转换结果还行。谢谢!

hujinsen commented 5 years ago

你好,模型是基于stargan的,但不是stargan-vc论文里的模型结构,这个论文你有了解吗,我看你在生成器和判别器最后一层都加了分类器,是什么作用?

liusongxiang commented 5 years ago

stargan-vc 里面用一个Discriminator和一个Classifier,这里实现的也有一个Discriminator和一个Classifier,只是我让他们共享大部分参数,只有在靠近输出端才分出两支来。 看model.py的78、79行

self.conv_dis = nn.Conv2d(curr_dim, 1, kernel_size=(kernel_size_0, kernel_size_1), stride=1, padding=0, bias=False) # padding should be 0
self.conv_clf_spks = nn.Conv2d(curr_dim, num_speakers, kernel_size=(kernel_size_0, kernel_size_1), stride=1, padding=0, bias=False)  # for num_speaker

self.conv_dis这个是输出Real/Fake。 self.conv_clf_spks这个是分类用的,它的输出维度是num_speakers。 当然你也可以跟stargan-vc原paper一样,不共享参数。 生成器后面没有加分类器。

hujinsen commented 5 years ago

恩,分类器共享判别器的参数了,不知单独设置分类器和共享判别器参数的分类器对模型的影响如何。 最好能够放一些转换后的样本上来听一下。

liusongxiang commented 5 years ago

Hello,你好,我已经star了~

hujinsen commented 5 years ago

感谢感谢!希望以后多多交流!

marianasignal commented 3 years ago

stargan-vc 里面用一个Discriminator和一个Classifier,这里实现的也有一个Discriminator和一个Classifier,只是我让他们共享大部分参数,只有在靠近输出端才分出两支来。 看model.py的78、79行

self.conv_dis = nn.Conv2d(curr_dim, 1, kernel_size=(kernel_size_0, kernel_size_1), stride=1, padding=0, bias=False) # padding should be 0
self.conv_clf_spks = nn.Conv2d(curr_dim, num_speakers, kernel_size=(kernel_size_0, kernel_size_1), stride=1, padding=0, bias=False)  # for num_speaker

self.conv_dis这个是输出Real/Fake。 self.conv_clf_spks这个是分类用的,它的输出维度是num_speakers。 当然你也可以跟stargan-vc原paper一样,不共享参数。 生成器后面没有加分类器。

请问,加分类器C为什么可以优化D和G?就是多考虑了一种损失吗