Chapter2-2_Voice Conversion(CycleGAN and StarGAN)

本文为李弘毅老师【Voice Conversion - CycleGAN and StarGAN】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。

下文中用到的图片均来自于李宏毅老师的PPT,若有侵权,必定删除。

文章索引:

上篇 - 2-1 Feature Disentangle

下篇 - 3-1 Deep Clustering, PIT

总目录

1 内容简述

上一篇主要讲了我们在没有多个说话人说同一句话这样的数据集的情况下,用feature disentangle来做voice conversion。这篇来讲一下另一种direct transformation,也就只直接转换的意思,不用像上一篇那样要考虑content和speaker。而用到的方法就是图像中的CycleGAN和StarGAN。
ch2-2-1

2 CycleGAN

假设我们现在有一堆李老师的音频,又有一堆新垣结衣的音频。我们希望李老师在给我们上课的时候,听到的是新垣结衣的声音。于是,我们就需要一个 G X → Y G_{X \rightarrow Y} GXY来输入李老师的声音,吐出新垣结衣的声音。然还需要一个 D Y D_Y DY来判断输出的声音是不是新垣结衣说的。但是,这样,我们并无法保证 G X → Y G_{X \rightarrow Y} GXY出来的声音的内容是保持一致的,也许所有的 X X X进来,都变成了同一个 Y Y Y,这样也可以骗过 D Y D_Y DY

所以,我们需要cycle。
ch2-2-2
所谓的cycle就是说,我们现在有四个网络 G X → Y G_{X \rightarrow Y} GXY G Y → X G_{Y \rightarrow X} GYX D X D_X DX D Y D_Y DY,然后把speaker X说的话塞进 G X → Y G_{X \rightarrow Y} GXY之后,它会吐出一个 Y ^ \hat{Y} Y^,我们会把$ Y ^ \hat{Y} Y^塞进 D Y D_Y DY中,企图骗过 D Y D_Y DY,让 D Y D_Y DY认为这个是真的 Y Y Y。同时,我们也会把 Y ^ \hat{Y} Y^塞进 G Y → X G_{Y \rightarrow X} GYX当中,输出 X ^ \hat{X} X^,希望 X X X X ^ \hat{X} X^越接近越好。这就是下图中上半部分的过程,下班过程也是如是,这里不赘述了。
ch2-2-3

这里还有一个训练时的技巧就是,我们也会把 Y Y Y塞进 G X → Y G_{X \rightarrow Y} GXY当中,希望它吐出的 Y ^ \hat{Y} Y^ Y Y Y是一致的。

3 StarGAN

通过上文的叙述不难推测出,CycleGAN只能把X的声音转成Y的声音,或者把Y的声音转成X的声音,如果我们要有一个Z的话,这个方法就不灵了。理论上来说,如果有 n n n个speaker的话,就需要 n ( n − 1 ) n(n-1) n(n1)个generator。那这种方法显然在实际场景中是不适用的。为了解决这个问题,就需要StarGAN。

StarGAN是CycleGAN的进阶版。如下图所示,StarGAN的generator(G)和Discriminator(D)都会多一个代表着是哪个speaker的输入。这个speaker的输入可以认为和feature disentangle中的speaker encoder的输出是一致的。
ch2-2-4
然后整个StarGAN的框架如下图的下半部分所示,上半部分是CycleGAN,放在一起方便做一个直观的比较。可以看出,本质上就是多了一个表示speaker信息的输入而已,但却一下子可以转换成任意一个speaker的声音了。
ch2-2-5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七元权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值