WaveNet原理和代码分析

    之前一直在computer vision方向的研究,现在换成语音方向,这段时间一直在看WaveNet,花了好长时间才把原理和代码看懂,记录一下,以防后期遗忘吧。先给链接:WaveNet的论文链接代码链接官方博客链接

    WaveNet是一个端到端的TTS(text to speech)模型。它是一个生成模型,类似于早期的pixel RNN和Pixel CNN,声音元素是一个点一个点生成的。在WaveNet中最重要的概念就是带洞因果卷积(dialated causal convolutions)了。

    首先说一下因果卷积(causal convolution)。 要想理解因果卷积,首先要理解因果性的概念,这里可以借鉴因果系统的概念,因果系统是指当且仅当输入信号激励系统时,才会出现输出响应的系统。即因果系统的响应不会出现在输入信号激励系统以前;也就是说因果系统的输出仅与当前与过去的输入有关,而与将来的输入无关的系统。因果卷积的意义就是WaveNet在生成t时刻的元素时,只能使用0到t-1时刻的元素值。如下图所示,在WaveNet中利用,output输出只利用了之前的元素来生成。


    由于声音文件是时间上的一维数组,16KHz的采样率的文件,每秒钟就会有16000个元素,而上面所说的因果卷积的感受野非常小,即使堆叠很多层也只能使用到很少的数据来生成t时刻的的元素,为了扩大卷积的感受野,WaveNet采用了堆叠了(stack)多层带洞(dilated )卷积来增到网络的感受野,使得网络生成下一个元素的时候,能够使用更多之前的元素数值。带洞卷积如下图所示:


    整个生成过程的动态图如下,


        WaveNet的生成原理挺好理解,但是代码实现部分比较难以阅读,尤其是因果卷积的实现,采用了很多小技巧,需要仔细阅读。下面就官方的开源代码进行梳理。


  • 6
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值